Share this
Agile development – the importance of discipline
by Ray Cooke on 29 March 2016
In my last blog post, The most badly implemented, yet most critical, technique in agile projects, I briefly mentioned discipline as being important. In this post I explore this further and dispel a couple of myths associated with Agile development.
Waterfall approaches facilitate poor discipline
Waterfall projects, the bigger the better, are almost designed to create good hiding places for poorly disciplined people.
The Project Management community has had a huge amount of experience managing waterfall projects; just take a look at the thickness of the latest version of the PMBOK and you can see the volume of material in support of helping PMs manage waterfall projects.
We've learnt through the years that we need to leave longer than we'd hope for the testing and defect fixing phases, the user acceptance testing (UAT) phase and the release phase. We've also learnt to build in a fair amount of contingency and we've learnt that businesses keep changing their requirements and that we'll need to be careful to manage them so that it doesn't blow our budgets.
One of the reasons we have all of these contingencies and buffers is that despite our best intentions, every individual in every function involved with the project generates errors; they are human after all. Whether it's in clarification of requirements, implementing a feature incorrectly, missing a boundary condition on a test, accidentally not trying one of the functions when signing off in UAT, or even in accidentally releasing the wrong version of a file into production. All of these potential problems need some contingency built in to cater for them.
This is in effect doing no more than the medical profession does with the flu, which is to alleviate the symptoms. If we're building in extra time to handle all the defects that arise, why as a developer should I bother improving the quality of my code? Why as a tester does it matter if I miss a boundary condition since we'll pick it up next time around? Why as a system administrator does it matter if I deploy the wrong file, I can just fix it after post-release testing - after all the release window would be long enough? And frankly, as a developer again, since I'm only delivering my code to the testers and then leaving the project, why should I care if it's what the end user wants? In short, many of our controls and risk management approaches on waterfall projects have been driving the wrong behaviours.
Quality is King in Lean and Agile development
Now, enter stage left, the Agile technologist. He or she is expected to frequently deliver valuable software to clients. There is an obvious change in emphasis.
For a start I've intentionally made the profession irrelevant. That's obviously not to say that there aren't separate functions, however, the statement applies to all of them, in whatever combinations they exist.
Secondly, there is an expectation that technologists can respond to a moving business agenda. We need to be able to respond to change quickly; we need to “be agile”. We are also expected to be efficient, or lean, which means we don't want to be wasting time fixing problems we've introduced ourselves, we want to be working on the useful, value delivering, interesting needs of the users and the business. We want all of this and this is what our organisation expects of us.
To be nimble and efficient however, we need to optimise our value. We can't change direction if we haven't delivered the last thing asked of us and we can't be efficient if we're spending half our time fixing defects.
Whether you're a believer of the cost-to-fix curve and its applicability to modern development methods or not, it makes sense to take whatever steps possible to ensure we aren't generating problems in the first place so that we don't waste our time having to fix them. Bluntly, we haven't got the time to do so and still meet our employers' and users' expectations of us.
It follows then that quality is crucial to our success. Gone are the days of "acceptable defect counts".
Removing stage gates requires greater team and individual discipline
To be more efficient at delivery we align our organisational structure against communication lines in the delivery chain. We do this by creating cross-functional teams. This allows us to increase our delivery frequency... to a point.
The limiting factor from a delivery efficiency stand point in most organisations moving to cross-functional teams is existing stage gates, committees or groups designed to "protect" the business from changes made by IT. Sadly, these are a necessity for organisations that align teams by function because there are no organisational structural drivers to encourage individuals to worry about anything outside of their own part of the process. This leads to local per-function optimisation rather than optimisation of the whole delivery system and the former tends to result in quality problems and eventually unhappy users.
On moving to a cross-functional team structure, the drivers change and the accountability moves closer to the teams. This is a significant cultural change.
To get more efficiency, control has to be decentralised, which means changing the remit of, or removing, those stage gates and committees in the process. Decentralising control requires help and trust. The difficulty though is that humans are error prone. Frequently when we encounter these errors our instinctual reaction is to put controls in place to ensure it can’t happen again. These controls often take the form of check-lists, a reduction of authority, or a re-centralisation of control. These will all however negate those efficiency gains and also erode trust.
Given the drive for increasing release frequencies, the need for high quality levels, decentralisation of control and the requirement to maintain trust we can see the case building for agile teams needing to be a lot more disciplined than their waterfall counterparts.
How to become more disciplined
Of course building self-discipline is a whole problem and challenge in itself and there are whole books on the subject.
I personally use Jurgen Appelo's approach as a reference, from his book Management 3.0, which identifies 4 key ingredients to self-discipline:
- The realisation that something is important.
- Basic time management
- The requirement to not forget!
- And possibly the hardest: to be motivated.
We can all help each other, our colleagues, our staff, and even our bosses become more disciplined. Don’t necessarily expect your manager to know or help you with this!
We can reinforce messaging around why discipline is important in Agile development and we can teach basic time management skills, like creating schedules, recurring appointments, distinguishing between urgent and important tasks and so on. We can also use tooling such as reminders, work flow tools, task lists, physical work boards, definitions-of-done and so on.
Motivation as mentioned above is one of the hardest to help with but, still paraphrasing from Management 3.0, fun is closely correlated with motivation so if we can find ways to make the tasks more enjoyable then this can only help!
Next steps
Thanks for reading. Hopefully I've convinced you that discipline is important for Agile development teams and you've got some pointers on how to help yourself and others become more disciplined. There are some tasks that are a constant struggle to maintain self-discipline on. My personal nemesis is putting together project reporting, but seeing that it's used by the people I'm reporting to, throwing in some recurring reminders in Outlook and using templates to keep the reports easy to produce, I find I can normally get them done. Good luck and let me know how it goes.
If you've found this post useful the please let me know about your experiences in the comments or click the Like button at the top so I know this is what you're looking for and I'll keep writing!
Ray Cooke is a Lean and Agile business transformation coach, based in Equinox IT’s Wellington, New Zealand office.
Share this
- Agile Development (153)
- Software Development (126)
- Agile (76)
- Scrum (66)
- Application Lifecycle Management (50)
- Capability Development (47)
- Business Analysis (46)
- DevOps (43)
- IT Professional (42)
- Equinox IT News (41)
- Agile Transformation (38)
- IT Consulting (38)
- Knowledge Sharing (36)
- Lean Software Development (35)
- Requirements (35)
- Strategic Planning (35)
- Solution Architecture (34)
- Digital Disruption (32)
- IT Project (31)
- International Leaders (31)
- Digital Transformation (26)
- Project Management (26)
- Cloud (25)
- Azure DevOps (23)
- Coaching (23)
- IT Governance (23)
- System Performance (23)
- Change Management (20)
- Innovation (20)
- MIT Sloan CISR (15)
- Client Briefing Events (13)
- Architecture (12)
- Working from Home (12)
- IT Services (10)
- Data Visualisation (9)
- Kanban (9)
- People (9)
- Business Architecture (8)
- Communities of Practice (8)
- Continuous Integration (7)
- Business Case (4)
- Enterprise Analysis (4)
- Angular UIs (3)
- Business Rules (3)
- GitHub (3)
- Java Development (3)
- Lean Startup (3)
- Satir Change Model (3)
- API (2)
- Automation (2)
- Scaling (2)
- Security (2)
- Toggles (2)
- .Net Core (1)
- AI (1)
- Diversity (1)
- Testing (1)
- ✨ (1)
- August 2024 (1)
- February 2024 (3)
- January 2024 (1)
- September 2023 (2)
- July 2023 (3)
- August 2022 (4)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- March 2021 (1)
- February 2021 (2)
- November 2020 (2)
- September 2020 (1)
- July 2020 (1)
- June 2020 (3)
- May 2020 (3)
- April 2020 (2)
- March 2020 (8)
- February 2020 (1)
- November 2019 (1)
- August 2019 (1)
- July 2019 (2)
- June 2019 (2)
- April 2019 (3)
- March 2019 (2)
- February 2019 (1)
- December 2018 (3)
- November 2018 (3)
- October 2018 (3)
- September 2018 (1)
- August 2018 (4)
- July 2018 (5)
- June 2018 (1)
- May 2018 (1)
- April 2018 (5)
- March 2018 (3)
- February 2018 (2)
- January 2018 (2)
- December 2017 (2)
- November 2017 (3)
- October 2017 (4)
- September 2017 (5)
- August 2017 (3)
- July 2017 (3)
- June 2017 (1)
- May 2017 (1)
- March 2017 (1)
- February 2017 (3)
- January 2017 (1)
- November 2016 (1)
- October 2016 (6)
- September 2016 (1)
- August 2016 (5)
- July 2016 (3)
- June 2016 (4)
- May 2016 (7)
- April 2016 (13)
- March 2016 (8)
- February 2016 (8)
- January 2016 (7)
- December 2015 (9)
- November 2015 (12)
- October 2015 (4)
- September 2015 (2)
- August 2015 (3)
- July 2015 (8)
- June 2015 (7)
- April 2015 (2)
- March 2015 (3)
- February 2015 (2)
- December 2014 (4)
- September 2014 (2)
- July 2014 (1)
- June 2014 (2)
- May 2014 (9)
- April 2014 (1)
- March 2014 (2)
- February 2014 (2)
- December 2013 (1)
- November 2013 (2)
- October 2013 (3)
- September 2013 (2)
- August 2013 (6)
- July 2013 (2)
- June 2013 (1)
- May 2013 (4)
- April 2013 (5)
- March 2013 (2)
- February 2013 (2)
- January 2013 (2)
- December 2012 (1)
- November 2012 (1)
- October 2012 (2)
- September 2012 (3)
- August 2012 (3)
- July 2012 (3)
- June 2012 (1)
- May 2012 (1)
- April 2012 (1)
- February 2012 (1)
- December 2011 (4)
- November 2011 (2)
- October 2011 (2)
- September 2011 (4)
- August 2011 (2)
- July 2011 (3)
- June 2011 (4)
- May 2011 (2)
- April 2011 (2)
- March 2011 (3)
- February 2011 (1)
- January 2011 (4)
- December 2010 (2)
- November 2010 (3)
- October 2010 (1)
- September 2010 (1)
- May 2010 (1)
- February 2010 (1)
- July 2009 (1)
- April 2009 (1)
- October 2008 (1)