My son is 14yrs old. I’ve been consistently trying to encourage him to do two things. One, think ahead to the next logical outcome and two, do it right the first time. When he helps with projects around the house, he has a tendency to get it to an “almost complete” state. For example, recently he went out and mowed the backyard. I told him beforehand to move some brush (thorny rose trimmings) that needed burning, so that he could completely mow the yard. At the end of the day, he comes in with a look of victory and accomplishment and proudly states, “I’m done!” (as with all chores assigned to my children, their definition and my definition of “done” are quite different). Unbeknownst to me, my son has informed his mother that he can’t move the thorny rose trimmings because he can’t find his gloves (separate father/son lesson) and so therefore cannot mow that specific area and has instead opted to mow around.
Stepping into the backyard, I notice that the brush pile has not been moved, and so I asked my son why. I was immediately informed that he “told mom” and that he could not locate his gloves. I’m not sure why he thought this would be accepted. However, let’s suppose that I overlook this and give him a pass because it’s just too difficult a task (outside of scope) to move the brush pile right now. The next thing I notice is a bright orange 5 gallon Home Depot bucket, equipped with a handle, that was apparently too difficult to move and also required mowing around. The mentality of “something is in the way, I’ll mow around it” became acceptable behavior to him, which ended up leading to the undue stress of having to put his dirty shoes back on, pulling the mower back out and finishing the work.
In my regular discussions about “being Agile” with the developers here at SmartBear and with customers when I am on the road, I often get varied and interesting thoughts on this subject.
- “Being agile means there’s always a second chance”
- “Agile gives you freedom to be proactive and this is the topmost value”
I don’t know how to make these two statements more opposite of one another. On one side of the coin is “don’t worry too much about it, we’ll keep iterating.” On the flip side of the coin is “let’s get it right the first time.”
The challenge with my son’s approach to chores is that he must go back a second time. This frustrates both of us. I can’t understand why he doesn’t do it right the first time and he can’t fathom why his first attempt wasn’t good enough and why I would demand more from him.
Although the sentiment that teams that embrace agile processes can iterate and get it right the second time is somewhat true, this doesn’t truly align with the agile manifesto or principles. At the end of the day, not finding and putting on our gloves (implementing the appropriate process corrections early in the development cycle) to address the thorns or pick up the bucket causes undue stress downstream. I don’t believe for a minute that developers are intentionally mowing around issues like my son. However, I do think that as a team (product, dev, QA) we can look at a situation and say, “we’ll iterate until we get it right.” Yes, this is one benefit to a continuous delivery model, but the sweet spot is in finding the right balance between quality and agility. As the principle states, “Continuous attention to technical excellence and good design enhances agility.”
Technical excellence, or quality, cannot exist without the right tools and processes to foster constant communication. Communication with customers, business people, developers, QA, support, etc. ensures that we are looking for the thorns and the buckets early in the process and addressing them when we find them, ensuring quality and agility, rather than declaring too early that we are “done.”