I recently had the privileage to listen to Martin Fowler's talk on "Continous Integration and Continous Delivery". Martin gave great insights into how Continous Integration and Continous delivery go a long way in satisfying the customers through early delivery and continous feedback
Having worked with large product companies in helping them transition to Agile methods for a better part of last 5 years, it left me wondering whether what we have been suggesting to our clients is really feasible
Here are some unique things about a large product organization which create a challenge to the above mentioned Agile engineering practices
- The distance of product development team from the actual end users of the product
- Complex products
- Multiple levels of hierarchy between the Development team and the end users
- The knowledge about various components of the product is siloed i.e. you will have component experts for one or more components but not for the whole product
- learning curve for migrating or new team members
So, what should the team do in such a scenario.. Do they abandon the practice totally or should they fight and adopt the practice to maximize the returns
The practical/ logical solution that comes to my mind first is that the teams need to identify their internal customers who would be representatives of the end users' needs. They need to constantly be with the team to review, feedback and innovate the product with the development team. They should preferably user test the product on a simulated product environment where data should constantly be refreshed from a live production environment
The deliveries (executables and dlls) should in turn be fed into the customer release management system managed by the overall product manager who would work with the end customers to agree upon a suitable end delivery heartbeat. This follows the lean kaizen approach where as the team is producing only what the customers can consume ...there is no use giving out releases to the customers if they are not ready to consume. This particularly is the case for high availibility, high volume systems like Banking, Retail, Customer service systems etc.
The success of this scaled up model lies in coordination between the Product Owners at various levels on a continous basis through a series of Product Management meetings which I fondly call the "Product Owners' Forumv(similar to Scrum of Scrums)"
The important part is to follow the essence of the Agile suggested practices and not just the decor..