You would think that releasing software was a simple process: build it, test it, release it. Far from it.
You come at this problem from one of two different ways.
You either read about the recommended approaches that most other professionals have taken and wisely follow suit. Or you go through a baptism of fire by learning from experience what doesn’t work and what you can do to stop the pain reoccurring.
Both approaches have pros and cons.
The first allows you cut to the chase quickly. Adopting best practices means you’re most likely to learn from mistakes of others. You can read background on how the best practices became widely used.
The second makes you painfully aware of why you adopt the practices. Facing the problems and seeing the negative results makes you realise what the solutions help to avoid. You’ve been there and have a few nervous twitches to show for it.
Here’s 7 important things to remember when releasing software:
Automate as much of the release as possible
Humans are error prone and give no guarantee of doing it the same way twice. Each time you automate a release with scripts and procedures you help minimise the chance of it going wrong next time.
Always know exactly what’s in a software version
During testing, a version of software will go through various build, adding features and releasing bugs. Be militant about increasing the version number whenever a version is touched by anyone outside of development.
Give transparency of what’s in the release
Always provide change notes. They let people see what’s in the release so they know what to look out for, tells people whether a version fixes that thing that's always irritated them. Internal technical notes help support staff to the details of a release, customer focused notes help customers see feature changes that matter.
Never do it on a Friday
Things that can go wrong generally will. Going wrong on a Tuesday is different to going wrong on a Friday.
Avoid big internal releases
The higher the number of features going out to stakeholders in a release, the higher the number of things that might change.
Treat getting releases right as important as the code
Correctly versioning, documenting and doing all the housekeeping right can help avoid many problems later. Make sure getting it right is as high a priority as getting the code right.
Consider new-feature training as part of the release
Plan in some time to show people how to use new features. The time can double as immediate feedback on each feature you show.
Bear in mind, if you're a big believer in sod's law as I am, if something is going to go wrong it most likely will.
Keeping a level head and calm does wonders for helping to resolve any unwanted surprises.