The Risks of Adopting the Wrong Approach

In Achieving success in large, complex software projects Sriram Chandrasekaran, Sauri Gudlavalleti and Sanjay Kaniyar of McKinsey (1) advocate moving from a functional delivery model that is silo based to one that is based on cross-functional teams that are module orientated. There are two problems with this model that I would like to raise.

The first is that the article describes large project as complex in nature without understanding that in a complex system behaviour is emergent. There is a short introduction to complex system in the recently published Cynefin paper on InfoQ (2). One of the key points is that no amount of analysis or planning will lead to understand of how a complex system will develop. They are dispositional in nature and therefore have a tendency to evolve in certain directions but this is not given and cannot be assumed. In this type of system the only viable delivery strategy is one that iterative/incremental in nature which allows you to manage for development of the systems in a desired direction. Trying to base the delivery based on a set of point in time requirements is unrealistic and fundamentally flawed, which the agile community has known for years. Simply moving to a cross functional model will not address this fundamental issue with traditional delivery models. As an aside Brian Appleyard (3) notes, in his most recent book, that simple solutions don’t work for complex problems.

The paper goes on talk about grouping of the work based on use case to support these cross functional teams so that can operate in parallel. This assumes that work can be grouped by use case but it does not elaborate on how, this in itself will support parallel working. One of the key things that you need to ensure is that the use cases are disjoint and one way that you can ensure this is by relating them to capabilities (4), along the lines of domain driven design (5). This allows for partitioning of the problem space and for parallel stream of work to be undertaken. This allows you to manage the parallelism which is mentioned as an issue with agile practices. It is not really an agile issue but one that is generic in nature of large programmes.

References

  1. Achieving success in large, complex, software, July 2014
  2. Cynefin 101 – An Introduction, July 2014
  3. The Brain is Wider Than the Sky: Why Simple Solutions Don’t Work in a Complex World, Bryan Appleyard, Sep 2012
  4. The Next Revolution in Productivity, Ric Merrifield, Jack Calhoun, and Dennis Stevens, Harvard Business Review, June 2008
  5. Domain-driven Design: Tackling Complexity in the Heart of Software, Eric Evans, Aug 2003

5 responses to “The Risks of Adopting the Wrong Approach

  • Anthony Green (@anthonycgreen)

    I would substitute “manage for development of the systems in a desired direction” for “take advantage of emergent beneficial business opportunities”. Serendipitous discovery and opportunities to exploit exaptation are not emergent when ‘managing in a desired direction’

  • broughamg

    Anthony, even Dave acknowledges that you need a direction and typically quotes Seneca “If a man does not know what port he is steering for, no wind is favourable to him”. This is not to say that serendipity and exaptation are not to be exploited. I don’t see the positions as mutual exclusive so would add the text you’ve suggested.

  • Greg Brougham

    Anthony, that’s not excluded as the complex domain is the domain of multi-hypothesis. Any coherent argument (and here we are talking about messy coherence) should be explored but within an idea you need to consider the amplification and damping strategies (as the system is non-linear). This does allow for emergence and evolution of the system

  • Anthony Green (@anthonycgreen)

    In his latest series of blog posts Snowden writes:

    “In the complicated world of order there is a right answer which can be discovered, mediated and socialised with the right evidence or expertise, such systems are both aggregative and reductionist in nature.

    In a complex system on the other had there is no right answer, just a range of coherent potentialities. The system is constantly co-evolving and exapting in unpredictable and unreadable ways. ”

    I interpreted the use of ‘port’ as a synonym for ‘right answer’. I can’t envisage a way unpredictable outcomes can be steered towards. Exploited certainly, in the way fair winds can, but not managed.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: