I had written a blog earlier on ‘how agile are you : an assessment”? It created some debates on various types of agility across the enterprise.. ‘Agile for me’ is not the same as ‘agile for you’. We are agilist, hence we dont impose any one person’s version onto others.. We are quite free to adopt the methods we choose. Yet, the question remains.. What kind of agile delivery patterns / models suits best for what kinds of business needs ?
Thanks to Rakesh, I have this nice illustration with which I can share with you the evolution of agile across different types of IT application scenarios.
As you can see here, the degree of agility ( ability to deliver early value to business ) goes up as you move up the chain.
I will explain the legends here a bit so that you can easily read the diagram. The blue blocks represents the three enterprise agile scenarios. On the left side the delivery patterns are explained and on the right side, the life cycle is illustrated. The orange ‘dot’ shows at what stage in the project life cycle you would start getting business value. The green area shows indicative savings with respect to effectiveness and efficiency.
At the bottom of the stack, you can see the waterfall, that does not need any explanation Just note when you are realizing the earliest business value in this model (orange dot) !
Above the waterfall, you see the pattern for Enterprise packaged software like ERP systems and enterprise data Warehouses. It can be debated whether they really need an up-front design before going ahead with iterative and agile deliveries. Please keep in mind that here we are talking about implementation scenarios and these systems are already developed. While implementing for the clients, these systems can be customised and implemented in an iterative fashion. This fact is re-inforced by large companies like SAP these days where they are embracing agile delivery patterns. Note that the earliest business value realized is when you reach few sprints into iterative delivery (deploy into production).
Next we move up to the classic requirements of ‘Custom Application development’. Most of the government contracts and large enterprise application needs come in this form. There normally tends to be some sort of clarity in the requirements (at least at a high level) because most of these projects normally get outsourced or get executed with a fixed budget in mind. They are hardly exploratory. In this case, the high level requirements can be estimated, and then move into an iterative agile delivery model. Take care of the fact that we are ‘not’ advocating upfront design. Architecture and design has to be evolutionary to adapt any changing requirements and non-functional needs like scalability, performance, etc. The earliest business value in this case if much ahead of the previous model.
Now we reach the top of the stack, and the highest level of agility we can see these days are with innovative product companies, e-businesses where the agile engineering practices are widely promoted. The concept of Lean start-up and continuous delivery is a must if you want to compete amongst that crowd. Something to ponder if you are product company, or operate in a volatile and changing business environment. Agility here would mean innovation, see and evolve, Minimum Viable Product (MVP), etc. The investment is in small increments and the business value realized is much early. A typical model for modern Internet based businesses. This kind of delivery is highly unlikely in large enterprises unless you are in a front-office functions of volatile businesses like investment banks.
Now you can see that once we identify our business context into these three boxes, it would be very easy to map out what should be the agile practices, agile processes, agile tools etc you would need to deliver. This realization would pave way for evolving from one delivery model to the next in a step-wise fashion, as well as knowing when to pause.