How agile principles of ‘done’ can help you as a Software Developer
“But it’ll only take 2 minutes”
It’s a hopeful Friday afternoon on a busy week. You are furiously crunching code to push that last feature out and call it a weekend. But then it happens!… The dreaded shoulder tap and the eerie voice speaks: “Hey, buddy…about that drop-down list on the products page, Can you make it yellow and add a new item to the list?… I’m sure you should be able to do it right away, just a minor fix and nobody even needs to know. Easy peasy!”
You turn around dumbstruck and catch Business Bob staring at you with anticipation. You try to resist and explain but words fail you…“But… you know it takes…”, unconsciously you feel your head nod in acceptance.The damage is done!
Sounds too familiar? It’s everyday life you might say perhaps. We, engineers, are often bombarded with such 2-minute requests. They either distract temporarily or drag our development longer without adding any value. We have been guilty of saying yes time and again, feeling powerless, and unable to convince otherwise.
But hear me out! yes, there is a way out. It’s called The Definition of Done. or DoD in short.
What is it anyway?
“Definition of Done is a shared understanding of expectations that the Increment must live up to in order to be releasable into production. Managed by the Development Team” —Scrum.org
In simple words, it’s just a checklist of what your work needs to meet to be considered done. Think of it as a pre-flight safety checklist. The pilots can take off safely only if every item is checked off. Similarly, DoD is a list of activities/criteria that your piece of work needs to have met, to be considered done and fit for production.
A DoD for the team helps bring a common shared understanding of what the finished work item looks like and what it takes to finish it. It automatically helps the team to deliver higher quality and control scope creep.
Here’s a sample DoD from one of my previous teams. You can see that it’s a list of all the activities and criteria covering development to testing and all the way to deployment.
A DoD from the author’s team
But what’s in it for me as an engineer?
- Shield you from distractions — and interruption with last-minute change requests. When Business Bob comes to you with such an interruption, you now have a written checklist to point to and say: “I’ll be happy to do that… but this is our DoD!, and every item has to pass through this. It will take time. Lets take this as new change, we’ll prioritize and get to it after the current items are done or if its urgent, i’m afraid this item will have to replace something already in progress. Are you ready to take that risk?”
- Advocates for your work — by showing the complexity and effort it takes you to get an item to “Done”. When anyone asks, “What do you engineers do all day anyway?”, You have a documented checklist to educate them. Software development is hard work and it’s challenging to paint that picture to those stakeholders without a Definition of Done.
- Lesser bugs to worry about — with unit testing, code reviews, refactoring and pre-deployment checks baked into your DoD, you can be more confident about the quality of work.
- You can focus on building what matters — We engineers want to build good stuff, a detailed DoD forces you and your team to start making an effort to work only on high-value items and throw away the fluff. While choosing between two requests, you will choose more consciously. You are now aware of all the stringent steps and effort it takes.
- Makes you trustworthy — whom would you trust? a local mechanic concealing details on the work done and just saying “everything is fine with your car!” or a professional, who also says “everything is fine with your car!” and also hands out an 80 point checklist assuring every detail was looked at while servicing. I hope it’s the latter. Similarly, when you have a DoD your stakeholders and clients trust you better and allow you more freedom, they are assured of your focus on quality and delivering value.
- Shows unwanted waste and opportunities to automate — just going through the process of creating your DoD will reveal much waste in your workflow. You might discover a bunch of manual activities that you could easily automate.
But I’m not even on an Agile team
It doesn’t matter! Really! Have you noticed that I haven’t mentioned Agile or Scrum or Scrum master anywhere (Until now)? DoD is a powerful tool for anyone.
You may be in a non-agile team or a one-man show freelancer. The Definition of Done will benefit you nevertheless.
Alright, I’m sold! How do I do it?
You don’t need to spend an awful lot of time to arrive at a perfect Definition of Done. The best thing about DoD is that you will revisit it periodically and it evolves as your product and development grow. Here’s a simple way to start…
- With your team(developers, testers, Business Analysts… everyone), think of all of the high-level activities that you normally engage in to get a work item done. Put them down on a sticky (or on a virtual board).
- Group similar and identical items together.
- Arrange these groups on a timeline from beginning to end. From the first activity to the last.
- Come up with a headline activity for each of the groups. You might end up with headlines like requirement definition, technical design, test planning, coding and unit testing etc.
- Then, define what is needed to accomplish each of them focusing on the deliverables, outcomes and conditions. For instance, the Test planning headline item may be defined in your case as — Test plan published and test cases committed to git.
Voila! You have your first Definition of Done.
Run with this first draft of Definition of done for an iteration or a release. Then, review it again with your team. Look at what were the activities done outside DoD to get work done? Should they be included in the list? Does your Definition of Done cover almost all that’s required to take an item from design to production? repeat the process until you get there!
We engineers love to build things that matter without any interruptions. The Definition of Done is that essential tool that will protect us and help us stay focused.
Thank you for reading!