The Care and Feeding of a Jr. Dev
Jesse Wolgamott & Brian Dorton
ChaiOne STEEP
May 20, 2016
Outline
The Metaphor
Jr vs Mid vs Sr
Expectations of a Jr. dev
The Value of Mentoring
What does mentoring look like?
Hiring Process
Orgs like to only hire expert level developers
But experts are already paid well, working in conditions that are good, and are only looking for a change if the money is 30% more.
Either:
Pay the Dev Their Money$$$$$
Hack the system and grow your own Devs
Sr Devs
- Can Solve Problems
- Can make technical decisions
- Knows when something is good enough
- Knows when something is overkill
- Knows what they know, and what they don't
Mid Dev
- Can Solve Problems
- Is usually told the tech stack to use
- Knows when something is good enough
- Needs to be told when something is overkill
- Knows what they know, but not what they don't
Jr Dev
- Can Solve Problems
- Needs to be told what tech and libraries to use
- Needs to be told when something is good enough
- Needs to be told when something is overkill
- Insecure about what they know
Expectations of a Jr. dev
When first getting started, orgs either:
Believe JRs should be experts
Believe JRs are interns
In reality:
- JR devs can solve problems using software.
- JR Devs need code reviews
- JR Devs need pairing to see how you do it
- JR Devs need to feel cared after
CONs:
Mentors are your existing experts
Your experts are then less billable
You spend money growing JR devs, and then they leave
If you don't want the juniors you're investing in to leave when they get better, treat them from day one like you would after year one! 👌 - Aimee Knight
Every great developer you know got there by solving problems they were unqualified to solve until they actually did it. - Patrick McKenzie
Pair programming
Internership model
Internal tooling/projects
If we speak in terms of hiring piano players: you're hiring the Chopins, Bachs, Liszts, and getting them to play Mary Had A Little Lamb. - Ryan Bigg
Generally Accepted Principle: "Tech Hiring is Broken"
Instead, maybe we:
-
Unless you are paying them to write algorithms, you're probably paying them to create and maintain software.
-
Give candidate piece of code, ask them to review it.
- What do they like about it?
- What would they do different?
- What could they optimize?
- Have a conversation about modeling data. Describe a problem, and ask them what tables / models they would use.
- Talk to them about their previous experiences; most JR devs had a career before software. This is an asset
Tips from What We've Seen at TIY
- Hire for aptitude, trajectory, and culture, not for technical skill level or prior experience. If that is what you want, you're not hiring a junior developer.
- Junior developers do not need a sink-or-swim mentality, to be treated like children, or excluded from the team.
- Just because you can do something in half the time, doesn't mean its what you should be working on a senior developer.
- No junior should be in charge of upgrading your system to a new major system, overhauling a test suite, or re-architecting your database structure.
- Encourage (i.e. require) pairing with juniors a few times a week. Especially on unfamiliar parts of the system.
- Junior developers need structure, honest expectations, and room to grow.