Ask HN: How Can I Find a 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.
49 comments
[ 3.4 ms ] story [ 103 ms ] threadI 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.
"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.
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.
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).
This seems more like a site to hire a super short term freelancer.
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.
http://blog.understudyapp.com/learn-sicp-make-friends/
[Obvious disclaimer - I work on this. It was posted to HN a few weeks ago.]
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?
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.
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.
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.
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.
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.
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.
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.
A mentor-student situation is typically mostly a one-way street.
My e-mail is in my profile if you're interested.
Should probably catch up again.
If you're interested, there are some mentorship programs on rails-bridge
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.
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.
Also, check out local groups like cocodevs or meetups.