Clearly mainstream agile practices such as Scrum and Extreme Programming (XP) require discipline. For example, effective Agile teams have the discipline to:
- Hold short, focused, and to the point daily coordination meetings rather than infrequent and time consuming status meetings. It requires discipline to keep these meetings focused on coordination activities and thereby short and to the point.
- Commit to delivering a set of work items each iteration rather than letting deadlines slip. It requires discipline to consistently fulfill the promises that you make to your stakeholders.
- Remove impediments in a timely fashion rather than procrastinating in pursuing a solution. It requires discipline to tackle tough issues that are easier to ignore in the short term.
- Take the time to write tests before code rather than writing code, It takes discipline to consistently work in a test-first manner instead of leaving testing to some time in the (distant) future.
- Test to the best of their ability instead of throwing artifacts over the wall to testers or reviewers. It takes discipline to actively take responsibility for the quality of your own work.
- Reflect on the team’s experiences and improve their processes proactively rather than relying on process dictated by project managers or external governance bodies. It takes discipline to stop and take time to reflect on how well your team is working and then act to improve it.
- Have a continuously working, integrated, and tested solution rather than waiting to do so when you’re “done” at the end of the lifecycle. It takes discipline to stop all work when the build is broken so that it is repaired and the state of working, high quality solution is restored.
- Work together in a common area rather than in comfortable but isolated workspaces. It takes discipline to work effectively in a team, to do so in a respectful and trusting manner.
- Collaborate constantly with the stakeholders or their representative(s) to ensure that their expectations are met. It takes discipline to accept that it isn’t your place to define the requirements or set priorities, particularly when you believe that you know better.
- Create and evolve deliverable documentation continuously throughout the project. It takes discipline to accept that there’s more to successfully solution delivery than producing potentially shippable software.
- Self organize and plan the team’s work amongst themselves rather than relying on a traditional project manager to define, estimate, and assign work. It takes discipline to take responsibility for your own work and to respect the collective decisions of your team.
In our next few blogs we’ll discuss how Disciplined Agile Delivery builds on these practices to take discipline to the next level within the Enterprise.