April 25, 2014

How to Be a Better Junior Developer

This post was originally published in the New Relic blog on 4/23/14. It is the blog post version of my talk for RailsConf 2014 in Chicago, the slides for which are embedded at the end of this post.



Over the last couple of years, New Relic has hired multiple graduates of various coding bootcamps and “non-traditional” backgrounds, including me! After I earned my Bachelor’s degree, I was actually all set to attend medical school, when I got a job at Google in technical support. Some four years later, I took a sabbatical to attend Hackbright Academy, a 10-week (now 12-week) program teaching women how to code. Before the end of the very first week, I knew I had finally found a career direction I actually wanted to actively pursue.

One of my biggest worries, though, was that I would be throwing away my past experience and the skills I had developed in a different domain, to start over entirely in a new field — one where I’d be up against developers who had decades more experience. Fortunately, as I settled into the role, with the help of the many great mentors I got to work with, I came to the following realizations:
  • Being a developer is really about constantly learning.
  • There is a lot to engineering that actually isn’t directly coding.

It became clear that there are many ways to leverage the skills I’d developed in other domains, even as a junior developer with so much to learn. Having gone through that period of uncertainty myself, I wanted to spread the following two messages:
  • Junior devs: There are ways you can contribute to your team while you’re still learning the ropes.
  • Mentors: Tailoring your guidance to junior developer needs will help them feel more confident and productive.

So much to learn

When it comes to the challenge of having so much to learn as a junior developer, the most important thing is not to try to do it all on your own. Here are three approaches you can take:

1. Get people to want to help you
Through building relationships on your own team and across other teams, you expand the network of people you can ask for help when you get stuck. To get the most out of that network, it’s crucial to show that you value other people’s time and get as far as you can on your own. For one, you’ll learn a lot faster if you try it yourself first (Google and StackOverflow are your friends). This also makes your experienced co-workers feel more helpful and confident you’ll put their advice to good use the next time you run into a similar problem.

2. Make it easy for people to help you
It can be really hard to articulate what it is you’re confused about, when you may not even have the vocabulary to describe the topic. Here’s a template that I like to use when asking for help:
“I am trying to ___, so that I can ___.
I’m running into ___.
I’ve looked at ___ and tried ___.”
For example, here’s how I filled this out recently: “I am trying to understand why this banner shows up on this account, so that I can tell the client whether they need to listen to that warning. I’m running into a problem with finding this record. I’ve looked at the model and tried reproducing the issue locally.”

3. Narrow the scope of what you have to learn
Much like tackling a gnarly technical problem, you should also try to limit your scope so it’s not so overwhelming. There are an infinite number of topics you can pursue, but mentors can help prioritize them. (My personal goal: to actually build a Rails app of my own.)


Helping your team

As a junior dev, it’s natural to be asking yourself: how can I contribute to my team when I still need so much help? Something to remember is that in a world where there aren’t enough developers* for all the developer jobs out there, it’s not necessarily a choice between slow (junior) and fast (senior)…it’s a choice between having something built, and not having it at all. Here are some other tactics to keep in mind that will help you give back, above and beyond the code you write:

1. Ask good questions
I like to think of questions as a junior developer’s superpower. Asking good questions, like “are we working on the right thing?”, helps reveal any misunderstandings and assumptions. These would result in many wasted hours if they aren’t uncovered until later in the development cycle, so ask questions early on.

2. Give good feedback
Giving useful feedback to the right person, in the right venue, at the right time, is hard for a lot of people. But all industries have some kind of feedback mechanism, so this is likely something that even junior developers will get a good amount of practice with. You can also help anticipate possible confusion that may come from Sales or Support teams regarding any new releases or product updates.

3. Make your team look good to other teams
Just by being extra responsive, thorough, and empathetic to the other teams that you work with can go a long way. One particularly good opportunity to make your team look good to others is any demos of new features built by your team. You have a chance to demonstrate that your team has been thoughtful about the impact to other teams, like serviceability. I almost always write a script and do a practice run-through beforehand, so that I can ensure a more efficient and less error-prone demo.


How mentors can help junior developers

The above tips are aimed specifically at junior devs, but there are also a lot of things mentors can do to help junior developers feel valued and capable of making concrete contributions. I’m a big fan of having a lot of conversations upfront about things like how a junior dev’s learning style can be matched up with a senior dev’s teaching style. These discussions help make sure everyone’s time is used more efficiently. For example, you might discuss how often a junior dev likes to receive feedback and instructions, and how and when the senior dev prefers to be interrupted if any questions come up.

Also, if as a mentor you want to intentionally let a junior developer struggle a bit in order to learn something, let that person know that this is what you’re doing. This helps dispel feelings of imposter syndrome, where people lose confidence because they have the mistaken belief that this should feel easier, even though it is actually expected to feel difficult.


Conclusion

A junior dev doesn’t show up to their first engineering job as a blank slate. There are many opportunities to hack a junior developer’s existing skillset to help them ramp up faster and feel they’re providing value from day one. I’ll be giving a more in-depth talk today at RailsConf on this same topic, and we’ll update this post to with the recording and slide deck when it eventually goes up.

*We’re hiring!



Response to my talk at RailsConf, on Storify.

Additional recommended resources: