Our software deployment process depends on three environments: development, quality assurance (QA), and production. Each of those environments has its own set of actors and resources. In our case our resources can be simplified to applications and databases. Our actors include but are not limited to developers, QA engineers, and database administrators.
Looking at the image above, you may notice that the most chaotic area in our process happens in development. Development is where all discussion, experimentation, and systematic changes should occur. Development is our hardest area to work in because the need to communicate changes, and insuring every team member has a current version of the resources we mentioned above.
Small teams, normally 2 to 3 people, can get away with communicating via email, chat, and meetings. As teams grow larger, they have to start depending on non-verbal communication and lean more on process. Ideally all changes are communicated via source control, issue trackers, and suggestions in the form of pull requests. A strong process helps alleviate any confusion as to how, when, and where change affects the entire system.
Now that a development process is in place, we need an agreed upon deployment path. For our own sanity, changes need to go from the most chaotic environment to the most ordered environment. That means all systematic changes start in development and move to QA and finally end in production. That insures that any deployment that starts in development will not be stopped by any unexpected changes in QA or production. If changes do occur in QA, the team will spend more time accounting for and developing around them. This will again hurt our ability to ship our products. Experimenting in development, testing in QA, and stabilizing in production is best for everyone.
Communication is crucial to any team's success, but the most valuable kinds of communication are non-verbal. Those non-verbal communications come in the form of clear, understood, and well-executed processes. It is most important to move changes from the most chaotic environment to the most ordered to insure that change only impacts the overall system positively. When the process is circumvented, it adds confusion and roadblocks to the deployment process; this leads to more time wasted, missed deadlines, and unhappy stakeholders. Following the process will lead to faster and more predictable deployments.
Software Developer and All Around Nice Guy
Cover image credit: https://www.flickr.com/photos/scubabrett22/