Many, if not most, insurance companies bear the scars of costly and unsuccessful system replacement initiatives. The implementation stories for both custom development and packaged software solutions often have the same unhappy ending - millions of dollars spent, with no or only partial systems to show for it.
Over the past several years, the market for property/casualty insurance packaged software has matured. More and more carriers are turning to packaged software to enable more flexible processes and take advantage of more advanced IT solutions to replace their aging systems. Our experience is that with solid software solutions and an Agile implementation approach, carriers can heal their wounds from past failures and better position themselves for success. While the Agile approach may be better known in the custom development arena, the increasing popularity of packaged software solutions creates an ideal opportunity to take time tested Agile methodologies and apply them to packaged software implementation.
An Agile approach can take many forms, but there are a few core tenets that should always be followed.
Iterative and incremental cycles
Traditional project lifecycle activities such as requirements definition, design, development, testing, and business acceptance are completed within time-boxed cycles (ideally 2-4 weeks in duration), whether the project is custom development or packaged software implementation. Each cycle results in a working iteration of the solution, which is continually refined and improved upon with each subsequent cycle based on business priorities. The beauty of this approach is that progress can be monitored throughout the project's lifecycle and improvements made when needed.
A working system
A working system that meets or exceeds the business goal(s) is the primary means of measuring progress. Frequent delivery of a working solution via the iterative and incremental cycles also helps to reduce the incidence and impact of major requirement or technical changes. Packaged software easily facilitates an Agile approach since the software presumably already has comprehensive business functionality and an architectural foundation to build upon.
The packaged software itself can be used as a requirements definition tool. It is usually easier to validate or further define a requirement, especially a complex one, by interacting with a working system that conceptually supports that particular requirement. When identifying requirements, a business value approach is recommended to ensure that the effort to modify a packaged system to fulfill a requirement is commensurate with the business value it provides.
Team collaboration and visibility
The entire team is encouraged to participate actively in the Agile process and to have unhindered visibility into project status, deliverables, and plans. This includes constant communication between the implementation team, as well as the end-users of the intended system. It is important that the virtual walls between traditional role silos, such as business analysts, developers, and quality assurance analysts, be removed to ensure collaboration between business and IT. In general, collaboration and visibility helps to engage the team and encourages their commitment to implementation success.
Embrace and anticipate change
With Agile, changes are an expected and natural part of the process. With a more traditional Waterfall-based approach, all requirements are expected to be identified upfront, at which point they are designed, built, and tested in sequence; making it much more difficult to make changes along the way. Unchanging requirements are usually not realistic, especially for large, complex system implementation projects. Using an Agile approach, teams are better positioned to adapt, based on additional knowledge, experience, and shifting business priorities.
Characteristics of Successful Agile Projects
The anatomy of an organization that is successful in adopting Agile practices varies, but it typically demonstrates the following characteristics.
The leaders of the organization and of the implementation project must support the Agile process and be engaged to ensure its adoption by the implementation team. This includes the IT and business owners of the system, and the project and program leadership. Without proper leadership support, project teams can flounder, resulting in troubled projects and weak acceptance of Agile.
Defined Agile process
It is a common misconception that Agile practices foster an unstructured implementation environment. To the contrary, the successful adoption of Agile practices actually requires well-defined processes and the diligence to ensure these processes are being followed. The team needs to understand the process and why each step is important. When Agile is new to an organization or if there is resistance to using it, a common practice is to follow several of the core Agile practices to start, and then incorporate additional practices over time. It is important for companies to tailor the Agile process to meet their organization's needs and culture.
Implementation team support
It sometimes takes courage to try something new. This may be required of project team members new to Agile and/or packaged software, especially if they have become entrenched in other implementation approaches and/or custom software development. Trying something new also introduces some level of risk, so we have found that project teams who have courage, curiosity, and discipline are most successful with Agile. The team can be further incented by each successful iteration cycle and positive feedback from key project stakeholders.
Cross-functional teams aligned by functional area tend to perform best when using an Agile approach. This allows team representation of all roles required to complete a functional area, ensuring a broad perspective is applied. For larger implementation teams (>10 people), it is best to have multiple, small cross-functional teams, rather than one large team. In this case, as one might suspect, communication between teams is essential.
Although many Agile projects include a Stabilization phase at the end to finalize testing and acceptance of the system, successful companies also invest heavily in Quality Assurance (QA) during the iterative cycles. Many times, the creation of test cases and automated test scripts are included in the completion criteria for requirements. This allows for test cases and regression testing coverage to be built over time. Utilizing a high quality packaged solution allows companies to focus their testing efforts on the areas where they change the base application, although providing some test coverage for the entire application and architectural components is still important.
While the Agile methodology is not new to the world of software development, it has only recently been embraced by the P/C insurance industry as a viable option for the implementation of packaged solutions. As more insurers utilize Agile processes to deliver successful implementations, we expect to see the adoption of Agile increase. In today's world where most insurers need to 'do more with less' while fostering an organization that can change quickly to remain competitive, Agile methodologies (whether for implementation of software development) offer a proven path to project success.
(Barrett A. Brooks is consulting director, professional services, for Guidewire Software. He can be reached at firstname.lastname@example.org. Aaron T. Howell is senior consulting director for Guidewire. He can be reached at email@example.com.)