DEV Community

Onboarding a junior developer to your team? Here's 12 tips.

Carolyn Stransky on April 11, 2020

A few weeks ago, my friend Nico König asked the Twittersphere about best practices when onboarding a new junior developer to your team: // De...
Collapse
 
jdmarshall profile image
Jason Marshall • Edited

While this is true of any dev, it's double true of junior devs:

The first weeks, they are going to be anxious to do something - anything - of value. If your code base is particularly complex, this will be difficult. But one thing a team can always use is perspective, and that is easiest to get from a new person.

For years, my go-to task for week one was for the new person to improve the Wiki. Find all of the bugs in our setup docs. Define all of the jargon words we forgot to define. That's all defensibly useful for hiring the next person, which is great, but other than a sense of accomplishment, it doesn't help this person all that much.

In communication or teaching, you want the listener to repeat back what you've just said in order to determine if they actually heard you. Have them work on the high-level overview of the system. Everything they get right, is explained without a bunch of circular reasoning. Everything they get wrong is a teachable moment. And every good teacher knows that they learn as much in the teaching as the student does in the learning. Often this is a good way to find missed features, or solutions to problems you thought unfixable.

Collapse
 
v6 profile image
🦄N B🛡

But one thing a team can always use is perspective, and that is easiest to get from a new person.

I'd always suspected this, but this is the first time I've read it written by someone else.

Collapse
 
stereoplegic profile image
Mike Bybee

Developer experience is no different than user experience in this regard. You don't know how many assumptions you assume you're not making, and only outside feedback and the more than occasional ELI5 request (see? I just used an acronym assuming everyone on Dev would know it... That's "Explain Like I'm 5" for those who didn't) can help to undo those assumptions.

Collapse
 
destynova profile image
Oisín

Good tips! I wish more companies / teams would give pair programming a serious try. I've had great experiences since I did an internship back in 2006 and the onboarding was basically an introduction to pair programming, a couple of demos showing us how to do TDD, then "okay, partner up with someone and take a task card off the board over there".

Another thing I find helpful is to make sure there are a couple of really well-defined, small-scoped tasks available for them. Or sit down with them and extract several small-scoped tasks from something in the backlog, then pair up. I really don't like welcoming newbies with "here is the link to ALL OF OUR DOCS" or "here is the our Github org -- feel free to browse through all the source code we've ever written". It's much better if they can sit down and discover the relevant parts of our systems (not the dead code from three years ago that's still referenced in our docs), as needed, to do something concrete and easy to measure... so they know what they're doing makes sense.

Collapse
 
realb12 profile image
René Baron

be aware that folks are different. Not everybody is fan of pair programming. Fore some, following some online courses is a better match. Or even reading a book. Best would be your organisation provides some self-made tutorials, programming guidelines with a lot of examples, template code and snippets to pick from.
My observation: pair programming often leads to silo-thinking and micro-standards but seldom to the quality standards you might need for larger projects. PP heavily depends on the people. Unfortunately the best folks for PP are the most absorbed ones. Knowledge extraction and distribution processes are - at larger organisations and over a longer time period - more important than PP - my very personal observation.

Collapse
 
carolstran profile image
Carolyn Stransky

Not everybody is fan of pair programming.

Agreed, but I do think it's a skill that everyone should learn.

I've never worked in a larger org so can't comment on your other points, but I'm tempted to believe that if pair programming leads to "silo-thinking and micro-standards" then you have a much bigger problem that isn't pair programming's fault 🤷‍♀️

Thread Thread
 
realb12 profile image
René Baron • Edited

Dear Carolyn,
When you "think" about stuff, that you have never seen, does not make you a professional :-)
It's just wild guessing and is one of the problems that is holding startups back from scaling and growing fast.

All this has nothing to do with IT but with human nature. I am not saying that pair programming is bad. But it is not enough. When you just have pair programming without a programme around it that makes sure, the the right and always different pairs are built, different characters are addressed their way to learn best, trainers are trained and rewarded, folks are fired who never learn, remain dependent on others, never pay back or contribute etc. - you know - all the general HR stuff - you will get efficiency and motivational problems only Microsofts and Googles can afford - but will take lifes when you are an airplane or car manufacturer, responsible for a nuclear power plant etc. ;-)

Thread Thread
 
v6 profile image
🦄N B🛡 • Edited

Seems like you speak from bitter experience, here.

When you just have pair programming without a programme around it that makes sure, the the right and always different pairs are built, different characters are addressed their way to learn best, trainers are trained and rewarded, folks are fired who never learn, remain dependent on others, never pay back or contribute etc. - you know - all the general HR stuff - you will get efficiency and motivational problems only Microsofts and Googles can afford - but will take lifes when you are an airplane or car manufacturer, responsible for a nuclear power plant etc.

And there's more to the merits of coders learning to pair program than wild guesses. I don't think anybody's saying it's something everyone should do, but it there may be some benefit to learn it in case it's useful in the future, with the right company, colleagues, or program. Tools in the toolbox, and all that.

Thread Thread
 
stereoplegic profile image
Mike Bybee

I have always hated pair programming, as a junior and as a senior dev. It has never not made me feel uncomfortable personally, on either side of it. It's not quite as bad virtually, but still far from great.

Collapse
 
ilonacodes profile image
Ilona Codes

I couldn't agree more! I wish I had such kind of onboarding process at the beginning of my programming journey back then. Great post, the topic is worth attention!

Collapse
 
miku86 profile image
miku86
  • Be nice and kind and let them feel and see, that you care about them (as dev AND human)!
  • Show them that they can also tell you "negative" things, e.g. challenges and hurdles, both emotionally and technically
  • Invite them to an open-minded discussion culture instead of a "I don't care about your opinion"-culture
  • Invite them to take responsibility, e.g. by asking questions like "How would YOU solve this problem?"
Collapse
 
shkurotatiana profile image
Tatiana Shkuro

Hello Carolyn!
My name is Tatiana, I’m a Brand Manager representing Plarium-South, an international game development company specializing in mobile and browser games (company.plarium.com).

We would like to translate your article and post it in our blog on Habr.com.

We appreciate your consideration of our permission request. Link to the specific original content will surely be provided in the translated version. Looking forward to hearing from you soon!

Regards, Tatiana

Collapse
 
carolstran profile image
Carolyn Stransky

Hi Tatiana! I've received your message (and DM, and email). I'm thinking about it and I'll let you know soon.

Collapse
 
shkurotatiana profile image
Tatiana Shkuro

Thanks! I look forward to

Collapse
 
shkurotatiana profile image
Tatiana Shkuro

Hi Carolyn! Are you ready to give an answer?

Thread Thread
 
carolstran profile image
Carolyn Stransky

Hi yes sorry for the delay, feel free to translate it 😊

Thank you for offering and thinking of this!

Thread Thread
 
shkurotatiana profile image
Tatiana Shkuro

Thanks!

Collapse
 
jankapunkt profile image
Jan Küster

Great post with valuable concepts. Please also consider to make it clear to management, that this process is crucial for mid to long term success. It's an Investment. By the way - I created a pull request and had the junior review it, which made him comfortable with the process and also indirectly pushed him to correct MY mistakes.

Collapse
 
carolstran profile image
Carolyn Stransky

make it clear to management, that this process is crucial for mid to long term success

💯💯💯

Collapse
 
v6 profile image
🦄N B🛡 • Edited

Yeah this is worth tying to risk reduction and revenue.

Collapse
 
phantas0s profile image
Matthieu Cneude

Great advice!

Many developers often forget how little they knew when they begin. Nothing is too basic for a beginner about Git, that's true, but for many other things as well.

I saw many experienced developers explaining clean code, OOP, and TDD in half an hour. Going little step by little step is, I think, a better idea.

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

Good tips! I've been implementing almost all of these at MousePaw Media for years, and can vouch for them.

The only one I can't follow is having a "buddy who isn't a direct supervisor". Our particular situation makes that impossible: I have to be both the internship supervisor and primary mentor at this point, since we're so small. But, because of how leadership and decision-making is structured within the development team, that works out pretty well regardless. I also strongly encourage people to work together without me, through pair programming, code review, chat, and other collaborative opportunities, so developers wind up supporting each other anyway!

Collapse
 
realb12 profile image
René Baron

sometimes it is the same body but different ROLES!
Knowing which ROLE one is playing for a given moment and acting accordingly is something that is even more important the smaller you team!

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

That's definitely one way to look at it. I will occasionally switch into "Supervisor Mode", but I have to say, it's not often. My management style is already more "guide" than "herd", my philosophy being that it's easier for you to dig yourself out a hole you dug, than to dig yourself out of a hole I dug for you. I'll let individuals decide how they want to approach a particular task they've been assigned, and I'll seldom interject my two-cents until they ask for it (the one exception being if they are about to walk right into a proverbial landmine.)

Collapse
 
ssalenger profile image
Sarah

Anyone choosing to hire junior devs should be prepared to shoulder some of the burden of teaching them. If you can't afford to spend time doing that, you should only hire senior devs (which also has an associated and increased cost). It's unreasonable to hire a junior person and expect them to only have other juniors to mentor them. A junior dev is an investment - they won't pay off right away and require time in place of the higher salary you'd pay someone who could hit the ground running.

Your response sounds like you've had a lot of junior devs foisted on you, which is not the junior's fault. Presumably, a company knows what skill level they are hiring someone at and it doesn't make sense to be angry that they take more time to onboard.

Collapse
 
scotthannen profile image
Scott Hannen

Great article. I wish we had a better word than "junior" for people. I'll never call anyone that.

I like the part about being honest about what we don't know. The illusion or perception that we know everything is harmful. I look for any opportunity to say I don't know something. Even the newest, least experienced developer will know things I don't.

Also distinguishing between opinions and best practices. Even best practices are usually subjective. It's okay for a team to decide to do something and expect new members to go along, but we should be prepared to explain anything and answer questions. The worst thing we can do is portray a practice as something decided by Smart People (You Are Not Included) Who Shall Not Be Questioned.

I especially dislike, "That's not how the team does it," as if the the person we're talking to isn't part of the team. Chances are that's not how we meant it. But we should at least ask ourselves, "How do I mean it?"

Collapse
 
jsanchezgr profile image
Juan

Great topic and valuable content. My two cents: I don’t think refactoring is a proper task for a junior, especially a newcomer.

Collapse
 
carolstran profile image
Carolyn Stransky

Fair point! Refactoring helped me learn a lot, but definitely not at the very beginning of my first dev job. Plus it needs to be presented in a helpful way (what's the goal, why is the current approach not ideal, etc).

Collapse
 
pchinery profile image
Philip

Thank you very much for this write-up. Most of the points are things we are practicing in our company already, some of them by explicit decision, some more established by common sense. Seeing this written down helps reflecting on the things we do and why we do them.

There is one thing I'd like to warn about though and that are a bit of a conflict in your points:

Always be available for questions <-> Respect their time

I'm sure it was not your intention to put it that way, but saying that you always have to be available and stop whatever you are doing when the junior has a question puts a lot of mental stress on the mentor. Interrupting tasks all the time is very exhausting and should be avoided.

So, being respectful with each others time goes both ways in my opinion. Of course, a mentor should dedicate a lot of time to the junior to be available to answer questions. I always like to split this between urgent matters and more general matters. I will interrupt my work for urgent matters when the junior approaches me with a question. But for things that are not urgent, I usually reserve a spot when we go through a number of questions that have arisen over the day or half a day.

This allows me to be fully dedicated to the questions and also fully dedicate myself to other work (often requests from other colleagues).

Collapse
 
carolstran profile image
Carolyn Stransky

I do agree... except at the very beginning of the onboarding process. When the junior first arrives to the team, they should be the top priority (unless something is literally on fire). Then once they are more settled, I think working out a schedule like you mentioned sounds nice!

Collapse
 
thomaslombart profile image
Thomas Lombart

Great advice! They are spot-on. All of this creates a warm and safe environment for junior developers. That's essential since they will feel like they can ask questions and actually do things without the fear of being judged or anything.

Collapse
 
oscarrodar profile image
Oscar Rodriguez

I'm being buddy for an SDE who's onboarding our team and it's being a rich experience. I try to keep casual conversations and regular follow up sessions so the new teammate can feel welcomed and confident about making questions.

Collapse
 
carolstran profile image
Carolyn Stransky

Who hurt you?

Collapse
 
v6 profile image
🦄N B🛡

A "Brilliant Jerk," perhaps?

Collapse
 
jpi profile image
Jay Patel

Hi,
This was a greate reading and surely will be helpful. I wanted to push further my curiosity to understand the scenario of hiring first junior developer under non-IT manager. What extra care to be taken in such case because non-IT manager is not going to teach junior developer any coding or best-practices?

Thanks
Jp

Collapse
 
carolstran profile image
Carolyn Stransky

Curious, why would you hire a junior without an IT manager?

Collapse
 
jpi profile image
Jay Patel

Actually my friend has a long career in sales and he is not from tech background. He has started his own business and looking to hire junior developer due to his budget limitations (and of course to keep another monopoly type of constraints).

Thread Thread
 
v6 profile image
🦄N B🛡

and of course to keep another monopoly type of constraints

Could you translate that for me?

Also, the sales guy might not be able to find an IT Manager or a well seasoned dev, but he may well want to look through his network for someone to advise him on this stuff.

Collapse
 
withpyaar profile image
with Pyaar

Great topic. Pair programming is an excellent way to learn but senior devs don’t seem to see the value in it or ceos are acting like overseers trying to get every minute of focused work out of you. Communication is also important sometimes people tell you that you’re messing up without telling you what you’re messing up on.

Collapse
 
okbrown profile image
Orlando Brown • Edited

Great article!
I have a thought...

Business domain: I feel it is important that they are provided with some insight into the business domain as it helps them to reason about things and decisions in a more contextual way.
Also fresh new eyes and talent can also identify some obvious solutions, that us deep in the rough experts might miss.

Collapse
 
carolstran profile image
Carolyn Stransky

Oh that's a really good one! Knowing about the business domain and what other departments do improved my experience at my first dev job.

Collapse
 
theafanasevo profile image
Mustafa Kursun

These are very handsome points!

As a self-taught (or however you call it) developer who was lucky enough to find a job without even having a solid base to start, I suffered a lot from these situations. Especially for Git commands and processes... I broke things until I got used to it. And I heard about 'rebase' only months later I started to work and it was not in my workspace but in a face-to-face interview with another company. Since then I have more often been using the command.

Mentor or buddy, pair programming, and constructive code reviews are all valuable points.

Thanks for sharing!

Collapse
 
clairec profile image
Claire Collins

Absolutely awesome advice. Thank you Carolyn!!

 
ssalenger profile image
Sarah • Edited

It's hard not to roll my eyes any harder. Carolyn's post is not making a list of demands, but rather talking about how to have the best experience onboarding a junior dev. I'm not asking for help becoming a junior engineer - I'm the one who onboards, trains, evaluates, and occasionally has to fire engineers that are not able to progress. I passed out of the junior stage a decade ago.

Anyone who expects a daycare will quickly wash out, whether or not someone takes these measures to onboard them well. Senior devs who are too arrogant to put in the time to onboard a junior dev because they think that they are all "millennials fresh out of their safe space" will certainly lose out on talent by relying out stereotypes. Newsflash, even the youngest millennials aren't just starting their first jobs these days, as they are in their mid-twenties. I think you need to upgrade your insults for the next generation.

Collapse
 
v6 profile image
🦄N B🛡

May I ask to what putative person or entity you're referring by the word "you" in here?

This is a good example of someone who should not be a developer on any sort of team - or perhaps a developer at all. Why do I say this? This is Brilliant Jerk mentality. What does your company do when senior devs move on? How do you even become a senior dev at a company if nobody showed you the ropes or took the time to mentor you? Have all the sane people left that toxic work environment and you are senior by default?

Did we read the same listicle?
This all seems kind of ballistical.

Collapse
 
incrementis profile image
Akin C.

I 100% agree with this article!
I hope that the industry awareness for the points you mentioned increases!

Collapse
 
v6 profile image
🦄N B🛡 • Edited

May I ask to what putative person or entity you're referring by the word "you" in here?

This is a good example of someone who should not be a developer on any sort of team - or perhaps a developer at all. Why do I say this? This is Brilliant Jerk mentality. What does your company do when senior devs move on? How do you even become a senior dev at a company if nobody showed you the ropes or took the time to mentor you? Have all the sane people left that toxic work environment and you are senior by default?

Did we read the same listicle?
This all seems kind of ballistical.

Thread Thread
 
joaoportela profile image
João Paulo dos Santos Portela

If memory serves me right, he was responding to a comment that no longer exists.
(Not sure what is up with (auto?) promoting responses to comments to top comments in dev.to)

Thread Thread
 
v6 profile image
🦄N B🛡

Well I'm going to look really confused in here, then.

Collapse
 
v6 profile image
🦄N B🛡

You forgot the most important part. Make sure to call them "junior!" They love that.

"Must be a case of the Mondays, Junior, eh?"

Office Space, it's a pretty good documentary about IT work, you might have heard of it

Collapse
 
timhub profile image
Tech Tim (@TechTim42)

tips are really good, problem how to implement the tips lol

Collapse
 
madza profile image
Madza

What about companies that expect for you to be 10x developer since day 1?

Job title: junior web developer
Requirement: 5 years of experience in 3 year old framework.

Collapse
 
kitplummer profile image
Kit Plummer

Excellent post. Your "ultimate" is the most important. Set peeps up for success, and it will pay you back.

Collapse
 
codingmindfully profile image
Daragh Byrne

The last point is absolutely the most important, I always make it very clear that not-knowing is a big part of my life!

Collapse
 
carolstran profile image
Carolyn Stransky

Oh for sure, that place was horrrrrrible for many reasons. I wasn't a developer at the time so maybe it would've been slightly better if I was... but still 🙅‍♀️

Collapse
 
sonicoder profile image
Gábor Soós

Great tips!
I would push more towards pair coding in the first couple of weeks.

Collapse
 
danidre14 profile image
danidre14

Yes I agree, now someone remote hire me pls don't say I need experience to gain experience as a junior dev :(!

Collapse
 
draex_ profile image
Peter Dräxler

Great article :)

One of the best non-coding pairing sessions I've had was a colleague walking me through how he conducts a code review.

Share with us!