Software Production Deployment is a Project
Software development projects are unique from the perspective that their state changes substantially during a period of time called ‘Implementation’ (what others might also call ‘deployment to production’ and many other variations on this theme). The uniqueness of their status is driven from the fact that throughout a large portion of their project life-cycle they are nothing but a potential waiting to be realized. It is only once they are ‘moved’ into the organization’s production environment and added to the official technology asset register that they become a ‘real’ thing, a technology asset that can be used to realize the business purpose for which it was created.
Part of the uniqueness of software projects compared with, for instance, construction projects, arises from the fact that while (most often) a building is being progressively built and elaborated on in a single physical location, software is subjected to transformations that take it across a number of environments before it reaches its final resting place in the ‘production’ environment. The key to the underlying risk embedded in this process is in the fact that most often the various environments through which software needs to be migrated are not identical to the final and last stop.
To illustrate the journey that a piece of code needs to go through let’s assume that in a typical software environment the software code will need to go through the following steps:
- Development environment
- System Testing environment
- System Integration Testing environment
- Stress and Volume testing environment
- User acceptance Testing environment
- Pre-Production Deployment environment
- Production environment
The obvious risk that needs to be managed throughout this process is the similarity (or most often – lack of) between these various environments. The journey that the software needs to take from the time it is being developed by the programmer until it is placed in a platform accessible by the end-user is perilous and fraught with danger to say the least.
While master project plans refer to ‘Implementation’ in a short and concise manner, they are quite often accompanied by detailed and robust installation and deployment check lists and notes. In a way, deploying software into production is a project in its own right, accompanied by formal artefacts and sign-offs.
So what key artefacts would be needed, as a minimum, to accompany a successful production deployment? Let’s looks a few and explain why they are and what they are good for:
- Stakeholder matrix - all people and organization units (internal and external) necessary for successful deployment. This will include, for example, the project team assigned to the deployment, support groups needed, all other business and technology interested parties. A detailed RACI will be required in order to ensure clear roles and responsibilities are identified such that there is no ambiguity regarding who does what and in what capacity.
- Implementation Plan / Detailed Installation Instructions / Run Sheets – detailed lists determining what needs to be done, when it needs to be done and who is going to do it. All relevant information for carrying out these instructions should also be included, including names of servers, application versions, and any other parameter needed. No detail (unless it is absolutely trivial) should be left for interpretation or personal opinion).
- Go and No-Go decision points - a good plan must have continue / stop points with clear instructions how these decisions will be made and by whom. Should a No-Go deemed to be appropriate, the plan should include a detailed Back-Out plan with all relevant instructions of how to reverse the work done so far so the organization’s production environment is left unaffected.
- Post Deployment Verification – it is a good practice to complete the deployment with a number of verifications aimed at confirming it is successful from a technical and business perspectives. These verifications are generally called Technical Verification Testing (TVT) and Business Verification Testing (BVT). The first is executed to confirm the deployment is technically sound while the second is executed to confirm both the deployed application as well as any other application touched on during the deployment are still working correctly.
There is more, much more, to transitioning a software product to production. The above, though, is the minimum required to ensure the hard work put into developing and testing the software product are not lost due to lack of attention to proper migration into the business hands.
Think about it!



