Agile software development is sometimes perceived as an undisciplined way of working. There are organizations which use that perception as an excuse to not adopt agile. According to others agile is actually a more disciplined approach than waterfall for software development. Let’s explore how discipline plays a role in agile and why discipline is considered important for agile to be successful.
Norberto Gaona wrote about don’t underestimate discipline: the real key to agile development on Nearshore Americas. He interviewed people about the importance of discipline in agile software development. His conclusion:
The consensus is that you need to get to know the Agile Software Development Manifesto and its twelve principles inside out. Development professionals agree that, no matter which framework you chose to work with – whether it be SCRUM, Kanban, Lean, XP, Agile Modeling etc – there is always the risk of misinterpreting or deviating from these principles; resulting in a lack of discipline.
For agile software development it is important to find a good balance between the items mentioned in the agile manifesto, which requires discipline as Norberto explains:
According to the manifesto for Agile development, the individuals and their interaction with each other are valued higher than the tools and processes being used. “Although this doesn’t mean that processes and tools don’t play their part,” notes [Juan Diego Vasco]. “Agile development methodologies do require documentation, just not to an excessive degree,” he states. “If you think that working within an Agile framework means working without methodology, you are greatly mistaken. In fact, it requires above average discipline as it involves a self-managing team.”
Agile is not an excuse to practice an undisciplined code-and-fix approach to development as Scott Shipp has stated in his blog post agile is not code-and-fix. He explains why he considers agile to be a stronger and more disciplined software development methodology:
Many traditional approaches provide a false sense of discipline. Agile emphasizes individuals and collaboration, working software, customer collaboration, and responding to change. Some people think Agile doesn’t value things like following a plan or using processes and tools. Rather Agile values these things, but emphasizes these other things over them. In other words it’s not proposing lack of discipline but emphasized discipline.
In 9 myths about agile on CIO Journal Eric Bristow explains why the myth that agile processes are less disciplined and structured than those of waterfall is not true:
Mature Agile frameworks prescribe a disciplined, repeatable approach to implementing software. Successful Agile implementations are more process-driven and coordinated than traditional waterfall implementations. From scope management (via user story prioritization) to project management (via defined roles and events), Agile requires more discipline because a project’s scope is actively managed from planning to launch, with stakeholders reviewing progress at set intervals and providing feedback every step of the way. The flexibility of this process includes built-in safeguards (e.g., suppressing the addition of new requirements or user stories in the middle of a sprint) to prevent never-ending release cycles.
In a slideshow on IT Business Edge Felipe Brito presented five ways to scale agile for the enterprise. He explains that organizational learning and discipline needs to be fostered when enterprises want to scale agile:
Jurgen Appelo explained in his blog post really, can you be agile and not disciplined? how a disciplined way of working can lead to agility. He gives examples how he uses checklists and tagging to deal with information that he uses for writing books:The concept of self-organized teams shows us that agile tackles the fragilities of older, prescriptive methodologies with more discipline, not less. And as agile is extended through the enterprise, discipline must be extended as well. Give your teams freedom, but make sure they are trained and leverage validated methods and tools. This fine balance between autonomy at the team level and integration at the organizational level is essential for success. You must also build communities of practice, establish collaboration tools for globally distributed teams and always source and provide feedback.
Last week, I asked someone to check his personal story, which I had included in one of my new book chapters. He replied, “Wow, I sent you that story two years ago. I’m amazed you still remember!” Well, to be honest, I don’t have a memory that good. What I have is discipline. I have folders in Gmail and in Evernote where I dump the stories and notes that people send me, and I tag all data with keywords. I also have a checklist item for each chapter requiring me to “add stories from Gmail and Evernote” which I must do before the chapter goes to the copy editors. I have another checklist item telling me to “confirm edited stories with their authors” which must be checked after the chapter comes back from the copy editors and before it goes to the proof readers. (…) Seriously, I don’t see how I could produce a quality book, in an Agile way, without my checklists.
How important is discipline for you when adopting agile software development?