Junior developers are very useful

How to recognize a junior developer

A developer who has only had one or zero development jobs previously, for less than a year or so total. Maybe they’re coming from a college degree, a code bootcamp, another area of the tech industry, or are making a career transition into software development from a different field.

“Junior” can mean so many things

“Junior/Senior” is like a t-shirt size: small/medium/large without even the options “extra-small” and “extra-large”. It is imprecise. Many t-shirts that are “Medium” are larger or smaller than each other, have different fits, shrink in the wash, etc. Unlike t-shirts, junior developers are self-motivated, intelligent human beings worthy of consideration and respect. They do, however, change over time- and some of them will fit your company better than others.

  • Some junior developers have PhDs in topics you will never understand that require more math than your entire app will ever have to, even if you scale to as many users as you could ever dream of.
  • Some junior developers got a CS degree but have never written code with tests before.
  • Some junior developers got a Philosophy degree and have their own website design business.
  • Some junior developers just graduated from a bootcamp and know more about TDD, OO, Agile, performance, and how to write a database/MVC framework/version control system from scratch than three-quarters of your current development team.

Why hire a junior developer?

They ask “Why?”

Not only do they ask why, they ask ‘why’ better than more-senior developers, because explaining to them they naturally need more root-cause explanation.

“Delegate to juniors. they are wonderful people. They ask hard questions. They bring new insight into whats going on.” - @DivineOps at DevOpsDays Silicon Valley 2015

Having to justify (and research) the decisions made years ago frequently gives a developer more and better insight into those decisions, and also leads naturally to ideas for what to do instead.

Listen to yourself say “But when I have time we’ll change it to X” and then tell the junior developer to implement it, with daily check-ins and access to a more experienced team member, in order to help them explore without getting lost in the wilderness.

Juniors turn into senior developers (surprisingly quickly)

Train them the way you want them. Surprisingly soon they’ll be owning features, running design meetings, and arguing about scope creep. Corollary: if your company has messed-up practices, your junior developer might not figure that out as soon as a more experienced hire would.

They’re “hungry”

They will work hard, because you are their Big Break.

They will ask for more to do, because they want to get better at what they are doing.

Corollary: As the boss/employeer/mentor, you have to be careful to not ask for things that you shouldn’t, because they might try to do them. “Can you do it by tomorrow?” “Sure! (if I stay until 2am and flake on plans with my friends and get sick because I haven’t slept but This Is How Software Works, Right?”

“Don’t burn your candle at both ends: burn a space-filling fractal candle at every end at once.” - @popmaada

They’re (relatively) cheap

Moving farther up the supply chain is always more cost-effective.

Mentoring opportunity

Showing a skill for mentoring and leadership can help more senior developers grow their skillsets and advance their careers. This is useful to everyone. Also, many developers enjoy mentoring.

Faster hiring process

In this job market, it is a lot easier to get a stack of junior developers who want to work for you, then to get a stack of non-junior developers. You can have your pick of the lot (if you move quickly).

Learn by teaching

Teaching someone can really help you internalize something- whether that’s your app’s architecture, or the elaborate inner workings of Selenium.

“Bringing junior developers on board helps us see which senior developers are natural leaders.” Jon Teodoro

“Grunt” work

You’ve been meaning to look into that one weird exception that you saw two weeks ago. Or to write that test. Or to rename every instance of Foo to FooBar. Or to fix that deprecation warning. Or to make some text changes to the tooltips. Or to refactor the CSS. These are great tasks for junior developers.

Advice for junior developers

  • “Getting an experienced developer to change her ways — say, adopting new code review practices — can be difficult. But when you get to train the developers who make up the core of your company’s software development team, you have the opportunity to indoctrinate them with the methods you use.” Airbrake
  • “If it helps, you are never ready, you will never know enough, and the key is knowing how to cope with that.” EricBrooke
  • “You will need to separate your self worth i.e. ego from your code. You will need to manage that nagging sense you are not good enough.” EricBrooke
  • “A good junior dev stands out from his or her peers because of an excitement for creating stuff.” (but don’t be super annoying about it) jarenthenerd
  • “Join your local meetup group” This is where the people who care about doing what you want to do, are. learnwithjeff
  • “The second I hear something that even smells like “that’s not worth my time” is the second they get their first reprimand. If they get huffy or arrogant about it I won’t even need to pull rank – I’ll just ask them a series of questions which will illustrate to them and everyone around that there are a hundred things in this task that hadn’t even occurred to them. The engineers who have the opposite attitude, who seek out the value in a task without needing it to be spelled out in fractal-like detail, are precisely the ones who make brilliant junior engineers.” Jesse Farmer, Dev Bootcamp co-founder
  • “There’s an exception that pops up a few times a week. It doesn’t appear to be causing major harm – famous last words – but nobody has had time to fix it. Can you investigate it, fix it, document it, and write a regression test for it?” (Jesse Farmer)
  • “If you have to complete a code challenge, make sure it’s the best code you’ve ever written. Even if it’s a trivial task, things like full test coverage and demonstrating that you know some OOP best practices will give you a better chance at an interview.” mildavw

Snippets & references

  • “At that rate, you can give a junior developer a 10% raise every year for 3 years at the end of which you’d have an experienced senior employee who’s been with you that long and is still costing less than a new senior hire.” OnStartups
  • “I like to think of questions as a junior developer’s superpower.” NewRelic
  • “Let’s say your company owns a helicopter and a few cars for transportation of certain goods. If you need goods to be transported from city to city, helicopter will be much faster (and expensive). But if you only need them to be carried a few kilometers away even though the helicopter is still faster, it will be overkill. So assign little distance tasks to cars and longer distance tasks for helicopters. Helicopters can also oversee cars and make sure they avoid traffic and choose right paths.” Quora-response
  • “Generally junior developers work best in a problem domain where it’s possible to come up to speed in a few months and doesn’t require deep technical knowledge of a particular branch of programming, such as machine learning or high availability.” ESTECO
  • “For most products, seeking out rockstar senior engineers is like hiring Picasso to paint your apartment” (Avid Flombaum)
  • “But the majority of work being done on a typical web application does not require a team full of PhD’s with 10 years experience, making it no surprise that senior engineers quickly get bored and seek out other opportunities. By hiring junior developers and ensuring they’re getting the continual training and development that they need, you can ensure that they stay engaged and derive as much personal and professional value out of your company as your company derives from them.” OnStartups
  • “Companies can avoid the long, drawn out search for that needle in a hay stack developer by hiring a more junior candidate and training and molding them into their ideal developer.” WorkBridge
  • “In return for your generosity, I will do everything in my power to make it not have been generosity.”Company Loyalty
  • “An argument for hiring junior developers (from a conversation I had with @kamalmarhubi just now) -b0rk”
  • “Delegate to juniors. they are wonderful people. They ask hard questions. They bring new insight into whats going on.” - @DivineOps at DevOpsDays Silicon Valley 2015
  • “Why companies suck at recruiting programmers”

Typofixes, questions, factual corrections, and feedback are welcome: please file an issue on github at https://github.com/compwron/compwron.github.io/issues or tell me at @compiledwrong