While playing golf with my son the other day, the meaning of “Agile” came to me. Me a fully grown man and my son a slight 9 year old, surely no competition!
On the 3rd hole I hit my driver 250 yards off the fairway into the rough. My son (only hits an 8 iron), struck the ball 60 yards down the middle of the fairway. On our second shot, I hit a 6 iron out of the rough into the rough on the other side of the fairway, while my son again went 60 yards down the middle of the fairway. This pattern continued until the hole was completed.
Final score on the 3rd, me 8, Alex 6.
So, what did this teach me about “Agile”? Agile is all about taking shorter, more accurate steps to deliver benefit at each stage and completing the goal more quickly.
In contrast to being agile, a publisher recently told me that it can take in excess of 12 months to make system changes and introduce them into the business, only to find out that the situation has changed and the new enhancements don’t meet the current business needs.
In a changing world this can’t be the way forward. Software development and deployment needs to be agile! The question is how can shorter steps be taken? Surely shorter, incremental developments will take longer as the product will still need to go through a full test, release and installation cycle.
The answer is to architect your solutions as a platform rather than a point solution. Companies/products that have done this successfully include Microsoft Dynamics CRM and SalesForce.com. They do not change the product for different customers; however the solutions that are delivered cover a wide range of industries, geographies and business needs.
This is because the products are supported by a framework, which dynamically couples user interface, business logic and workflow.
There are many advantages, including:
- Ability to introduce new incremental features, without the need for a full release
- Isolated testing, ensuring business continuity and minimal disruption
- The ability to use local/in-house development teams
- New features can be “tried” in the real world and adapted to more closely meet the business need