A project manager friend once said that rigid processes and systems end up being roadblocks to innovation. I am sure he was wrong, but there is a message to consider - All of us grow up with CMMI processes all around us, and by the time we start managing projects, we have KPAs running through our veins, and we end up being hardened process geeks, or shall I say "processistas". Nothing wrong with that. These time tested processes that we religiously follow: from requirement gathering, thru 'build' to implementation methods produce amazing results.They increase predictability, and maturity, while reducing risk,etc. But sometimes, just sometimes, we get boxed in and find it difficult to think outside of the processes. That's when injecting a dose of "agile" into our system can make a difference. Especially when we are dealing with a world where paradigm shifts are common place. This is exactly what we did while managing projects for a client, resulting in amazing success.
The client was in the midst of a large organizational transformation program, building their Enterprise Resource Planning (ERP) system from scratch. Before Infosys, the program was perennially troubled for over 2 years, with no deliverables to show. So when we came in for one large project in that program, we started with incomplete requirements, a business team with no confidence in the program, and stiff time-to-market and budget constraints. The client wanted the project to be delivered in 4 months. The processistas in us took us straight to the scheduling system that told us that the client was kidding us . We did pass on the advice to the client, but if we had stopped there we would have lost multi-million dollar revenues over the next 2 years. Instead, we created a tailor-made end-to-end development process for this client, taking our regular methodology and accelerating this by applying some agile principals. For this, we did the following:
The As-Is process
- Analyzed as-is process and methodology
- Created a tailor-made development process
- Applied innovation to make every step of the Software Development Life Cycle more efficient
- Educated the client
The client was following a half-baked agile methodology when we walked in. There were some obvious issues with their process, especially in the context of a large program with multiple development groups and diverse stakeholders. Some of these are listed below:
- Due to the lack of Requirements management, Requirements Analysis (RA) was moving in circles for 2 years,loosing the complete trust of businesses.
- The starting code was built before the requirements were complete. This lead to continuous rework at a catastrophic level.
- Since there were many independent development groups, not having design artifacts - such as the Data Model - created immense churn in the program.
- Down-stream projects - such as data migration and reporting - struggled because of changing design and data models.
- A lack of project or program management structure, leading to a lack of predictability.
The client was then informed about the issues in their current process, and that delivering the entire program with decent quality, in a few months was impossible for for anyone. Consequently, we sported our innovation hat, and started creating a solution tailor-made for this client.The Tailor-made Suite
After analyzing the client's process we started creating a development methodology that would work. A typical waterfall would not work, as we had to show some deliverable to the client early on to bring back confidence in the program. At the same time, given the size of the program, the diverse teams, and stake holders we couldn't do a pure agile. We, therefore, needed a strong and mature methodology, but with a dose of agile to accelerate the process and support stiff time-to-market needs.
We decided to go with an iterative development methodology
, splitting the first project into iterations:
- Initial discovery phase to arrive at an iteration plan and detailed SME plan
- Each iteration runs from requirements through user testing
- Detailed project plan provided at end of RA for an iteration
- Separate teams and Project Managers for the first 2 iterations to expedite process
- Created a strong RA process, using In-Flux, that brought back user confidence
- Creation and freezing of Data Model at program level
- Created a strong program management structure, including Risk and Change Management
We incorporated some 'Agile' principals into our methodology:
- Iteration and feedback-based: Feedback from one iteration was used in the next for improvements
- Efficient: Strived to make each stage as efficient and lean as possible
- Optimized: Continuous improvement at every stage
- Strong Customer Involvement: Strong SME team identified to expedite RA. Also, continuous feedback received from this SME team at every stage
- Continuous Integration: Work done by all development teams would be integrated fully before every release, thereby reducing downstream risk
We also spent time educating the client about problems with their process, the need for a strong management framework, and how their current timelines and plans are infeasible. After some initial resistance, the client started to realize that their timelines wouldn't work and started to have faith in our solution.The Triumph
Moral of the Story
- We successfully delivered the first 2 iterations, and that brought immense confidence into our solution, process and capabilities
- We won all subsequent development projects, some from other vendors, and followed a similar methodology for development
- The program on track to go-live, winning back business and executive stakeholder confidence
- Multimillion dollar revenues from this client over the last 18 months. Project running the gamut, including testing, Data Migration, and Enterprise BI
- Primary vendor for the client, and we now control over 90% of the program
- Trusted partner of the CIO
Let's all continue to be hardened processistas, after all that's what is expected out of us and that's what really put us on the map, but let's also have an agile mindset that brings in flexibility and nimbleness - In conclusion lets be "Agile Processistas"
Written by Deepak Pillai, Project Manager, Energy Utility Services