Amir Kolsky, Rob Neppel, and Jim Trott talk about eight essential skills that developers need to acquire to work in an Agile transformation. Some of these skills are certainly taught in university; some are not as common… but are still essential. These are essential for any professional developer.
The essential skills are:
- Programming. The programmer needs to know how to program. The act of taking a design and implementing it in a language and environment.
- Design. Creating a good Object-Oriented design based on design patterns. Depends on understanding the specification. The challenge in Agile is that the specification is always changing. You need to know how to create emergent design. TDD helps here.
- Refactoring. Pre-factoring (before you make changes to the code) and Post-factoring on legacy code to deal with the code smells.
- Analysis: Domain analysis and technical analysis. Working with stakeholders to understanding the specifications and to create specifications up front on what is necessary. ATDD is essential here. Communication is critical here because developers are actively engaged in every aspect of the process. ATDD and TDD helps to facilitate communication.
- Testing. This can be learned from the testers in the organization.
- Estimation.
- DevOps. Looking further down the value stream, extending the definition of done into deployment. Continuous Intergration is just the start of this.
- Process Improvement. This is a discipline that the entire team must embrace.