In the realm of software development, agile methodologies have firmly overtaken outdated waterfall techniques for designing, developing, and releasing new software products to the market. Agile software development consists of a set of principles for which requirements and solutions evolve throughout the course of a product’s life. For SaaS based software models, however, a large majority of the work that project managers are involved with are not projects involving brand new products. Many projects involve working within the confines of a system that has already been defined and constructed in some manner. This may include things like data models, business logic, user interfaces, etc. In addition, the date and cost for the project are often times known and fixed up front, at least for the initial target release. There is little room for the natural evolution of a product, which agile development suits so well. So how can agile methodologies be applied to SaaS based project integrations while they have so many inherent constraints upfront?
In order to more accurately predict, plan, and land projects on time and with the functionality required, a number of agile processes and tools are available to help improve the odds, even in an atmosphere full of limitations. At the onset of a project, the level of knowns is significantly less than at any point later on in the project. This is due to a number of factors including, but not limited to, requirements not being fully known, teams working together for the first time, assumptions that integrations may be simpler than reality, etc. This is oftentimes depicted in what is known as the “Cone of Uncertainty” (pictured below).
Credit for Cone of Uncertainty Image - Steve McConnell, Software Estimation, Microsoft Press, 2006
In a project with relatively fixed objectives and a firm completion date, it’s important to get ahead early on in the project in order to reduce the level of unknowns and narrow that cone of uncertainty quickly. This can be done through a set of processes, outlined below.
- Discovery - At the onset of all significant projects, a discovery period should be established to tease out user journeys, development epics, stories, and criteria for success. The discovery helps refine the project scope and ensure that the end goals are established, albeit with flexibility on the details for how to get there.
- Defining the MVP (Minimal Viable Product) - In order to improve the predictability of project start times, defining the minimal set of functionality to get out the door is critical to a successful start. Once in the market, the client and vendor can learn and iterate together through frequent inspection and adaptation.
- Pre-mortem - Instead of asking “what are the risks for this project,” a more useful approach is the concept of a pre-mortem. This is a session where the team pictures themselves past the planned release date and pretends aspects of the project have failed. They then act out the part of a team identifying what failed, what surprises came up, etc. The reasons are then grouped into themes, and mitigation techniques are applied and monitored throughout the actual integration. This slight shift in mentality opens up the team’s mind to how projects can go wrong versus asking them to simply list the risks out of whole cloth early on.
- Think of deployment throughout the process - Teams often adopt a “get started” mentality, which is healthy to begin learning what you don’t know, but teams also typically fail to think about landing the process once started. Baking in discussions up front in the project about how UAT will take place, ensuring proper environments are in place, and walking through pre-release checklists helps to form the project runbook throughout the project lifecycle.
- Communicate often, Inspect, and Adapt - When uncertainty is high early on during a project, a natural tendency is to create more meetings and attempt to discuss your way to being in a better place. Agile, however, promotes a process of frequent inspection and communication throughout the project, which helps teams adapt as unknowns become more known.
The goal of all projects is to be on time, on budget, and with the functionality required to succeed in the market. The melding of so many known constraints with so many possible unknowns makes the job of SaaS project teams difficult, and the application of agile methodologies challenging. To be successful, teams need to apply flexible principles that they find most effective, while still adhering to a rigid framework.
Credit for Cone of Uncertainty Image - Steve McConnell, Software Estimation, Microsoft Press, 2006.