Guiding Junior Developers Out of the Weeds
Being a junior developer is difficult; mentoring one can be equally challenging. Integrating an inexperienced employee into your team requires patience, empathy, and an understanding of the common pitfalls that trip up rookies. Perhaps the most frequent issue that junior developers have is drowning in the details—becoming so fixated on one problem that they start to ignore everything else, including more important tasks and deadlines. Fortunately, with a
In order to help a junior developer get out of the weeds, it’s vital to understand how they got there in the first place. Everybody is different of course, but the most common reasons are easy enough to grasp when you put yourself in the shoes of a junior developer.
Confidence issues
One problem that most new employees in any line of work face is confidence. Unsure of their place in the company and insecure about their relative lack of experience, a rookie can get lost in the weeds as a means of coping. Some junior developers become perfectionists—they are so afraid of making a mistake that they will test and refactor a small feature again and again, often to the detriment of other responsibilities. In the case of these coders, perfect is truly the enemy of good. On the flipside, they may instead decide that they need an “impressive” solution, which usually means a needlessly complex solution. These coders can be found adding third-party libraries and researching over-complicated algorithms for hours.
Trouble understanding scale
A similar problem among many junior developers is one of scale. Many of them learned to code by creating relatively small-scale projects. It can be hard to step back and see the big picture when all they’ve ever known are the web applications they developed for class. When they are thrown into a professional environment the easiest way to feel secure is to focus on small tasks that they can control. This problem can occur in companies of any size, but if your codebase is especially large you might see coders with this problem with greater frequency.
Adapting to a new environment
Finally, many junior developers are unsure how to act in a professional development office. They may have just come out of school or a bootcamp, and are used to having the direct supervision of an instructor. Taking initiative with a larger task can be intimidating for these developers, because they think of things in terms of school assignments, complete with grades. Not wanting to step on toes or feel like they are wasting time, they tread water by tinkering with small problems until somebody tells them what to do.
Solutions
There are solutions to these issues, and junior developers who overcome them become stronger employees for having done so. Senior developers and team leaders can make this process easier with a few simple supporting techniques. Furthermore, team leads and senior developers will become stronger employees for having this experience in mentorship. Below are a few best practices to help you become a stellar mentor to a junior developer.
Building Confidence
Many developers entering the workforce for the first time suffer from confidence issues. They’re entering a brand-new situation; the rules are different, and the stakes are higher. Most of all, they are probably the least experienced member of the team, which can be terrifying. A junior developer might be scared of being a liability or a burden to others. This phase is entirely normal, but getting through it quickly will benefit them and the company. A developer who lacks confidence tends to stick to what they know and can control, which can get them stuck on small problems that are ultimately trivial.
Building a junior developer’s confidence takes more than simply puffing up their egos with meaningless praise. Positive reinforcement has its place, but it doesn’t do much if it’s not based on real accomplishment. Don’t mistake a junior developer’s inexperience for naivety—they understand the worth of their work, and praise that doesn’t feel earned comes off as condescending.
If you want to help build a developer’s confidence, give them an “easy win”, meaning a task small enough for one person of their skill level. This task should be a real problem that your team needs solved, and ideally should be just difficult enough for the junior developer to push themselves. These “easy wins” allow your junior developer to make real contributions to a project without overwhelming them.
Managing junior developers can be a balancing act. If you supervise them too closely, they might feel untrusted. However, with too little supervision, they might drift aimlessly, or become stuck in the weeds. When you give a developer these short tasks, it allows them to flex their wings without feeling lost, and they begin to feel more secure in their position at the company. Once they are sure of their footing, junior developers become more willing to take initiative without your direct supervision.
What kind of task could an “easy win” be? Here’s a real-world example from when I worked with a junior developer on a CRUD application on a small team. Noticing that the junior developer was struggling to do more than tinker with the CSS framework, I asked him to code the search bar of the website. This task turned out to be a perfect fit for this developer; while it was not an especially unusual or difficult problem, it still provided him with an opportunity to learn, and allowed him to make an important, visible contribution to the application. From then on the junior developer felt more ownership of the project, and greater confidence to try new things as we moved forward.
Another possibility, if you have no projects in your current stack that fit the bill, are to assign them short-term coding challenges to do when they have some free time. Just make sure that the challenge you give them is related to the work you are doing; the point is to foster skills that will make them better suited to your particular project, not to waste their time and yours on busywork.
Revealing The Big Picture
Everybody can fall victim to hyper-focusing on small problems, but junior developers are more likely to stop seeing the forest for the trees. This makes sense when you consider the fact that school or bootcamp is all trees and no forest. Most coders learn by practicing on problems of a limited scale, and rarely have to interact with a deep codestack. When they enter an established company with many large applications underway, they can feel overwhelmed or lost. It’s natural to return to your comfort zone when confronted with something so far out of your range of experience.
In order to fix this problem of scale, be sure that your junior developers have a clear sense of where their work fits into the big picture. There’s nothing more demoralizing than working on a piece of software whose purpose you don’t fully understand for no other reason than you’ve been told to do so. Any developer will be more motivated and more committed to their work if they fully understand what they’re trying to accomplish.
When a junior developer completes an assignment, be sure they know why this piece of the project was important to the whole. They will feel more ownership of their work, and more urgency when they understand why their work matters. Using tools like Trello or a simple whiteboard can help by adding a visual element—by pointing out how their task is connected to the rest of the project, the whole thing will feel more “real”. Combine this with the “easy win” strategy to build the developer’s confidence at the same time.
Teaching Time Management
No matter how much a CS program or coding bootcamp purports to produce “workplace ready” graduates, there will always be a difference between a learning environment and a professional one. Professional software development companies work at an entirely different scale than all but the best schools. When confronted with this great of a disparity, many junior developers can feel paralyzed, unable to decide where to start climbing the mountain, as it were. A good way of mitigating this problem is by teaching them time management techniques.
A tried and true technique for managing one’s time—no matter what level of experience you are—is timeboxing. Timeboxing is the process of breaking up a schedule into manageable blocks of time dedicated to accomplishing one particular task, along with short, regular breaks. Doing this keeps one from falling into the trap of “five more minutes”, and allows for greater focus on a particular task by removing other tasks from the equation.
This technique is especially effective for junior developers who get lost in the weeds because it forces them to come up for air regularly. When one gets hyper-focused on a problem, sometimes the simple act of stopping for five minutes, or doing something else for a while, is enough to break the cycle. Additionally, timeboxing lets the junior developer adjust to the rhythm of your development cycle, rather than falling into old habits picked up in school. As a mentor, you can help a junior developer manage their time by encouraging them to estimate how long specific tasks will take. Additionally, you can help them break up large, intimidating problems into several smaller ones.
In my experience, an effective variant on timeboxing is the Pomodoro Technique. One junior developer I knew would insist on not leaving their computer until they finished one problem, no matter how specific or small that problem was. I bought them a Pomodoro timer and encouraged them to take a break after 25 minutes, then spend another 25 minutes on a different problem. The effect was immediate; they managed their time much more effectively, and allowed them to be far more productive. Nowadays there are online and phone apps for Pomodoro timing such as Focus Booster or PomoDone, but I personally find a physical timer to be more effective.
Checking In
The point of this article is not that you should hold your junior developers’ hands. After all, you have your own work to deal with, and they won’t adjust well to professional life if you do. However, simply throwing them into the deep end and expecting them to swim isn’t helpful either. Junior developers are still learning, and they will only thrive with the support of their mentors. In practice, the best way to balance mentoring and your own work is by holding daily check-ins with your junior developers.
Checking in regularly benefits both you and the junior developer. When they know that you are around when they need help, and that you care, they feel more confident and able to try new things rather than spinning their wheels with what’s familiar. Be sure they understand that your office is a place where they can ask for help and clarification without judgment. A mark of a mature employee is being able to seek out help when they need it, and you can help foster that ability by being approachable.
At the same time, these check-ins help you monitor the junior developer’s progress and have a better understanding of their grasp. By doing so you can keep their focus on productive matters, and monitor them for signs of getting stuck, or burning out. If a junior developer doesn’t ask for help, it often means that they are fearful of exposing their ignorance or confusion. When you have your check-ins, be sure to ask questions about their progress that they are not sharing independently.
This strategy particularly helped me as a junior developer. I was overworking myself, and the work I was doing wasn’t up to the company standards. My mentor noticed this, and began checking in with me each day. Knowing that my mentor was watching my back did wonders for my confidence and focus. I felt comfortable enough to approach him for advice, which gave me the security I needed to get my head back in the game. Sometimes, just listening to somebody can have a marvelous effect on productivity.
Conclusion
Training a junior developer can be time-intensive, but it can also be very rewarding for your company in the long-run. When you support a new developer through their growing pains, you won’t just have a competent member of your team. You will have an employee who has integrated into your culture and workflow seamlessly. Developers who receive support from their employers early on are loyal employees who can become irreplaceable assets.
The most important thing to remember when dealing with junior developers is to treat them with empathy and patience. After all, everybody has to start somewhere. If you want to foster the growth of a stellar developer, try your best to be the mentor you wish you had when you were in their shoes. If you do so, your hard work will be paid off with interest, and in less time than you think.
Make sure you receive the best practices to guide your team