One of my current customers is also striving to implement a similar process. Currently development occurs in one major release a year and focuses on a monolothic EJB infrastructure. Unlike the previous company, the switch from a traditional waterfall process to a more agile/incremental environment has several challenges:
- History (the current organization was built around a single major release and has done so for many years)
- Platforms (the current infrastructure is comprised of very heavyweight EJB applications that are not flexible/agile)
The organization is tackling this on several fronts:
- Executive Support (most important is to get executive support on the use of a incremental/agile development approach which in turn will directly correlate to performance factors for the business)
- Organizational Changes (re-organizing the development team to focus on services)
- Simplification/Refactoring/Replacement (simplifying the exiting infrastructure for immediate gains and replacing the monolith with a series of simpler services for long term benefit)
- Putting out to pasture (placing the existing monolith into a legacy category thus limiting its scope/usage)
- Training (bringing in external consultants to guide the existing development staff on the best practices and fast track the simplification/replacement strategies).
Overall, I have been trying to do the same with the current ESB infrastructure. Through consistent interaction with operations and my desire to continue to refactor/simplify the production solution, improvements in reliability and customer support have been made. Incrementally I am removing / improving the production solution to make it extensible and more reliable for the large volumes of customer that interact with it. This process will never end and thus like the Toyota commercials, will hopefully result in the Corolla of ESBs (400,000 miles and still going!).