Editor's note: This is the first in a series of three monthly articles by Joel Collamer focusing on agile software development, exclusive to InsuranceTech.com. Be on the lookout for the next edition in early August.
Across the globe, insurance companies view enhanced information systems as the most critical ingredient for achieving their strategic business objectives. At most insurance companies, the software development process is highly inefficient and many have experienced major multi-million dollar software development failures. Improving software development processes is critical for achieving objectives.
One means for doing so is adopting "agile” software development techniques. These techniques were borrowed from the successes of lean manufacturing, and were outlined for software development a decade ago with the signing of the Agile Manifesto, which was intended as an antidote to the inefficiencies and massive failures encountered with heavyweight software development processes.
Other financial services verticals, such as banks and hedge funds, were early adopters of agile processes, while insurance companies tended to lag behind or experiment on a relatively small scale. Most insurance company IT leadership has focused on lowering the costs of their software delivery model by outsourcing to offshore firms. This approach immediately delivers a lower cost per unit of labor; however, it comes at an extremely high and unanticipated cost: it dramatically increases the complexity of the software delivery model, making it much less nimble. Many find that efficient, timely delivery of high quality software remains extremely elusive.
Agile techniques are generally defined by practitioners as a collection management and software engineering practices, which collectively hold the power to yield efficient delivery of very high quality software. They are as follows:
- Planning Game: Prioritized collection of the business capabilities necessary for achieving a defined business outcome
- Story Cards with acceptance criteria: Lean user requirements, highly componentized, prioritized by the user community
- Short, Iterative Development cycle: Typically two weeks
- Daily Stand Up Meeting: Short meeting to uncover any blockages or issues to completing an iteration cycle
- Iteration Planning Meeting: Define the work that is planned for the iteration cycle, estimate the work effort, etc.
- Dedicated/Authorized User Proxy: Individual or individuals with full authority to represent users business needs, dedicated and accessible to the software development team
- Software Showcase: A demonstration of the software at the conclusion of an iteration, deployed to an environment where the user community can test, review and provide comments on the software.
- Team Co-location: Having the software delivery team physically in a single location. Offshore delivery models require special arrangements to make this work.
- Pair Programming: Two programmers bearing responsibility for the delivery of a single assignment during an iteration
- Test-First Development: Developing a test approach prior to code development to ensure that a testable design results.
- Continuous Code Refactoring: The code base is refactored as necessary during each iteration cycle to deliver the software
- Emergent Architecture/Design: Rather than having a fixed, prescribed design, the design is flexible and emerges as the iterations continue
- Collective Code Ownership: The team collectively has responsibility for a working code base, which is enforced with continuous integration.
- Continuous Code Integration: The code base is continuously integrated in an effort to avoid large integration problems and issues.
Currently, almost all insurance companies have become familiar with these practices and are using some form of agile software development, especially for their leading edge and web development projects. It has been my experience, when consulting with insurance clients, that many companies' agile software development practices are seriously compromised, preventing the intended outcome: efficient delivery of high quality software.
The barriers to successful agile software development process can be complex and span a wide range of challenges, including organizational and vendor management issues, an inability to gain the necessary cooperation from the business community, technical barriers, or resistance to agile practices within the IT organization.
As an example, I'm aware of one insurance client that uses an iterative software development process, but only after all of the business requirements are gathered in a very heavyweight, document-centric manner, and the design is completed up front prior to the start of any software development. These practices are highly contrary to agile practices, and seriously compromise the outcomes.
Additionally, the software delivery models of their offshore partners, which tend to be biased toward heavyweight processes, further challenge most insurance companies. Generally, offshore staff has limited experience with an agile software delivery model as well. Further, many carriers create barriers when they use a stovepiped approach to offshoring, by placing certain parts of the software delivery lifecycle with different vendors. For example, several insurance clients that I’ve been involved with use one offshore vendor for business analysis, another for design, another for project management and yet another for software testing. Getting all these vendors to agree to function in a continuous, seamless iterative process, as advocated by agile processes, can be an extreme challenge.
In conclusion, while insurance companies face many complex barriers for optimizing their software development process with agile processes, those carriers that are able to effectively harness and apply the power of agile software delivery will have a considerable advantage over the competition.
About the author: Joel Collamer has extensive Big 5 IT consulting, offshore consulting and corporate IT experience with large scale, global insurance/financial services companies.'For five years, he worked at ThoughtWorks, among the earliest agile-focused software development firms, where held various roles in agile software development teams, experienced agile’s significant delivery benefits first hand and coached clients in agile enablement of their IT organization. He focuses on the management practices of agile, specifically with business requirements gathering for insurance companies. He is currently serving as an independent contractor with Navigant.