The biggest challenge for most software companies is hiring developers, according to Coding Sans, but keeping them happy has a big impact on productivity and turnover.
A SHRM study found that replacing a salaried employee costs between six to nine months’ salary—that’s $45,000 to $67,500 for a developer making $90,000 per year! High employee turnover also tends to lead to lower team productivity and less engagement from other developers on the team.
In this article, we will look at the qualities of an ideal developer and how to build upon those qualities to maximize your development team’s productivity.Keeping your existing developers engaged maximizes efficiency and minimizes turnover. Click To Tweet
What to Look for in Developers
Most companies have no idea how to hire a good developer—that’s why job boards are full of terms like “rockstar” or “ninja”. On the other hand, a “software developer” can mean anyone from a computer science graduate from a top university to someone that just completed a six month coding bootcamp.
The best developers are problem solvers (not coders) with T-shaped skillsets. They have a broad understanding of how everything fits together but they’re experts in a single area. They can take important software concepts, like SOLID, and apply them in various different languages and frameworks.
T-Shaped Developer Skills – Source: Scrum.org
Interpersonal skills and business knowledge can be even more important than technical skills for most businesses. Great developers work well with others and recognize the business trade-offs associated with their decisions. A single developer that’s not a good fit can throw off an entire team.
Finding the Right Team Structure
The most efficient teams start small because communication is easier and each person makes an impact. With fewer people, you can afford to hire senior level developers that will make better design decisions. The improved code base and tight-knit team even makes hiring new developers a lot easier down the road.
Each developer on a team should be responsible for their own portion of the project. For example, a web application might require a front-end designer, backend developer, and a devops specialist to handle server details. That way, everyone is maximally engaged and working to their strengths.
Teams should always be managed as a meritocracy rather than a democracy. While it’s tempting to give everyone a voice, personal convictions shouldn’t get in the way of technical correctness. The most knowledgeable people should be trusted to drive the technical decisions for the project.
Promoting Personal Development
Daniel Pink’s Drive suggests that motivation boils down to mastery, autonomy, and purpose. Developers must be constantly challenged in an environment that enables them to work autonomously toward a well-defined goal. If these needs aren’t met, they will be less productive and more likely to leave.
Developers should have a well-defined career pathway within an organization. Junior developers should have a set pathway to become mid-level and senior developers over time. At some point, developers interested in becoming managers should have an opportunity to take a different track to realize those goals.
Personal development plans are another great way to structure downtime to maximize career growth. Encourage developers to refine their plan and offer guidance on their projects—even when it’s not directly related to their work. These educational efforts can ultimately benefit your organization.
Pair programming is a great way to share knowledge and build relationships if the development team is colocated. Two developers work at the same workstation with a driver writing code and the observer reviewing each line. The roles are frequently switched for each developer to gain experience.
Remote or distributed teams may find it difficult to pair program. Screen sharing apps can make pair programming possible if time zones line up, but in some cases, it’s just not feasible. Code reviews can be a good alternative in these cases to promote discussion between team members.
There are some tasks in every project that are boring and tedious. Often times, it makes sense to outsource some of this work to outside groups to enable your existing developers to remain challenged in their roles. We specialize in providing this team augmentation form of outsourcing development.
Our developers work alongside your development team to take on less challenging “busy work”, such as refactoring legacy code, integrating APIs, or improving test coverage. That way, your developers can focus on higher value tasks that take full advantage of their talents and prevent burnout.
Developers should have easy access to tools or services to continue honing their craft. You may want to provide them with a set educational budget that they can spend on any courses that they see fit, or purchase a team subscription to a single repository of educational courses.
Our 10X Dev Academy provides an educational program designed to teach developers about what really separates top developers from the rest—not just technical skills. We found this to be a great way to get everyone on the same page within a team and ensure that everyone is working most efficiently towards a goal.
The Bottom Line
Hiring great developers, finding the right structure, and promoting personal development are three great ways to maximize developer productivity and minimize turnover over time. Encouraging personal development is an especially important strategy to keeping developers happy and productive.
Well-defined career pathways, pair programming by default, team augmentation, and continuing education are essential strategies for promoting personal development.
If you’re interested in learning more about our team augmentation services for your organization, please contact us for a free consultation to discuss your project. You can also check out the 10X Dev Academy as a resource for training your developers to work at their peak performance.