I’ve had scenarios similar to the following one come up several times over the years. You have someone on your software development team that writes great Java code — and does it fast — but can’t or won’t do much else. Should you remove him from the team? Before you answer that, let’s dissect the situation further.
Ideally, members of an agile development team should have both technical and non-technical skills. You see it in job postings all the time. Assuming the team is building a system using Java as the primary language, knowledge of Java, the JRE, and various Java development tools and libraries are needed skills.
The non-technical skills are more complex. They fall into buckets such as communication skills, team player, customer oriented, quick learner, results-driven, etc. (I don’t know why they leave off “walking on water”.)
Let’s face it, very few of us can do everything well. What do you do with someone who writes great code but falls far short in the non-technical (subjective) areas? I’m sure many managers would say ‘send him to training’. After all, we’re all supposed to work on our weaknesses, right?
Two major obstacles come to mind.
- The developer may have no interest in mastering the non-technical parts of the job. Sending him to training might result in small improvements but major gains are unlikely. In fact, the situation could deteriorate if the employee rebels against the forced subjective behaviors.
- The developer may have an interest in bettering himself but you have to expect that his coding prowess will suffer. How can he continue to write great code at a fast pace while also spending more time on other aspects of the job? It doesn’t add up.
Think carefully before creating a mold and trying to get everyone on the team to fit into it. You might be better off leveraging people’s strengths and offering assistance to cover their weaknesses. As long as the team possesses all the skills needed to deliver the results required by the company, they can be successful. Expecting every member of the team to possess every skill may sound good but it’s unrealistic.
Focus on collaboration instead.
Get team members to help each other and reinforce their abilities. Agile teams are not collections of people who work independently. They need to work together.
As for that Java developer I mentioned above, do everything you can to help him write great code. Have someone else on the team pick up the non-technical aspects of his workload. He’ll be happier and more productive. The team and the business will be grateful.