The biggest mistake that I see in dealing with junior software engineers is not having a plan in place or the resources required to appropriately mentor them.
I see the same thing happening with interns. The attitude of “Hey, Let’s get some Interns!” or “We can save money with junior software engineers!” is prevalent in a lot of companies.
The decision to hire a junior engineer is actually a decision to make an investment in the engineer. If the company is not willing or able to properly train and mentor the engineer, it will be a bad experience for both the new software engineer (hopefully not tarnishing their enthusiasm) and the company because they will not see the value of the hire.
Following Jeff’s answer format:
1. Have a plan in place. On the day they start you should have a plan that set their expectations and what what you expect of them over the coming 3, 6, 9 & 12 months.
2. Make sure you have a resource assigned to them before they start. Don’t just throw someone at the new engineer the day they start. This person should be their primary mentor and function like a big brother/sister. They are there to help them not only with coding, but making them feel welcome, guide them around the company, etc.
3. Make sure you have time allocated for people doing the mentoring. This means you might need to subtract some story points from sprints for a short-time, etc.
4. Give them something to work on. Ownership is a great motivator.
5. Nothing gets you exploring the code base like fixing bugs!
6. Set the expectation that in order to really grow they should learn as much as they can on their own as well – outside of normal work hours. Give them advice on where/how to learn.
7. Give timely and honest feedback.
8. Build a culture of learning and mentoring.
1. Ignore them, expect them to figure everything out on their own.
2. Do not tolerate negative or hostile behavior!
3. Dump all the crap nobody else wants on their lap.