10 Agile Software Development Tips
No. 1: Agile is not one thing
Agile development methodologies are a set of approaches to software development that share a common philosophy but are sharply distinguished in the details of their implementations. They therefore tend to be adapted to different sorts of problems. Sophisticated organizations with a lot of experience may well use more than one of these approaches, but an organization that is getting started should select one approach and master it before attempting other approaches.
No. 2: Agile is not a “pick’n mix” methodology
Agile methods are highly systematic. Every component element of the methodology is crucial to the success of the methodology. A common mistake is for an organisation to embrace some elements of an agile methodology, such as the sprint, but to ignore or play down other elements, such as managing “technical debt.” Such organisations enjoy the kudos that comes from rapid development and release of new code, but they are storing up trouble by failing to address technical debt.
No. 3: Embracing agile is a joint business-IT activity
The full benefits of agile cannot be achieved without engaging with business leaders, management and the user community. If the rest of the business does not have an immediate appetite for working in a new way, careful planning and communication will be needed to bring different communities of managers and users on board.
No. 4: With agile, it is important to walk before you try running
Experienced agile practitioners can tackle large-scale developments — the equivalent of climbing Mount Everest. But it takes many years to develop the necessary skills to be able to take on such large-scale software projects. Any organisation that is starting out on the agile journey needs to start in the foothills to develop the confidence and competence to take on larger tasks.
No. 5: Embracing agile is embracing continuous learning
Agile practitioners must be committed to continuous improvement in quality and cost-effectiveness, which means that every development is analysed for lessons that can be used to improve policies and working practices. This analysis and learning are not the responsibility of a small number of senior practitioners; they are fundamental components of the workload of all agile practitioners. Furthermore, the learning is not just appropriate to the programmers who are directly involved in software development; it is also essential for all the related skills, such as project management, architecture, quality assurance and IT budget management.
No. 6: Agile is about teams and teams of teams
The basic organisational unit of delivery in agile development is a small team, typically expressed as “seven, plus or minus two” people — both developers and quality assurance. From an HR perspective, managing agile teams involves walking a fine line between keeping productive teams together and moving individuals between teams to encourage cross-fertilisation of ideas. If people are moved too frequently, the teams fail to develop into highly productive units; if people are not moved between teams enough, then each team starts to become isolated and diverges from the other teams. It is important to note that physical location of teams is much more important with agile methods than with conventional approaches to development.
No. 7: Documenting, managing and eliminating technical debt is a core concept of all agile methods
Technical debt is the difference between the state of a piece of software today and the state that it needs to be in to meet appropriate and necessary requirements for quality attributes such as reliability, performance efficiency, portability, usability, maintainability and security. All development creates technical debt. The difference with agile methods is that technical debt is recognized and added to the backlog, not swept under the carpet. Any organisation that seeks to embrace agile methods must put in place the necessary elements of the chosen method dedicated to ruthless refactoring and the elimination of technical debt.
No. 8: Working with third-party development service providers on agile development demands special care and attention
Many user IT organizations have a long history of outsourcing application development to specialist service providers. While there is a role for service providers in agile development, it is a very different commercial model and a very different engagement model. Since colocation with business users is axiomatic to agile methods, the opportunities for sending large amounts of work offshore are somewhat limited, so some form of supplemental staffing is likely to be a more useful model.
No. 9: The impact of agile goes well beyond the software development teams
An integral component of the agile methodologies is the concept of “continuous delivery.” Agile methodologies are predicated on continuous engagement with business managers and users, and lead to the delivery of a continuous stream of new and modified software into the operational environment. This demands significant changes in working practices for both business governance and relationship management and the infrastructure and operations teams.
No. 10: Other software development methodologies will still have a place in your portfolio
In most commercial and public sector organisations, the application portfolio will present many different classes of development problems, some of which will be well-suited to agile, while some may be better-suited to incremental, iterative development and some to a modified waterfall model. Agile is not “better”; it is simply better-adapted to some problems, but not so well-adapted to others.
The big questions: How many IT service providers have software development teams? And how many of those teams have embraced the Agile development model? Channel E2E will be pursuing answers to both questions in the weeks ahead.