Channels ▼
RSS

Tools

Pragmatic Development


In many IT organizations, there is one true "religion" that defines how projects are undertaken and managed. The methodology of the day is faithfully adhered to and non­believers are pressured to convert. A given IT religion can last a long time, then suddenly be abandoned when people lose faith in its efficacy or its primary evangelist leaves.

When this happens, all the progress made under the prior method is often deemed of little or no value, and reinvention becomes the order of the day.

These abrupt shifts in IT approaches aren't new. They've been going on for more than 40 years and can occur in any number of subsections in the software development life cycle and IT practices, such as enterprise architecture, IT service management, and project and portfolio management. And, of course, software development is particularly prone to it.

The numerous software development methodologies a company considers represent many community-specific articulations of processes and practices. Over time, these fragmented approaches can become inward looking and bloated, with overlapping and inconsistent practices from potentially competing methodologies. As their overstated benefits decline, IT organizations change methodologies, which is one of the most fruitful sources of waste and expense: Each time an organization embraces a new methodology, it triggers a large change management exercise. Within IT, this change typically involves a three-to-five year process that results in the following direct costs for a 1,000-person IT organization:

  • Consulting, training, and mentoring costs to go from novice to competent, and even expert, using Stuart and Hubert Dreyfus' skill acquisition model. For 1,000 people, this can cost $1 million to $2 million.
  • Knowledge management, to avoid the risk of relying on tacit knowledge in the heads of coaches and consultants. If performed, the capture of standard work, or "our way of working," results in more than $1 million in costs related to process-related software.
  • Changes in approach can also trigger the need for new process management tools. Cost can range from free to $1 million or more.
  • Costs related to putting a new software delivery infrastructure in place. Hitting the reset button can cost upward of $5 million.

One hidden cost that frequently exceeds all the other items put together is lost productivity due to employees resisting change because they prefer or are just comfortable with the previous way of doing things. McKinsey's study "Organizing For Successful Change Management," on strategic change initiatives, such as TQM, Lean Six Sigma, and business process reengineering, finds that about 70% of the investments into these initiatives fail to achieve the expected outcomes.

Gartner estimates that worldwide IT spending last year was $1.6 trillion, with IT services at $816 billion as the largest component of that figure. Typically, 3% to 10% of the IT services budget allocations can be associated with pro­cess improvement initiatives, so we can estimate that $17 billion in spending is doomed to not deliver the intended results (70% of $24.5 billion). And that doesn't include opportunity costs associated with failed process improvement and costs associated with lost productivity during the change.

Additionally, some portion of total worldwide IT spending last year is only implicitly allocated to process improvement, which could be thought of as "just-in-time" process improvement during a project. So if we believe that 14% of software engineering efforts are outright failures (see Dr. Dobbs 2010 IT Project Success Rates), that's another uncounted cost.

Software development methodologies are "more akin to fads and fashion than engineering discipline," according to the Software Engineering Methods and Theory Initiative. And it's safe to conclude that the hidden and indirect costs associated with these methodologies represent a very large number indeed — one that's not declining at a discernible pace.

Isolation vs. Integration

When searching for a solution to the problem of switching among software development m"ethodologies, it's instructive to look at the history of software development approaches. Software methodologies have endured a high degree of branching and differentiation. The question with all of this history and the explosion of "named" methods that naturally arises is, "Are they really that different?" In fact, there are just three main lineages of modern method development — lean, agile, and unified process.

Over time, each of these branches resulted in various branded methods based on the corporate experiences out of which they emerged. Lean approaches trace their roots back to manufacturing, specifically to the study of the Toyota production and product development system. The unified process is derived primarily from risk-averse environments, such as finance, defense, and aerospace. Agile emerged from a business climate where tight time-to-market expectations and flexible requirements are the norm.

Each branch started from a much smaller set of experiences.

Unfortunately, the constant differentiation has resulted in what we have today: a jargon-filled confusion of siloed tribes made up of uncollaborative zealots.

While it's reasonable to assume that no two software methodologies are exactly the same, it's equally reasonable that no two are entirely different. One naturally might conclude that common ground does exist. Is there some way to harvest past experience without reinventing the wheel?

A good place to start is by taking one or more practices from each of the three lineages that reasonably deliver value within the software de­livery constraints you face. Such an approach should include specialized contributions and focus on harvesting pragmatic experience, not reinventing your process.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video