Laziness may be one of the Seven Deadly Sins, but it can be a virtue in software development. As Matt Osbun observed:
I often refer to myself as a lazy developer. Occurred to me that people might not get the reference. pic.twitter.com/zmjDZjkTd6
— Matt Osbun (@MattOsbun) February 6, 2015
Robert Heinlein noted the benefits of laziness:
Progress is made by lazy men looking for easier ways to do things. – Robert Heinlein #quote
— Tim Fargo (@alphabetsuccess) February 3, 2015
Even in the military, laziness carries potential greatness (emphasis mine):
I divide my officers into four groups. There are clever, diligent, stupid, and lazy officers. Usually two characteristics are combined. Some are clever and diligent — their place is the General Staff. The next lot are stupid and lazy — they make up 90 percent of every army and are suited to routine duties. Anyone who is both clever and lazy is qualified for the highest leadership duties, because he possesses the intellectual clarity and the composure necessary for difficult decisions. One must beware of anyone who is stupid and diligent — he must not be entrusted with any responsibility because he will always cause only mischief.
Generaloberst Kurt von Hammerstein-Equord
The lazy architect will ignore slogans like YAGNI and the Rule of Three when experience and/or information tells them that it’s far more likely that the need will arise than not. As Matt stated in “Foreseeable and Imaginary Design”, architects must ask “What changes are possible and which of those changes are foreseeable”. The slogans point out that engineering costs but the reality is that so does re-work resulting from decisions deferred. Avoiding that extra work (laziness) avoids the cost associated with it (frugality).
Likewise, lazy architects are less likely cave when confronted with the sayings of some notable person. Rather than resign themselves to the extra work, they’re more likely to examine the statement as Kevlin Henney did:
I continue to be disturbed by number of people who cite Knuth's caution against premature optimization, but do not understand what it means.
— Kevlin Henney (@KevlinHenney) March 11, 2015
It is often taken as caution against optimization, but it cautions against *premature* optimization — the adjective is not incidental.
— Kevlin Henney (@KevlinHenney) March 11, 2015
It’s far cheaper to design and build a system according to its context than re-build a system to fix issues that were foreseeable. The re-work born of being too focused on the tactical to the detriment of the strategic is as much a form of technical debt as cutting corners. The lazy architect knows that time spent identifying and reconciling contexts can allow them to avoid the extra work caused by blind incremental design.
Reposted from Form Follows Function.