The objective of agility in software is to fulfil evolving customer requirements while delivering high quality software on time and within budget. A number of agile methodologies have been developed promising to achieve this objective. But their adoption has proven to be challenging leading to cargo culting and bikeshedding practices that challenge project success. A review of Agile Manifesto and principles of agile methodologies distills them into 3 fundamental components. This talk suggests that a disciplined pursuit of these fundamentals while adopting agile practices increases an organisation’s chances of success.
Reduction is key to agility. It is of fundamental consequence to not just iteration planning and execution but in all aspects of project execution. Smaller stories simplify estimation, implementation and pivoting in addition to reducing intra-team dependencies. Smaller merge sizes reduce risk of merge conflicts and enable focused reviews leading to better code quality. Fewer technical dependencies make software flexible. Fewer inter-team and intra-team dependencies increase flow. Finally smaller team sizes focused on features and functionality enhance team cohesion and reduce inter-team dependencies.
Focus ensures that teams’ eyes are on the prize. Sprints need to be thematic focused on delivering end-to-end features that can be demonstrated to customers to obtain and act on feedback. Large features may not be completely delivered in a single sprint. In such cases, sprints may be grouped into packages which incrementally deliver features. Hence packages, unlike sprints, may not all be of the same length but all sprints within a package must focus on incremental completion of a feature. Cross functional teams tend to deliver end to end features better than technology specialist teams.
Finally, visibility is essential for teams to review their progress and make arrangement to reduce risks. It is important to create necessary and useful information radiators for the team members. These include sprint dashboards showing the progress on stories, burndown charts and defect trends. Additionally RAID (Risks, Assumptions, Issues and Dependencies) and logs dependency matrices highlight risks that teams face in achieving their targets.
Omar Bashir graduated as an avionics systems engineer and transitioned to software engineering after his post graduate education. He has developed systems in diverse domains ranging from defence and telecommunications to logistics and finance. He has been programming in Java since its release in 1996.