By now, though, I’m a veteran junior developer. I’ve done five different internships over the course of my undergraduate years, which means I’ve onboarded to a new codebase five different times, used five different tech and DevOps stacks, went through five different types of documentation, and interfaced with five different company cultures. Each time I took note of what techniques helped me onboard and get things done the fastest. Over the course of these internships, I went from completely clueless to what I like to think is vaguely competent.
The good news is that you aren’t going to need all that junior developer experience, because you can learn the main lessons from me instead. Here are seven important things I learned from my junior developer experiences.
- Don’t go straight to Stack Overflow.
After a while, though, I started to realize that doing that made my understanding of what I was doing nonexistent. And if I wanted to slightly modify the code I copied and pasted from Stack Overflow, I couldn’t – I would have to try and see if someone had asked that marginally different use case somewhere else on Stack Overflow.
Now, I always do a five-minute reading of the documentation. That’s not a metaphorical five minutes: I actually look at the time on my computer, read the documentation for whatever I’m using, and keep reading until my five minutes are up. After that I’ll allow myself to check Stack Overflow, but more often than not I’ve developed a deeper interest in the background, approach, and philosophy of the service or language. Often I don’t even need to look at Stack Overflow anymore, and if I do, I understand the solution much more easily.
Learn to read Wikipedia, and if that doesn’t work, read Simple Wikipedia, and if that doesn’t work, google “Tutorial of <topic/language>” or “Introduction to <topic>”.
- Learn the standard libraries.
Try to commit these things to memory if you can. If you have to remove an element from a list, try to guess whether you should use poll(), queue(), removeLast(), or pop() before using code complete to figure it out. Once you have an internal sense of what structures do what, you’ll be able to code ten times as fast, because you know what you do and what you can’t and you won’t need your IDE to tell you what’s possible. Your code will also be much more powerful, because you’ll be able to harness the full capabilities of your language and libraries.
- Put away your phone.
Then one day I bought a phone with a terrible battery (in my defense, it was $40) and began to turn it onto airplane mode during work hours to conserve battery. Wow - what a difference! All of the sudden, my focus was qualitatively better; I was writing better code faster and getting much more done in a day than I had ever been able to before. This is important advice: stay off of your phone, reddit, Facebook, and anything else you spend time on. There are many site-blocking browser extensions that you can install to help you remember.
- Figure out how to unblock yourself.
-
Internal documentation. This includes internally-maintained wikis like Confluence, READMEs, and
Q&A sites.
-
External documentation. This includes publicly-facing library documentation, tutorials, and RFCs.
-
Codebases, both internal and external. This includes GitHub as well as your company’s codebase.
-
Chat logs. Your team probably uses a chat app like IRC, Slack, or Microsoft Teams and it almost
certainly supports search. You also may be able to search your company’s email archives.
-
Issue managers like JIRA or Asana often have tickets or comments on tickets that deal with
problems
you might face. Seeing who assigns or is assigned to tickets can also be helpful in figuring out who you
can ask for help.
- Figure out when to ask for help.
- Decide what your threshold is for asking for help. It could be 45
minutes, three hours, or a day - it depends on you, your skill level, your deadline, the company
culture, how willing to help the people around you are, and your level of desperation. But once you hit
that threshold, you need to stop trying, swallow your pride, and ask someone for help.
- Document what you’ve tried already and why it didn’t work, so that the person
who you ask for help can see that you’ve tried to solve the problem first, and so that they won’t try
those to use those the same approaches when trying to fix the problem.
- If you have a lot of questions and they’re not absolute blockers, save them
for later and then ask them all at once. This way, you won’t be constantly interrupting people’s work -
you can ask them if they can sit down with you for an hour, and then ask them all of your questions at
once. Something that helps with this is working on more than one task at a time; this way, if you’re
stuck on one or have a blocking question you can work on the other while you think about it.
- Keep track of what’s going on in the industry.
- It will lead you to articles and opinions of other engineers as well
as industry leaders. Reading is a
superpower because it lets you see through others' eyes, and reading what people in the industry
have spent thirty years discovering will prevent you from spending thirty years discovering the same
thing. It also gives you perspective on what people in different roles on a team and in a company want
from you, the challenges that they face in achieving what they want to achieve, and what you can do to
make their lives easier.
- You’ll become knowledgable about new libraries, technologies, and services.
This is a great way to discover new tools you can use to approach a new functionality or project. You’ll
also find out about new versions and capabilities of the tools you already use.
- Hate writing unit tests? Surprise - so does everyone else! You’ll find it’s
fun and relieving to share your likes, dislikes, satisfactions, and frustrations with others in the
fraternity of software developers.
- It will introduce you new ideas. The work of tech visionaries like Joel Spolsky and Rands in Repose are often bandied around and quoted, and it’s
interesting and valuable to go through what they’ve written.
- Stop being insecure.
This is not to say you’re doing a great job. Most of the full-timers on the team are likely better than you, but even the greatest programmers had to start somewhere. Keep learning, reading, looking at code, and getting code reviews, and one day you’ll look back and notice you’re a lot better than you used to be.
In the words of the inimitable Dr. Seuss:
And will you succeed? KID, YOU'LL MOVE MOUNTAINS! So...
Yes! You will, indeed!
(98 and 3/4 percent guaranteed.)
Be your name
Buxbaum or Bixby or Bray
Or Mordecai Ali Van Allen O'Shea,
You're off to Great Places!
Today is
your day!
Your mountain is waiting.
So...get on your way!
Be notified about new articles.
Next: In Praise of Memorization