Advice to any Junior Developers

There was an interesting thread recently on Hacker News about advice to give to junior developers. A lot of interesting feedback cropped up but I want to put my two cents up for posterity.

The following points are written from the viewpoint of a software developer of 14+ years experience. I have dealt with many juniors in this time and have gotten frustrated that, time and again, the same mistakes are made. This might come across as a bit ranty, but that’s generally my style, don’t take it personally :)

  • Ask questions, no matter how dumb you may think they are. This is an excellent and universal bit of advice for learning something new. But there’s a corollary to it though…
  • Listen to and remember answers - nobody likes to answer the same question over and over.
  • Speak up, don’t stay quiet - if you’re not sure, say so. Tease it out with follow-up questions until you are sure you understand.
  • Don’t be sloppy - keep your code clean all the time, even if it feels like a waste of time as you experiment with your code. It’s a waste of time for code reviewers if they have to point out every bit of dodgy formatting.
  • Learn how to type - it’s a huge drag on your productivity if you can’t touch type, or at least type at a reasonable WPM. Also, anybody looking over your shoulder will get frustrated as you slowly type out simple commands.
  • Get comfortable in your development environment - whatever shell you use in whatever OS, learn the commands and shortcuts for navigating your system quickly and using your tools efficiently. Similar to the previous point, the person pairing will thank you for it.
  • Test your code - once it’s written, run it. Don’t assume your code works. Also, learn to write good unit tests.
  • Get the code right, no matter how slow it takes you - don’t waste code reviewers time putting up half-baked code, make it work. We don’t expect you to get stuff done quickly, but we would like to see it compile and run as it should.
  • Be thorough and pay attention - read the JIRA task description, read the wiki documentation, read the related emails, listen to what people say.
  • Don’t let fear get the better of you - it’s a common issue I’ve observed where juniors would avoid doing something because they were afraid of the possible repercussions. The only way to learn is to make mistakes so it’s better to try and fail instead of not trying at all (Homer Simpson would disagree, I know).

None of the above advice requires any technical knowledge, they’re really all about attitude. A good attitude is fundamental to becoming a good developer. Bad habits, cargo cult thinking, and fear of change; these all stem from a poor attitude. If you’re in the right place mentally, the rest will follow in time.