Smart Practices for Smooth Deployment
Learn about practices that ensure a smooth deployment workflow.
Overview
In this lesson, we'll go through some of the practices that should be followed throughout the software creation process. These practices help improve the quality of the work and product, from the beginning of development to its deployment.
Strategies
Let's discuss some of the strategies that help build smooth software.
Estimates are not symmetrical
There's a big difference between underestimating and overestimating a task. If the estimate is too small, then we might need to drop things from the sprint. Overestimating a task may mean that we can finish early and pick up another task.
Underestimating can make people unhappy while overestimating can provide a pleasant surprise. Excessive overestimating is a problem. If the team has a range of estimates that are only slightly different, then round up; otherwise, it might require further discussion.
Lean on the compiler
This is a technique from the book Working Effectively With Legacy Code by Michael Feathers. If our system is tested well or built in a strongly typed language, then we can use the compiler or test suite to find where a feature is used. We can just comment out a key component and see what fails.
Allow unexpected things to fail
The Erlang and Elixir communities have a principle of "Let It Crash." At first, this sounds like it would be the route to an unstable system. The idea behind it is to only handle what we expect to happen and to fail fast when something unexpected happens. The Erlang and Elixir world has a set of tools to specifically handle this, known as Supervisors. These provide code that monitors the rest of the system and restarts part of it if anything fails.
Author's Note
When I was working on a simulation, one of my managers would always prefer the simulation to fail if something unexpected ...