Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How Can I Find a Mentor?
104 points by kremlin on May 4, 2014 | hide | past | favorite | 49 comments
There was an HN thread a few months back about autodidactic programmers, and many people said that one of the most important things for a developing programmer is to have a good mentor.

I think I'd really like a mentor.

Some things about me: I've been coding for maybe a year, but I have a full time job so progress is not going as fast as maybe I'd like it to.

I've been doing Python (a very small amount of C# as well). I've read an intro book, and now I'm reading a book that goes into more depth with OO. I've solved the first 51 Project Euler problems, many of them with relatively elegant algorithms. I have a love for elegant algorithms.

I'm not sure what to do next. Build a Django app? Learn Java and build an Android app? Learn Haskell? Learn C? Something else entirely?

I'm not locked into any particular field of programming yet - it all interests me.

If anyone feels like they would get any benefit out of mentoring someone like me, looking at my code and giving me pointers, giving me advice about what's wise to learn, I'd really appreciate it.




I saw your post and it made me think of my own experience in desiring to grow spiritually. I come from an evangelical Christian background and for those unfamiliar with this sub-culture there's a saying that "everyone should have a Paul, a Barnabas, and a Timothy."

What this means is that, if you're serious about your personal spiritual development, you need three things:

* a mentor (Paul): someone that is more experienced than you and can help you grow in ways that you were unaware of and who can help you develop your personal gifting.

* a comrade (Barnabas): someone that is at your level whom you can mutually encourage and grow with.

* a person to mentor (Timothy): someone whom you are a Paul to.

I think this has applications beyond spiritual development; it can be applied to any field/dimension that you want to grow in. Part of my problem in college that I was always fixated on having a mentor but never asked myself who my Barnabases and Timothys were.

As the years passed, I put aside this unhealthy fixation on having this spiritual mentor and I found myself begin to grow as I embraced the people around me as Barnabases and Timothys. I don't want to discourage you from looking for a mentor; it's awesome to find one. But don't feel like you can't grow as a programmer/developer without one. Growth takes lots of different forms and it would be a shame, in my opinion, if instead of growing, you spent your time waiting for Godot.


That structure is more or less what we're doing with our iPad app, Understudy, for SICP. If someone signs up for SICP, we pair them with another user a bit ahead, to talk to once a week. Once they're a ways in, they start leading another user just starting out.

http://blog.understudyapp.com/learn-sicp-make-friends/

[Obvious disclaimer - I work on this. It was posted to HN a few weeks ago.]


This is a really fucking cool idea and I hope it works out for you. It's been my opinion for a while now that something like apprenticeship should have a higher weight in the educational experience. And $5/mo is chump change if your app actually works like it seems it has the potential to.


Thanks! It seems to be working quite well so far, but we're still very small, of course.


Wish this was available on the Web. I need this to make me actually finish a Udacity/Coursera course rather than keeping on dropping them halfway through.


In medicine/surgery they call this "see one, do one, teach one". We are applying this principle on http://doerhub.com where everyone who joins shares what disciplines they are learning in, mentoring in, or doing/leading something in so you can pair with someone who is complementary or similar to you in one or more levels and work on projects or just learn from each-other. Here is how the search works: http://peoplesearch-doerhub.herokuapp.com/viz/


The best mentors I've had have been people I didn't know were my mentors until I thought about it.

A perhaps my experience would be 'People I met outside a casual social circle (though I see no reason they can't exist within) with a high level of experience and insight into a field of expertise (technical or non-technical) that also enjoyed my company and my giving / reflecting something back to them.'

Seek people out in environments you're comfortable, and don't discount the value-add face-to-face contact can make. A small word of warning also - mentors can be great inspirers, but that doesn't mean they would make a good fit as a boss or employee later (just as working _for_ a friend can break relationships).


If I were in your shoes I would build a list of potential mentors as I read blogs, books, articles etc about the topics I am interested in. Then I would rank them roughly in order of preference and then contact them one at a time and explain that I am looking for a mentor and give a brief summary of why I chose them and a brief background on myself.

I suspect you wouldn't have to go very far down the list before someone agrees to be your mentor.

If after a while, I wasn't getting what I wanted out of the mentor that agreed, I would explain this to them, thank them for their time and continue down the list.


that's a really interesting idea. It didn't occur to me that that was even a possibility. cool.


I offer free mentoring: http://markwatson.com/mentoring/ but I limit this to about one hour. An hour may not seem like much time, but usually I just talk about technology options, refer people to open source projects.


A mentor can be helpful to give you direction on where to focus your auto-didactic abilities.

I switched careers into software development several years ago thanks to the mentoring of several individuals.

Going to meetups in your area is one of the first places to look, and taking online or in-person courses are also helpful to find other like-minded people.

One thing to consider is that there need not be a formal "mentor-protege" relationship; you can get a lot of great one-off type advice from all kinds of people you come across.


I'm not disagreeing with you, but the downside of one-off type advice from varying people is that you are limited to only discussing topics which can be covered within a limited time frame. Surely a lot of good can come from that, but having a more long-term mentor lets you get quick feedback on things with little overhead, since the mentor will already be familiar with your current skill level, the project you are working on etc.


This is only somewhat related to becoming a better programmer but I'd rather post here than create my own thread for this.

I just graduated from college and I start work in 4 months as a software dev at a company that you've probably heard of and use on a regular basis. What can I do in these 4 months to maximize my chance of success at this company?

I thought I might go through SICP but I'm not sure if this is more of a theoretical exercise or if it will directly improve my work. I can't work on any open source projects because of the learning curve required to get familiar with the codebase, + I won't be able to work on it once I start my regular work.

Does anyone have any other ideas?


Assuming it's not a Windows shop, if you've never learned much about unix, work your way through this: http://www.compsci.hunter.cuny.edu/~sweiss/course_materials/.... Or study xv6 for four months. Or work through the coursera compilers class. Basically, picking a foundational area of CS and spending four months on it will pay off for the rest of your career.

My career has been a constant process of letting go of being afraid of how the "low-level" and "wizardly" stuff works, and finding out it's not as scary as I feared.


Do you know what you'll be working on, or what tech stack you'll be using? I would probably try to get familiar w/ the specific languages, libraries, and tools you'll be using on the job - maybe build a small project in them and/or go through some tutorials. Also, when I say tools, I don't just mean libraries - but also things like version control (git), and continuous integration (jenkins), if your company uses those - in my undergraduate program, we never did much with those, and it's good to be aware of them.

It can't hurt to reach out to the company/team and ask what tech stack they use and what you can do to get prepared - being on the other side of this, I was thrilled when someone I hired recently asked this very question.


The biggest challenges you're going to have aren't going to come out of CLRS. Pick a large open-source project and practice getting up to speed with the architecture and organization, because that's what you'll be doing at your job (sans the open-source probably).


> I can't work on any open source projects because of the learning curve required to get familiar with the codebase

That's totally not true. You'll definitely be expected to contribute with in the first 4 month of starting at work, why are open source projects different?

The processes are probably similar as well. You need someone to help you on board, explain the big pictures, guide you through how thing are connected. Then you take bug, dig into the code and figure out a solution. This is probably what you'll do at a real job, so might as well get used to it. The hardest part is finding someone who is patient enough to guide you along and answer your questions.


I would recommend trying to learn whatever tools they use, so that when you start you can focus your mind on the projects and less so on the environment. Once you start, you will be less overwhelmed, and you'll consciously feel good about how much pain you saved yourself. Just ship your future team an email and ask them what they think would be useful to know.


What can I do in these 4 months to maximize my chance of success at this company?

This presupposes that it's worthwhile to be successful at that company. Most companies aren't worth it. In fact, there's a correlation between a company being well-known and a company having horrible code.

It depends what you mean by "successful" though. I'm defining success as "increasing one's skill." But that's completely orthogonal to most people's definition of success, which is "climbing the corporate ladder."

If you just want a secure job, focusing on your software skills isn't the way to go. Focus on your connections at the company and how you present yourself. Your connections will mostly determine whether you'll continue very long at the company. (This assumes your skill is above a certain minimum standard of quality.) Companies aren't meritocracies.


Is there really a correlation between being well known and having horrible code? Do you have anything to support this idea? It seems a bit arbitrary.


I shouldn't have used the word "horrible" when describing a codebase because "horrible codebase" has very different meanings for different people. The code of well-known companies is typically great from a business standpoint, otherwise they wouldn't have become well-known. By this definition, Mt. Gox's codebase was fine right up until they imploded, because the only reason they were large enough to matter is because rolling out features was the highest priority. But you can see how, to some, this is a distasteful definition of "good codebase."

First mover advantage is one of the most powerful forces in the startup ecosystem. The only way to exploit first mover advantage is to be the first to market, which sometimes means skipping many of what programmers consider best practices.

The general principle is that it's hard to grow large by having a bunch of principles, because principles slow you down. Idealism tends to be the opposite of pragmatism, and being pragmatic seems one of the most important qualities for success in business.

There are exceptions to everything, of course, and I'm not claiming that all well-known companies have codebases that most programmers would consider bad. I've heard Google's codebases are pretty good, for example. Viaweb grew large, and I know how obsessive pg is about code quality.

All I'm claiming is that unless the culture of the company has valued code quality from day one, the codebase of a well-known company will generally not be very good. I.e. there's a correlation between being a well-known (read: large) company and having a codebase with more hacks than most would be comfortable with. So it seems to be the default.

Maybe it has nothing to do with the size of a company or how well-known they are. Maybe it's simply that most codebases aren't very good. But it seems to have a grain of truth that business forces tend to push codebases in a negative direction by default. Additionally, it seems like most codebases you see on github are actually pretty good; better than what you'd see at most companies.


Thanks, you make some interesting points, particularly about being a first-mover. When talking about "startups we've heard of" you may well be right, I could certainly see how that could work. But in general, the companies we've heard of are the ones who survived long enough to become well known, and in that case, I suspect that their code is very maintainable, which implies many aspects of "good" code. I'd especially expect the companies known for their software to have good code, unlike companies that do other things, but happen to have developers to support their business.


But in general, the companies we've heard of are the ones who survived long enough to become well known

True!

and in that case, I suspect that their code is very maintainable

Unfortunately, there's no relation between a code's maintainability and its business viability. For example, if that were true, then there would be a correlation between beautiful codebases and codebases which make money. In my experience there is no such correlation.

Businesses generally maintain their codebases by hiring people to work on it rather than adopting good practices from the start (so that they don't have to hire more people to work on it). That's why startups have another advantage: they can work much faster than big companies, because big companies generally have to deal with ten metaphorical tons of code bloat, which slows them down almost as much as their bureaucratic nature.


Build shit.


Ah! I finally have a useful answer, because wrote about this here: http://jseliger.wordpress.com/2010/10/02/how-to-get-your-pro... .

More nuts-and-bolts answers are much harder: look for programming or similar groups around you. If you find people you admire online, ask if you can buy them coffee when they're in town. There is no easy answer because possible mentors and mentees are subject to adverse signaling problems.

It's still much harder to find a mentor online than off.


I have the same problem here! I'm looking for a mentor as well. I think getting a mentor in the context of software development is n times harder than in others sector's I'm afraid. Best thing I can recommend you is to pair with people who are more experienced, and maybe in other projects. Maybe give http://agileventures.org/ | http://www.airpair.com/ | http://www.pairprogramwith.me/ a chance? hope it helps.


Attend Meetups and Conferences, meet people and share your thoughts with them. You can also join local groups. That's how you can pair up with people who are more experienced. You can even contribute to any open source project, learn from other collaborators and you will end up learning a lot.


Thank you for these. I will definitely check them out.


I enjoy mentoring people who want to learn Haskell. In fact, I'm already mentoring a fellow HNer who expressed interest in Haskell a while ago. It helps me tremendously with my personal development too, being able to verbalize concepts that I understand at a deep analytical level.

My e-mail is in my profile if you're interested.


Before I got good at programming I wanted a mentor too. At various points in my career, at times I've had a person in my life who acted as the role of "mentor" for short periods of time (one to two weeks). IMO a mentor isn't really necessary. If you're motivated to learn enough and to always keep your mind open you'll become good. Keep doing what you're doing. A mentor isn't going to be able to automagically transfer the knowledge and experience in his mind to yours via USB; Looking back in hindsight I wanted a mentor at the time because that was what I mistakenly believed in (that I'll be able to learn faster/better with a mentor). I admit it does feel good when someone with more experience compliments my programs. Did that contribute to how good a programmer I've become today? Not really...

"Build a Django app? Learn Java and build an Android app? Learn Haskell? Learn C?"

I've done all of them, each in my own time, except Android; I created some (toy) iOS apps instead.

Just keep going to where your mind takes you.

I would like to add that I did study software engineering at university several years after I started learning to code, and that it did help me figure out what I wanted to learn. I would not disagree with you too much if you suggested university took the place of a mentor for me.


Instead of finding a mentor, maybe find a buddy? I recall from my own days of early learning that doing things with another person made them much more fun and made the time go by very fast compared to learning alone. It also led to much more interesting avenues of research and the sum was much greater than the parts.

A mentor-student situation is typically mostly a one-way street.


i would love to give working with you a shot. i am a python guy, strong with .net and java who loves writing code and bulding apps with others. please contact me at jwheeler1 at googles email service.


If you're looking for a mentor and C, SQL, fullstack webdev, Python, and/or Django interest you, drop me an email (see profile) :)


The best mentors do not set out to be mentors or see themselves as (primarily) mentors. Yet they push you, mentor you and won't let you go. Because of this it is not so easy to get someone to 'be your mentor' in a formal sense, or, if that situation arises, where someone has agreed to be your mentor, then it is not necessarily the real deal.

As others have said the mentorship arrangement only transpires over time, and on reflection. However it is something that you can find within days of working with someone, possibly even within minutes.

I believe some people are more prone to finding mentors than others. Think of school and the vast overwhelming majority of pupils that the teachers really could not care a great deal about. Then there are the chosen few, singled out for special treatment. A 'C' might be good enough for the normal demands of the course, however, for those 'mentor worthy few' it is not quite like that. Even if they do not care whether they pass of fail, for whatever special reason it is, teachers will not let them be like that. Consequently they get mentored whether they like it or not.

It is the same in the workplace, there are a lot of also-ran's. Someone who has to just pick up the phone and be in on time is not likely to be pushed to excel or develop. Others don't get to be left alone like that. This is a different pressure to 'must work harder and be more productive', more care is involved, whether desired or not. I don't think even intellect has much bearing on the deal, you don't have to be gifted for someone to pick you out for mentoring and there are plenty of very smart, intelligent people that just do not pick up mentors.

Outside of academia and learning for the sake of learning, one great pressure for 'successful mentoring situations' is where time is money and the job just has to be done for a paying customer. If you can help with that you can find yourself a most useful mentor along the way. Also, if there is a strategic need for some knowledge to be shared then that can help. If you are the only one willing to learn all the systems and do weekend call outs when things go wrong, there is a lot of incentive for others to get you fully up to speed.

I should also say that in mentoring situations, cock-ups are allowed. You can ask for help on a particular thing or break a particular thing three times and three times only. A fourth time and you are renegading on the deal.


This is a part of a software career where social skills and ability to make new friends help. Be nice, be curious.. be humble and honest with your skill level.

In an open source project that you want to gain some experience with, or someone in your company that will help you with upward movement... the same skills will apply.


Check out local incubators in your city. The websites usually have a mentor list. If one of these people interests you then try reaching out to them via Twitter, Linkedin, etc... but if you don't yet have a business they may not have the time to help.



Your boss is your de-facto mentor, choose your boss wisely. It would be very difficult to grow quickly in software if you aren't already doing it full time.


Hey Kremlin, I can't offer any mentoring, but your post reads like your in the exact same situation as I am. I have been programming on and off for about two years, mostly Python and Javascript. I have three months off this summer that I want to spend getting my skills to a professional level.

I'd like to get in touch and hear what you plan to do next. If interested, email me: philipp@[my HN username].com


have you considered applying to https://www.hackerschool.com/ ?


I had one for Ruby on Rails, Ruby and PostgreSQL for a year around 2008-2009 or something. Omar was is his name. Helped tremendously and I owe him.

Should probably catch up again.

If you're interested, there are some mentorship programs on rails-bridge



One thing that has really helped me is a mastermind. While I know the mastermind is for entrepreneurs, is there something similar for coders?

Also, check out local groups like cocodevs or meetups.


Starting looking the github language trends and figure out what is you passion. So, make the best choice you can. -- TeeBSD (@teebsd)


To add onto this, my boss is very well renowned in his field. Is it generally ill-advised to have a boss that is also a mentor?


toastmaster do mentoring for public speaking. they have a great system. i keep thinking of setting up a similar system for programmers.



I don't consider paying someone to solve a problem I'm having the same thing as a mentor. In fact, in my mind those are completely different things.

This seems more like a site to hire a super short term freelancer.


clarity.fm




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: