Ask HN: Do software dev mentors really exist?

12 points by rc-1140 ↗ HN
I ask because it's among the first lines of advice that people give to new developers posting on the internet, and it's easily one of the most common bullet points on those "top things to do as a new dev" articles, but I haven't exactly been privy to such things since I started. The closest I've come to having a mentor is a (ex-)friend who helped me navigate the initial rocky pathway to getting my first job and advice on how to go forward in the field, but I don't think we're on friendly terms anymore after some issues within our circle.

I know it's something that goes on in the wild, because I overhear snippets of conversation at work about assigning someone to mentor a junior or actual mentoring going on, but I've just kind of been given junior-ish tasks and told to ask if I have any questions. No one seems to know what exactly I'm going to do or where they want me. I've been trying to act on some of the last bits of advice that friend gave me before the social separation, but some of the pieces that were the quickest to address and complete haven't borne much fruit.

I've gone to a meetup (planning to go to more) to try to find someone who might be a mentor or at least a mentor-like figure, but that's been bleak as well. Is mentorship just a buzzword that internet posters use to give themselves advice-giving credibility? Will I have to switch jobs just to get one if that isn't the case? If I do, isn't that my catch 22: I don't have enough experience, but in order to get it, I need to apply for a job that needs more experience than I have?

Things I've read in the past on HN:

- I know there are pay sites that exist, but I can't afford to take samples on random people on random startup websites.

- I know someone is going to pipe up and say "well you don't NEED a mentor" and then go on to cite how they made it on their own except for the long-time mentors they have but those guys don't count

9 comments

[ 3.0 ms ] story [ 27.4 ms ] thread
Have you asked HR or your boss if they have an explicit mentorship program at your new job? Also, when I'm feeling overwhelmed, and don't know what questions to ask, I usually grab a coworker and ask "Do you have 30 minutes? I'd like you to sit with me and review what I'm doing. I would like more direction to get this task started/finished".

If there is nothing formal at your current place, you can try the informal route. Ask a coworker to join you when you go for a coffee break, and informally chat about work. Ask a few questions to see how they respond. This process is slow, but personally I've had the most success with this approach. (Yes, its politiking)

In my opinion, formal mentorship programs are uncommon. Usually the senior devs are under pressure to ship and don't have the option to help the new people (junior or not).

thats really a shame. i don't know how true it really is, but they say you don't really know something until you can teach it. Some of the most rewarding experiences I've had professionally have been finding talented but inexperienced developers, getting them excited enough to seek out little daily strategy sessions and watching them grow.

Organizations which don't foster this kind of relationship are really short changing themselves. Some of those junior people turn into stellar contributors in short order, and without a little guidance would have been frustrated and lost.

As a senior guy I feel vastly more productive and interested spending half my days in a series of little one-on-ones and in depth reviews then just burping out features with my headphones on.

I've always found a good mix of new talent, growing talent, and old hands to be the best teams. For best results have enough experienced people around that the younger people have a variety of options to choose from and be able to work with the mentors they get the most out of.

Thats pretty old school. Now it seems that its really all about the next two weeks, and not about building good teams.

> Have you asked HR or your boss if they have an explicit mentorship program at your new job?

Yes, they have a program for those who are college hires (hired straight from college). I was not a college hire: this is my second job, but my first job at a purely tech company. My first wasn't programming related but I managed to change that. However, at my current job, I'm treated like a college hire yet not included under the program we have, including the benefits it has.

> I usually grab a coworker

I can talk to my manager and other coworkers if I need to and they'll help with things, it's not that they're not available to help.

> (Yes, its politiking)

I don't think it's politiking, but socialization is somewhat difficult at my company. The next-youngest person on my team is just about twice my age, and they've already got their social networks set or are simply uninterested. I found it much easier at my previous company, where even though I was nervous as a fresh grad, people were willing to talk and take breaks. I haven't really found an "in" socially, although everyone is nice and polite.

Is there a specific problem or set of problems that make you feel you need a mentor?
1. I said it in the OP, but no one seems to know what to do with me. I just kind of exist to look at tickets and add/remove a few lines. Meanwhile, even the intern we just got for the summer was given a project, although it was just kind of decided on the spot during our last standup what he'd exactly be doing.

2. I haven't become a better software developer since I left my first job; in fact, I've done less programming since I joined a purely tech-focused company.

3. The code smells I can notice in the things I do look at I mostly have no solutions for since I don't know what a better option would be. The times I do have an idea, I play around with it and realize that the way we have the code is fine and I'm just trying to replace it with something New and Shiny (i.e., I wanted to replace the nested loops we used to search a log file with LINQ, but I realized that not only did this not really change anything, I'd have to start combing through dozens of tests that use this method to make sure everything still works which would destroy my sprint schedule).

4. I don't have an angle like I did at my last job: there was always room for a tech solution because none existed in the first place. I was able to cook up lots of small and useful things that had a direct impact on the workplace. Here, just about every problem has a solution implemented already, usually a simpler one than I had in my head. Some tools that I've seen the insides of are definitely entrenched purely because of the sheer number of code smells within; I thought this would be an angle because it would probably be much easier to update if a refactor or even a replacement was worked on, but no one can justify ANYONE'S time refactoring/remaking something that already works.

5. I'd like to learn company vocabulary; my team continues to assume that I know all of the jargon even after the past few times over the months since I've been hired where I've explained I don't. I do all the usual things like explain what I'm trying to do, why I'm doing it, and do it step by step, but it feels like the only person who seems to get me when I have an issue is my manager, and even then not always.

6. Having someone who would actually be interested in getting me involved in the company would be nice, even if it just ends up being a social thing and not necessarily a tech thing. We don't work on anything groundbreaking and we've got our list of defects like every other company, but just being able to work on something and have something to even gripe about as chit-chat would be nice.

From your answer, I get the feeling that you need a manager more than you need a mentor. In particular:

* if you don't really know what you should/could be working on but are feeling frustrated with your daily routine, you should bring this up with your manager.

* if you still don't know company vocabulary and don't feel involved in the company after a few months, there may be an onboarding / culture sharing issue at play.

That said, maybe you should play the "money game" (as in the movie about baseball). It may be impossible to find a mentor who will do it all (help you grow technically, help you find more meaningful tasks, help you feel more socially integrated) but finding several mentors who can help with each facet is probably easier. E.g. your manager should be in that list re. day-to-day tasks and company culture; an outgoing coworker for the social interaction, etc.

You mentioned that most of the team is much older than you; maybe you can create a "filial" social relationship rather than a "fraternal" one. In my experience, this works quite well if your coworkers are old enough to have kids in high school/college, and you've graduated a few years ago - easy to relate to what they're going through and reassure them that their kids will eventually turn into fine upstanding folks just like you. Plus everyone loves talking about their kids.

This leaves out the big one, the dev/tech mentor... But if you're not looking for someone you can have a normal social interaction with, you can target the grumpy beards who committed 95% of the entrenched esoteric code and ask them about it. (Or, you know, just commit something that'll break their code. That usually gets their attention ;)

If you're dealing with a team that is mostly very experienced, they may not be used to people who can solve a problem--once they're pointed at it. They might just assume you can identify problems on your own, like they can.

Try talking to friendly coworker and saying: not sure what to work on, got any suggestions?

So it sounds like you should be looking for a better career opportunity. In order to make that a natural progression from your current employer I suggest getting to know the product folks, UX people, actual users, or whoever knows, so that you can get a sense of what future or long-term needs are for the system. You aren't after a specific task list but rather a general direction. You can then start looking through the parts of the codebase that are closest to that direction and considering ways of adapting them to the new direction. In the process of doing that you should identify which technical skills/languages/technologies are the best fit and in the highest demand (at other companies) and closest to your current skillset. If it is an open-source piece of tech then engage with the core contributors on that team, subscribe to their mailing lists, and learn from that team rather than your employer. It is better to learn from multiple individuals than from a single mentor.
I was extremely lucky to get to work one-on-one with someone much more experienced than me when I was starting out. I interned at a startup and was making the iPhone app with one of the original engineers.

I had already gotten pretty good at the slamming my head against things until they work part. So I could eventually make something that functioned, but my code quality was terrible.

Where having a mentor really helped was becoming more disciplined, seeing good code, and learning new tools and services.