The front cover of The Mythical Man-Month

The Mythical Man-Month

In the essay No Silver Bullet, Refired, Brooks reexamines his essay No Silver Bullet (aka NSB or last week’s re-read) nine years after its original publication date. Both essays were additions to original 1974 The Mythical Man-Month as Brooks sought to project the course of the software development industry.  As sadam510 pointed out on the blog last week, we have passed out of the traditional Re-Read territory and are now cutting through ‘fresh’ snow.  NSB was originally published in 1986, and NSB, Refired was published nine years afterwards both to address the criticisms and to examine how the world had progressed. 

Brooks begins the essay by addressing some of the misunderstandings that were generated by his particular brand of prose (several readers have commented that these later essays are a reflection of Brook’s involvement in academia, that is, the straight-on writing style of the earlier essays had become more difficult to understand). The first of the misunderstandings he tacked was the distinction between essence and accident. Brooks reminds the readers that the word ‘accident’ was used to mean incidental. The essence of a software application is the logic needed to solve the business problem, while the coding language or development environment are incidental to solving the business problem. The second point of misunderstanding focuses on the how much of the effort or complexity of creating an application was caused by incidental factors versus the essence. Brooks argued in NSB that the essence was the most significant factor, and in NSB Refired he reiterated that stance. While both essence and accidental are meaningful, in order to generate an order of magnitude change, the complexity of the essence must be reduced.

The second thread in the essay featured a rebuttal of David Harel‘s analysis/criticism. Brooks felt that Harel’s criticism was one of the most well-formed, therefore he spent significant effort to rebut it. Harel criticism begins by arguing that Brooks’s conclusions were pessimistic and gloomy.  On the pessimistic side Brooks defended his perspective by suggesting he is at worst he was realistic based on his developer’s background. Developers tend to be optimistic about the ability to solve ANY problem (note Dr. Ricardo Valerdi in his interview on SPaMCAST 84 provided evidence to support this position). Brooks stated that taking an overly rosy view as suggested by Harel of the potential for change was a pipe dream.  In Brooks’s opinion, pipe dreams do not create the pressure needed for progress. On the topic of gloomy, Harel suggested that Brooks perspective grew out of three sources:

  1. The sharp delineation between essence and accident, which he believed was artificial.
  2. The 10-year time horizon used by Brooks was overly short.
  3. Analyzing each silver bullet separately ignored the relationships and potential synergy between the potential silver bullets.

As a thought experiment in the critique, Harel applied the essence and accident analysis Brooks used in the NSB to the development world of 1952. Harel suggests the structure used by Brooks would only fit in a very specific timeframe, and therefore, would not necessary hold in the future. Brooks rejects the thought experiment by pointing that as soon as large-scale systems began to be addressed (approximately 1954), the analysis approach works.

Harel completed his criticism by proffering his own silver bullet based on a system of modeling the concepts of the application (in Brooks’s language, the essence). There was an undercurrent in the essay that many of those criticizing NSB were doing so to suggest a silver bullet. In this case, while Brooks agreed with the idea of leveraging models to identify and develop the conceptual basis of the application, he noted that most developers develop their own highly individualized conceptual models of what they are working on and that they are not typically generalizable.

Another class of criticisms suggests that Brooks’s focus on productivity in NSB was misplaced. Rather, as noted by Caper Jones (former boss, friend, and mentor), the focus should be on quality and then productivity will follow. Brooks suggests whether focusing on quality or productivity the conclusions of the NSB don’t change. (I think I will ask Capers his opinion…)

After reviewing the criticisms, Brooks circles back to review what has happened to productivity in the years between NSB and NSB, Refired.  Capers Jones’ data suggests that for comparable programming languages it had productivity had increased three-fold; while Ed Yourdon had evidence of up to five-fold increases. Large changes, but as Tom DeMarco indicated, not an order of magnitude increase.  In order to understand where the productivity improvement had come from Brooks re-examined some the major categories from the NSB. 

Build versus buy had become a powerful tool (and still is in 2015).  The ability to customize software packages easily has continued to increase the power of commercial off-the-shelf software.  Packages like SAP and PeopleSoft are perfect examples of the increased productivity configurable/customizable packages deliver.

Brooks suggests that object oriented development (OO) represents at least a brass bullet. OO has delivered value and continues to show promise.  Even today OO continues to grow in use and value (even though OO has not fundamentally changed productivity by an order of magnitude and is therefore, no silver bullet). In hindsight from 2015, OO has continued to penetrate and deliver value, but it has not changed the world . . . yet.

Reuse Brooks found was being done in pockets but that it had not spread to the degree he had suggested in NSB  would be needed to actually be a silver bullet. The advent of natural language programming languages may have inadvertently added complexity to adopting reuse programs. Natural languages make finding patterns to reuse harder. While not an insurmountable problem, they add complexity, effort and the killer  – cost, which has slowed the adoption of reuse. My personal observation from 2015 suggests that reuse is still a marginal practice due to the overhead required to identify and package generalized functions.

In the end, despite all of the criticisms and critiques, Brooks’s position is unchanged.  He states that “complexity is the business we are in and complexity is what limits us.” Until complexity is conquered there will be no silver bullets, only incremental improvements. Not that incremental improvement are anything to sneeze at!

Programming Notes:  My version of the Mythical Man-Month includes one large essay, The Mythical Man-Month after 20 Years and an epilogue.  I suspected we will complete the Re-Read in two weeks.  Suggestions for the next book in the series?

Previous installments of the Re-read of The Mythical Man-Month

Introductions and The Tar Pit

The Mythical Man-Month (The Essay)

The Surgical Team

Aristocracy, Democracy and System Design

The Second-System Effect

Passing the Word

Why did the Tower of Babel fall?

Calling the Shot

Ten Pounds in a Five–Pound Package

The Documentary Hypothesis

Plan to Throw One Away

Sharp Tools

The Whole and the Parts

Hatching a Catastrophe

The Other Face

No Silver Bullet – Essence and Accident In Software Engineering

3524125987_298260aede_b

I recently attended a meeting and after about ten minutes I was brought up short.  Everyone was paying attention; not one laptop was open nor was anyone reading an email or text under the table.  People were taking notes “old school way”— on paper. The meeting ended on time after 25 minutes, meeting the objective and with the promise of meeting minutes.  I was shocked by the efficiency and effectiveness, and as a result I lingered after the meeting to discuss my observations with my sponsor.

Why is the more typical behavior to be tethered to multiple devices while juggling several projects or tasks? It is more than just a new corporate culture; rather our need for connectedness is based not just on how we see each other, but on how we see ourselves.  Our behavior is grounded in a combination of interlocking facts, self-knowledge and illusion. The keystone illusion that drives this need for hyper-connectedness is the illusion of control. The Illusion of control that we embrace allows us to believe we can script our progress through our career and that we can understand and predict the future like some sort of omnipotent being. In order to build that illusion of control we need build on three basic separate and distinct illusions. Each of these illusions is self-reinforcing.

Returning to my “old school” example, my sponsor indicated that recently meetings at her company were a mirror of many other organizations, lots of hardware and lots of miscommunication. The straw that broke the camel’s back was a senior management session where the CIO was asked the same question twice in less than five minutes.  The CIO levied a $50 fine for an open laptop that is not being used for the projector or the use of a cell during one of his meetings.  Extreme?  Even without the fine, the behavior change filtered through the organization. My sponsor indicated that the meetings had become shorter, as a result, and more effective and happened less frequently.

Passing aside what, without measurement, might be just the party line, why is this an important discussion?  Because once upon a time answering email during a meeting would have been viewed as rude. None of this would make any difference if there weren’t consequences. The whole hyper-connectedness, which has permeated even our most private spaces, causes us to spread our attention, our greatest asset, too thinly. Fractional attention makes you think that we’re progressing; it makes us think that we are important; it makes us think that we can multitask. In reality, fractional attention means that we actually get less done. The three illusions that are required to support the illusion of control are the illusion of progress, the illusion of multitasking and the illusion of importance.  Each of this can be issues in their own right, but together they shape how we behave.

First, the illusion of progress
Focusing on activities such as starting many tasks, participating in many projects or simply texting and answering emails while pretending to listen at a meeting gives an illusion of making progress. The thought is that we can switch in between these activities when we get downtime so that we can perfectly fill our day and be highly effective and efficient.  In reality, we are masking issues by confusing being busy with effective progress.

Second, the illusion of multitasking
In past essays I have dealt with this topic. We don’t multitask; we fast switch. Additionally, lean theory tells us that trying to split our attention between multiple tasks increases the possibility of doing none of them well.  In the work place, true multitasking is rare.  The data shows that generally humans are not really very good at true multitasking in the workplace. Linda Stone noted in the Huffington Post that people tend to stop breathing while they answer email. She even named the malady email apnea. If you need more examples just reflect on the data concerning cell phone usage and driving. Or if data doesn’t work for you, then try writing code while answering emails. Computers, on the other hand, are really good at multitasking and no matter the number of processors we have on our desktop we have not crossed that chasm to become full cyborgs yet . . . or perhaps that will be the outcome of hyper-connectedness.

Last, the illusion of importance
Hyper-connectivity has both positive and negative traits.  It allows us to connect with people and teammates across the globe, a positive except losing a few hours of sleep here or there. Advocates argue that this promotes greater collaboration and facilitates the sharing of ideas.

But it has a darker side in that it can lead us down deep rabbit holes through the implied urgency that each new message creates.  It can also make small issues appear larger and more influential than they really are which again demands our attention.

In a recent talk at Ted, Sherry Turkle stated that hyper-connectivity, with the problems it creates, has become more pervasive than just in a few meetings.

People text or do email during corporate board meetings. They text and shop and go on Facebook during presentations People talk to me about the important new skill of making eye contact while you’re texting.  People explain to me that it’s hard, but that it can be done. Parents text and do email at breakfast and at dinner while their children complain about not having their parents’ full attention. But then these same children deny each other their full attention.

Our electronic tools have been presented to us with the promise of delivering an ability to more closely integrate networks so that tasks, issues, changes, gossip and noise never fall through the cracks.   Content is always available. How many of you sleep with your smart phones next to the bed (or closer) just in case something you need to know happens during the night. Frankly, few of us are that important. However, instant and indiscriminate communication provides an illusion of importance, which reinforces the need to share information as well as to seek it. The act of constant foraging for data makes it difficult to focus on the speaker in a meeting or even responding to an important text message.

 

Stairway to Heaven

Albert, the King of Belgium was a hiker. When he visited Brazil 1921 a set of 117 steps were carved into Pico da Tijuca (a mountain outside of Rio). According our guide, King Albert was quite taken aback by the steps as they were at odds with his expectations.

Delivering without consistent business feedback is apt to miss the mark. Software methodologies have struggled to find mechanisms to generate feedback. Techniques have used to date have included Phase gates, reviews and sign-offs to enforce agreement. Agile leverages collaboration methods such as daily interaction with the business or product owner to generate communication and feedback.  While both might end up same place the journey counts for the long run health of the organization.