Published: January 31, 2022 • Updated: July 02, 2023 • 3 min read
“How do I find a programming mentor?”
I feel grateful to have collected a group of mentors over the years. I call on them frequently to talk through tough problems. I think I’m better at my job because of this regular, impartial outside feedback.
I’d wish this same situation for everyone! In this post, I’ll try to reverse-engineer the path I took to get here. I think it comes down to three things: finding smart people, being mentorable, and giving back.
First, you have to find great programmers to learn from.
In Consultancy Cycles, I talked about how great programmers can often be found at a consultancy. You can also find them on a good product team, or through Meetups and professional organizations.
Seek out people who are executing at a level you can’t imagine yourself reaching. You’ll know them when you see them.
A hallmark of these people is that they’re fast at editing files. This little skill demonstrates that they’ve put in time and are committed to improvement. They’ll often know patterns and anti-patterns for most problems and be able to communicate value and persuade. They’ll have one or two deep-T skills like security expertise, database wizardy, or strong design chops. You might find them hacking on less beginner-friendly languages like Clojure or Rust.
At Hashrocket I was surrounded by people like this. When you find one, pay attention. They are potential mentors.
Next, you need to be mentorable. Be a person that a senior developer enjoys talking to and thinks is worth investing time in. Show potential.
To borrow from Hashrocket’s hiring criteria, mentorable people:
You want an attitude that conveys you’re going to show up, work, listen, and improve. Be mentorable.
Third, as a mentee you have to give back. I mentor to support my community, but I get something out of it, too. I like talking to smart junior developers, seeing what they’re learning, feeling their excitement, and building my network. A strong mentee offers these things.
In the beginning, the mentor relationship is mostly me offering my experience and time. As time passes, it becomes reciprocal. My mentors were once much more experienced than me and I leaned on them. Now, we’re closer in ability, and for every question they answer, I answer one back.
Find a medium that supports this exchange. I chat with my mentors via asynchronous channels like Discord. Asynchronous channels have the advantage of avoiding the “SOS! I’m stuck and I need help now!” type of exchange. We talk regularly on video calls; when either of us is stuck, we’ll remote pair-program. We trade time often enough that nobody owes anyone anything.
It’s a give and take; be sure to give, too.
So, how did I get started? I worked with these people. I’d recommend starting there if you can. If you have a choice in your first few roles, seek out those with smart people who are going to push you to grow.
But these relationships flourished after our coworker relationships ended. You have to keep them alive. I try to give ‘updates without asks’— I connect with my mentors frequently, such that a lot of my messages are sharing news, not asking for help.
When you’re starting out, you might be looking for a guide to building a remarkable career. If your mentor is good, that’s isn’t likely what you’re going to get. In the beginning, a great mentor is going to want to help you get good at programming. More than what language you choose or bootcamp you attend, I think that’s how you start actually building a remarkable career. It’s that old saying: “Don’t ask for advice, ask for a code review.”
I hope my story feels attainable. Mentorship isn’t easy; I think it’s one of the unsolved challenges of knowledge work. I spent a couple years feeling alone in this field. It took failure, hard work, and luck to develop these relationships. So do the work, and be lucky, by seeking out smart people, being mentorable, and giving back. I hope you succeed.
What are your thoughts on finding a mentor? Let me know!
Join 100+ engineers who subscribe for advice, commentary, and technical deep-dives into the world of software.