This is one of my favourite principles and here’s why.
To deliver well crafted, well thought out software takes time, skills and patience. It’s not enough to just deliver software, it has to be well crafted, as software is usually not delivered once but is improved upon over time. This makes it crucial that the software delivered is flexible to add new features and be maintainable.
Estimate with diligence
I’ve written before how difficult estimation is and how it’s not exact science. At the same time estimations are important for various reasons.
Having weekly iteration we get quicker feedback on how much value we are adding, in addition by
estimating stories so they are ideally only a day’s worth of work, once each story is completed, we immediately have feedback of the value with added. The sooner the value is seen by the client, the sooner a discussion can take place.
Another benefit of having weekly iteration is that it’s easier to estimate what can be delivered in a week rather than 2, 3 or in 4 weeks time. In 2+ week iteration scenario, if a story is not delivered, it is not dealt with until the next iteration which could be a couple of weeks ago. When this happens, it’s tempting to start replacing a story around and insert the story that may not be completed. This can lead you down a dangerous path if it’s handled properly.
Working at a sustainable pace
Simply put it, overworking leads to mistakes, mistakes lead to low quality work. Our brains have limited
In the course of a day we have limited amount of high attention[Anderson], working long hours does not always produce our best work. As the days winds down so does our high attention. By the time we are exhausted and we really should go home but we continue working, that’s when we begin making more mistakes, taking shortcuts, writing ‘clever’ code’.
I’ve experienced burn out before, nothing good has ever come out of it. You begin to refactor late, write terrible code and all you want is to deliver something and anything. This is not the right attitude. I’ve begin making a conscious effort to manage this by using various techniques. Such as the Pomodoro technique, giving myself a hard deadline on features. Asking for help after I’ve spent some time with a problem. Pairing with fellow colleagues haas also helped, a problem shared is a problem halved.
It’s about working within our capacity so we provide better value for our client.
Anderson, John R. (2004). Cognitive psychology and its implications (6th ed.). Worth Publishers. p. 519. ISBN 978-0-7167-0110-1.