Simplicity
From a 2012 post that I wrote after attending a somewhat surreal theatrical performance …
… We went to a play called Zero Cost House. It was part of the Philadelphia Live Arts Festival; presented by Pig Iron Theatre Company; written by Japanese playwright Toshiki Okada. It was about Okada himself, and the profound influence Thoreau’s Walden and the 2011 tsunami/Fukushima nuclear disaster have had on him. Much was said about simplifying life, reducing possessions to the bare minimum … indeed, living in a “zero yen house” similar to the three by six foot box described by Thoreau.
We discussed the play through dinner, and off and on through the night, and we still are quite confused (particularly by the people in the bunny suits) …
"A man is rich in proportion to the number of things which he can afford to let alone." (Henry David Thoreau 1817-1862. Walden 1854)
As we develop and deliver software solutions, we should do so with attention to simplicity:
§ We should focus on the highest priority business value first and foremost
§ We should deliver only what will be used – no more, no less
From the article: Agile and the Fine Art of Gathering Application Requirements
"A 2002 study from The Standish Group ranks the usage factor of features across the average enterprise software system. Their findings show that on average only 7 percent of an enterprise application features are "always" used, 13 percent of the features are "often" used, and 16 percent are used "occasionally." That leaves 64 percent of the features in an average enterprise application as either "rarely" or "never" used."
I’ve seen this percentage of feature-bloat quoted as anywhere from 40 to 80 percent. The point is, rather than gathering comprehensive requirements up front and building a plan to deliver it all … if you prioritize the highest business value features and deliver them first, you will probably find that you just don’t bother with the rest. Timely satisfaction of the business need is accomplished not by relentlessly pounding the false precision of a detailed scope and plan created long before details can be known. It’s accomplished by not wasting time on pointless tasks. Here are a few more simple principles in pursuit of this end:
§ Defer decision on critical or irreversible elements as long as possible. Gather more information, and wait before committing to a schedule or solution. If you commit too soon, the rework will probably blow the schedule.
§ Conversely - wait as long as possible, but no longer. Especially on less critical topics, do not become paralyzed by indecision. If you’re stuck on a high value feature and time is ticking away, ask “what’s the worst that can happen if we do it this way and turn out to be wrong?” If the world isn’t going to end, make a decision and get on with it!
§ Don’t cherry pick the easy stuff in order to make the project look like it’s on or ahead of schedule. Chances are, you’re working on some of those low priority features that users can ultimately do without. If you do them, you probably will blow the schedule.
§ Maximize the work NOT done.
Our relentless focus should be on keeping projects moving forward in service of the highest business value. In our decisions regarding solutions, as well as the methods we use to create them, seek simplicity.
The following quote (usually paraphrased as “Everything should be made as simple as possible, but no simpler.”) can be applied to topics as complex as splitting atoms, and as relevant to our day to day lives as our methods of software development:
“It can scarcely be denied that the supreme goal of all theory is to make the irreducible basic elements as simple and as few as possible without having to surrender the adequate representation of a single datum of experience.” (Albert Einstein 1879-1955. On the Method of Theoretical Physics 1933)
More specifically related to agile principles, here’s an excellent multi-part blog 7 Key Principles of Lean Software Development
https://www.101ways.com/7-key-principles-of-lean-software-development-2/
And finally, thinking about the envisioning of the features of a software solution (delivering what is needed – no more, no less) as well as the specification of those features … the inspiration for my title, and the only part of Strunk & White’s The Elements of Style that I clearly remember and often quote, Section III … Omit Needless Words:
“Vigorous writing is concise. A sentence should contain no unnecessary words, a paragraph no unnecessary sentences, for the same reason that a drawing should have no unnecessary lines and a machine no unnecessary parts. This requires not that the writer make all his sentences short, or that he avoid all detail and treat his subjects only in outline, but that every word tell.”