Many companies have recognised the need to introduce new practices into their software teams. However, we often hear questions like “How do I convince managers to let us do TDD?” and “How do we get our development teams to pair program?”. In this article, I suggest that by investing in and empowering software development teams, these questions should never need to be asked.
Setting the Scene
Most development teams want to increase the quality of what they are creating. Meanwhile, most management teams want the developers to perform better (i.e. deliver faster and more consistently). We now have good evidence that increasing quality is actually the best way to improve performance. Even so, development and management teams everywhere are still fighting for trade-offs between delivery and quality. For teams to improve quality, there are software development practices such as Pair Programming, Continuous Integration and Test-Driven Development that can significantly help. However, depending on whether the management teams or the developments teams decide to introduce a new practice, we often end up with one of the following two situations:
- Developers forced to do practices they don’t understand or like
- Developers begging for (and being denied) permission to use the practices they want to use
Neither of these situations is good!
Below I offer some suggestions on how to avoid these situations.
Suggestions for Managers
Trust your developers to use the right tools
Practices such as Pair Programming and TDD are the tools of the software developer. With this in mind, it should not be anyone else’s decision whether a development team should be using these tools. Professionals should be trained in and trusted to choose the best tool for the job — you wouldn’t tell the carpenters fitting your kitchen that they should be using a different type of saw.
By stopping a development team from applying a specific practice, you reduce the quality of the product. By dictating that a development team must use a particular practice you may be forcing something which doesn’t work for that team. In both cases, this is dis-empowering the expert software developers by limiting which tools they can use — resulting in lower productivity, lower quality and lower morale.
Train your developers
If you think a team could benefit from using a specific practice, you need to ensure that the team has enough experience to decide if it’s the right tool for the job.
Something as simple as Pair Programming requires more than just sitting two people at the same computer and expecting them to work well together (that said, Pair Programming is one of the easier techniques to get started with).
If you want developers to improve the way they work you have to invest in letting them learn to use new practices. This way, they can see the benefits they provide and are empowered to make their own choice to use them.
Hire expertise into the development teams
Some practices take weeks to learn (and years to master). Test-Driven Development, for example, takes quite a long time before it becomes as efficient as writing code without the tests. Even sending teams on a week-long course will not be enough time for them to feel that TDD is not slowing them down.
If you want to introduce best practices, one of the best ways is to hire people into the team that can teach and lead. They could be permanent employees, contractors or a consultants running an in-team dojo— the important part is they are embedded in the team for an extended period.
Suggestions for Developers
Don’t go hunting for permission to do the right thing
Management teams should be concerned that the developers are delivering the right thing, not how do it. It’s then up to the development team to determine the right way to build and deliver to the requirements. By giving the power to decide which practices to use to the management teams, you invite the opportunity to be micro-managed and be told to drop practices to deliver faster.
As a developer, it’s your responsibility to do a professional job.
2. You have the right to produce quality work at all times
- From the XP Bill of Developer Rights http://www.agilenutshell.com/bill_of_rights
Learn!
It’s easier for a team to adopt a new practice if someone on the team already has experience. If you think that a particular practice might help your team, then spend some time to learn and practice it in your own time. That way, you can be instrumental in upskilling your team.
You should see learning in your own time as an investment in yourself — if you don’t manage to introduce what you have learned into your team, then there’ll be another company who will value it a lot more!
Also, it’s fun to learn new things!
Conclusion
The best way to get a development team to work as well as possible is to invest in making sure they have the right knowledge and skills. Moreover, they need to be trusted and have the power to decide how they work.