Why do we release code?

Continuous Confidence is an ideology, a process that changes and is different in each development shop. When we want to implement it, we need to flip our thoughts around and start by asking the question: Why do we release code?

The Essential Question

This question is the most essential question we can answer. This will ultimately drive our implementation. Some might answer this question with the easy route: to make money! Some might answer this with the statement: to rule the world! Whatever the answer is to this question, be honest and fair and precise. Answering this will show where the motivation is. Whatever the response, we find that we cannot do this without the customer. We find we cannot do a release without other departments and roles. We find that, in reality, we are far more impactful on others more so than just the development team. So we start to ask more questions from our experiences.

How often should we release?

Each software that is created is different. We might be writing a SaaS product that can be released multiple times a day. We might be writing desktop app that we want to release monthly, or mobile app that releases on a normal schedule. We might release code only Semi-Yearly. Whatever the answer, his will shape how we interact with other departments and with other people. Continuous Confidence is the focus to implement relationships, to identify handoffs, and to produce quality releases by identifying and acknowledging where people lack confidence in the system, and providing structure to overcome that lack of confidence.

If all our tests are passing, should we ship it now?

Do we get consternation or anxiety from the prospect of just shipping now? All our tests passed, why can't we ship? The answer to this question, helps us identify the pain points in our software development cycle. Answers from other departments, like Customer Support, or from IT, present great feedback into what is causing pain and a lack of confidence. We might be ready, but IT might be  swamped and can't handle the release right now. There might be code that can't be released right now, due to marketing, due to a plethora of reasons. People might not feel comfortable with it. The point of Continuous Confidence is not to achieve 100% confidence in our code, because that is not possible, but rather to achieve whatever level of confidence we need to make all parties involved, confident and comfortable with releasing.

Principles of Continuous Confidence

This is where we use the areas of Continuous Integration, of Continuous Delivery, of Automated Testing, of Feature Toggling, and of other coding practices that will help us be as agile as we can. Remember, we don't have to do everything that is taught by each of these areas, but rather understand what parts of confidence we are lacking, and how these practices can help us gain what we lack. 

Now, he final piece of the puzzle: keep practicing. We need to keep striving for more and more confidence. Keep rinsing and repeating. Focus on that confidence, and ultimately we will have quality and confident code being released each time. If we make a mistake, we learn, we don't punish. When we find a problem, we rejoice, because, when done right, we will never make that mistake again.

Comments

Popular posts from this blog

Not All CI Solutions Are Created Equal

Stop Talking About Continuous Integration

Legacy Code: What to do About it