
Ask HN: How Can I Find a Mentor? - kremlin
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.<p>I think I&#x27;d really like a mentor.<p>Some things about me:
I&#x27;ve been coding for maybe a year, but I have a full time job so progress is not going as fast as maybe I&#x27;d like it to.<p>I&#x27;ve been doing Python (a very small amount of C# as well). I&#x27;ve read an intro book, and now I&#x27;m reading a book that goes into more depth with OO. I&#x27;ve solved the first 51 Project Euler problems, many of them with relatively elegant algorithms. I have a love for elegant algorithms.<p>I&#x27;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?<p>I&#x27;m not locked into any particular field of programming yet - it all interests me.<p>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&#x27;s wise to learn, I&#x27;d really appreciate it.
======
kaptain
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.

~~~
kenferry
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/](http://blog.understudyapp.com/learn-sicp-make-friends/)

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

~~~
d23
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.

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

------
zhte415
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).

------
lgas
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.

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

------
mark_l_watson
I offer free mentoring:
[http://markwatson.com/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.

------
robdoherty2
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.

~~~
Madsn
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.

------
canttestthis
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?

~~~
sillysaurus3
_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.

~~~
danpalmer
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.

~~~
sillysaurus3
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.

~~~
danpalmer
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.

~~~
sillysaurus3
_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.

------
jseliger
Ah! I finally have a useful answer, because wrote about this here:
[http://jseliger.wordpress.com/2010/10/02/how-to-get-your-
pro...](http://jseliger.wordpress.com/2010/10/02/how-to-get-your-
professors%E2%80%99-attention-or-how-to-get-the-coaching-and-mentorship-you-
need) .

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.

------
mariogintili
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://agileventures.org/) |
[http://www.airpair.com/](http://www.airpair.com/) |
[http://www.pairprogramwith.me/](http://www.pairprogramwith.me/) a chance?
hope it helps.

~~~
hardikj
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.

------
dserban
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.

------
meric
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.

------
jacquesm
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.

------
jwheeler79
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.

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

------
Theodores
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.

------
markab21
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.

------
greenwalls
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.

------
hvass
This is a pretty good post: [http://thoughtcatalog.com/ryan-
holiday/2013/08/how-to-find-m...](http://thoughtcatalog.com/ryan-
holiday/2013/08/how-to-find-mentors/)

------
dustingetz
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.

------
pfalke
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

------
idiotb
have you considered applying to
[https://www.hackerschool.com/](https://www.hackerschool.com/) ?

------
seivan
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

------
wturner
Watch

[http://www.youtube.com/watch?v=TBs5zc2pepA&feature=youtu.be&...](http://www.youtube.com/watch?v=TBs5zc2pepA&feature=youtu.be&t=13m19s)

------
WesleyThurner
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.

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

------
lancemjoseph
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?

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

------
LeonidBugaev
try [https://www.codementor.io/](https://www.codementor.io/)

~~~
scrabble
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.

------
volandovengo
clarity.fm

