InfoQ

News

The Trouble With Systems

Posted by Kurt Christensen on Dec 27, 2006 08:00 PM

Community
Agile
Topics
Methodologies
Tags
Value & Metrics
Matt Heusser has written a new piece about the problems inherent with excessively detailed systems and processes, and how this relates to agile software development. According to Matt, the trouble with rigid systems is threefold:
  1. Modeling system effects is hard
  2. The more complex the system, the more variables
  3. The more variables, the more interactions, reactions, and unintended consequences
The result, says Matt, is that in trying to specify everything, overly-complicated systems aren't able to meaningfully specify anything. So how does this apply to agile software development? Matt offers CMM as an example of the overly-specified system:
This is a huge part of the problem that CMM(I) and ISO 9000 have. They want to be one-page descriptions that say "Do the Right Thing" or "Do Good Work", but you need to define "Good" and "Right", and to try to do that... while dealing with all of the variables in software development is, well ... hard.
Agile has been criticized for not being sufficiently prescriptive, but many agile methods - Scrum in particular - assert that rigid definitions are the problem and not the solution. From "The Philosophy of Scrum":
Scrum states that the systems development process is an unpredictable, complicated process that can only be roughly described as an overall progression. Cookbook, step-by-step approaches do not work because they aren't adequately defined and don't cope with the unpredictability of systems development.
To summarize, Matt quotes from software testing expert Michael Bolton:
If your project has dug itself a hole, your process ain't gonna pick up the shovel.

Related Sponsor

VersionOne is recognized by Agile practitioners as the leader in Agile project management tools. Companies such as Adobe, BBC, CNN, Dow, HP, IBM, Sony and 3M have turned to VersionOne to help deliver greater value to their customers.

No comments

Watch Thread Reply

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.