Over last 12 years or so that I have been closely associated with agile, I was pained to see teams so narrowly focused on one agile method and often ignoring good aspects of the other methods that they missed a great opportunity to benefit from them. What follows is an attempt to borrow useful parts from different agile methods like Scrum, Kanban, Lean, and Scaled agile and express them in a language that is not tightly bound to the practices of these methods. It is focused on the intent by looking at why we do what we do.
01 – Team composition and maturity
A closely knit small group keeps working together for a long period. Members have a good rapport and work together as a team despite being at different locations. Team is empowered to take decisions it is capable of taking. There is greater emphasis on team performance rather than on individual performance. Members proactively raise potential risks and are capable of saying “No” when needed.
02 – Agile tool support
A good agile management tool is made available. Information in the tool is kept up to date as & when events/changes are happening. During meetings and discussions, the agile tool status is referred to. Board design, alerts, and notifications facilitate communication and collaboration. Trends are visible and exceptions are revealed through a dashboard and reports.
03 – Preparation & planning for successful completion
For each requirement, the team knows the required end-date and completion criteria early enough to ensure timely completion. The definition of ready is in place and the requirements are clear to break down in tasks so as to start execution early enough to ensure timely completion. Based on past performance, team knows its capacity to deliver both in terms of output (size) and input (efforts). The team is aware of its dependencies & risks that might delay the completion. Team backlog contains items required to fulfill higher-level commitments as well as the work required to enhance team capabilities.
04 – Successful execution despite uncertainties
Based on the commitments made, the stories are categorized into must-have and good-to-have, where the proportion of good-to-have is adequate to cover the extent of uncertainty. While calculating available capacity for the current iteration, planned leaves and anticipated absenteeism is taken into account. There is a clear agreement on the nature & timing of changes that can be accepted by the team, and it is adhered to despite the pressures of the situation. At any time, the team is aware of commitments made and capacity available to meet them, to help identify items at risk of not getting completed in time. On a daily basis, the team identifies options to match remaining work to remaining capacity, and comes up with actions to mitigate the risks.
05 – Sharing and Alignment
Before start of a major milestone/release the team gets a chance to participate in discussion with the client to know about important functional and non-functional aspects and the expected business benefits. The team is involved in tentative breakdown of the total work of a milestone/release into a set of iterations based on priority and capacity available, which can be progressively refined. The whole team is part of the grooming/sizing discussions with the client and uses the opportunity to get clarity about upcoming work, thus saving time of the iteration planning meeting. The whole team participates in the daily review & re-planning meeting to be aware of dependencies and risks to timely completion. The whole team participates in the iteration-end demo and retrospection to understand the improvement needs and plans.
06 – Continuous learning
The team has a culture of open and frank discussion, so that the real issues surface and are constructively sorted out. The team makes use of every group interaction (grooming & sizing, iteration planning, daily standup, demo, and retrospective) as an opportunity to learn from experience and keep improving. The identified improvements are planned and tracked with same rigor as the work items. The agreed upon improvements are religiously practiced till they become a habit. Checklists are used to keep reminding us of necessary steps till it becomes a habit.
07 – Better Quality
Individuals and teams give themselves credit only for fully integrated and tested software. Quality enhancing activities are identified as explicit tasks and effort required is considered while sizing which reflects in velocity. Continuous integration is in place and is designed to catch mismatch between dependent parts of the system at the earliest. Continuous refactoring is in place as stories in the team backlog for improving the code base without changing the external behavior. Once every two weeks a demo of the current state of the full system is given to all the stakeholders including development management, business owners, and customers / customer proxies.
08 – Better productivity
Baseline velocity is correctly established by considering all necessary tasks (functional & non-functional) for successful completion during sizing of stories. The team continuously looks at every effort spent against value added, so that non-value-adding activities can be eliminated. The team is always on the lookout for all automation possibilities, not just test automation, but any activity / task that can be automated. The team knows their information needs and takes proactive steps to ensure that such information is available in time with required clarity. The team identifies dependencies and helps build a culture of commitments and promises, so that no time is wasted in repeatedly checking for completion by others.
09 – Better Agility
Team backlog is prioritized, and ready with enough items to keep working, so that no time is wasted in back & forth discussions. The team is aware of its dependencies & risks that might delay the completion. Each stage in the flow knows what the previous stage (within the team or outside) has completed its work so that smooth flow can be maintained. Team members keep a watch on items that are blocked or moving slowly so that immediate help can be sought from others. Team members keep a watch whether a queue building between stages so that upstream resources can help downstream to balance the capacity.
10 – Team leader
Team leader acts as a team backlog owner and provides an effective interface between the team and the other stakeholders. Team leader keeps a close watch on Quality, Productivity, and Agility to ensures that team’s work is aligned with business needs. Team leader helps the members to take decisions, and progressively delegates appropriate decision-making to let the team become self-organizing. Team leader protects the team from undue outside interference to ensure smooth and uninterrupted flow of work. Team leader has a good grasp of agile and effectively guides the team in using appropriate practices consistent with team’s context.
The 10 areas cover different aspects of the work of software development. The statements under each of these areas help trigger possibilities normally missed out. In my consultancy work, it is helping me guide the project teams to come up with better improvement actions.