Continuous Deployments explained in terms of the Home buying experience

Every organization's path to production and eventually how they reach their customer(s) is different. Cost (beyond monitory implications) are different too. Various factors like Compliance, Regulations, Security, Risk and the market segment they operate in dictates the course. At the same time they all have the same vision, To be able to help and be part of their customers' success and journey. 

Talking to people, attending various conferences and as part of doing interviews, I always hear about the Nirvana state of companies that does x number of deployments per hour/day/week/year. Going thru this over the last several years I was thinking of how to put this in layman’s terms. Then it occurred to me that Continuous Deployments could be compared and contrasted with how home buying works. (Again just an attempt and hope I can get the message across vs looking at this in literal terms)

Individuals go thru a process that is so internal to them before they make up their mind and want to become a homeowner. At that point, they need to deal with external entities for pre-approval, agents who can show them the right home, banks which do more rigorous background checks to qualify the individual for the right loan amount and a seller who is willing to sell for the amount the buyer is willing to pay. Once everything works for all the parties they come up with a closing date and the transaction happens.

If a prospective homeowner tries to buy a home beyond what they can afford aided by banks not providing all the tools and information to help them make knowledgeable choices and lends them we go thru the kind of housing crisis we did several years back. We have to be ourselves and what is right for us when buying a home and for the most part that means we cannot go beyond our means. At the same time if the goal of someone is to buy that dream home, but they cannot afford today they usually work towards it and make it happen when they are ready.

Similarly as companies shift from waterfall to agile, on-prem to cloud and monolith to micro services they face varying choices, varying challenges and overload of information that sometimes become very difficult to deal with. When it comes to delivery of software, how you go to production, process involved, deployment velocity and what is right for a social media company or a streaming service may not be right for a bank, hospital, financial company or a government organization. They need to be keeping in mind, their customers, risk levels, compliance, and regulations.

DevOps as a discipline and mindset is gaining a lot of traction and increased adoption not just in the technology space but across industries. Often you hear about failures along the way. For some, they learn from failures and mature and for others. it is crippling and does more damage than when they started especially to the culture and morale. And there is a reason. DevOps is not a tool. It does not have magical powers to solve problems by just saying we are moving to a DevOps model. It cannot be used as a means to solve cultural issues in a vacuum. It needs to be defined for your company wrt what it means and make it work for your organization.

Continuous Delivery is the process of building software in a way that it could be released to production anytime a company chooses. To achieve this you continously build, integrate, test and deploy to environments using automation that are similar to production which different companies refer to as Staging, pre-prod etc.,

Continuous Deployment is the process that enables every change going through the pipeline and automatically deploying into production. This translates to numerous deployments every day based on the change velocity.

Understanding this distinction between Continuous Delivery and Continuous Deployment is very important. Continuous Delivery is a prerequisite for Continuous Deployments.  If a company operates in an industry segment which cannot afford continuous deployments for any number of reasons you should still strive to achieve continuous delivery capabilities. Every company out there irrespective of the industry they operate in will benefit from going thru the transformational efforts that are required to achieve Continuous Delivery capabilities.

As a home buyer, you stick to a plan and buy a house you can afford and be very comfortable wrt monthly payments, expenditure and planning for various other things and you have a lot of financial freedom and power.

Similarly, the most powerful capability a company can have is it to deploy when they want and when they are ready by seamlessly connecting the dots using as much automation as possible with as little or no impact to the customer. So once a company has such a capability they could:
  • Deploy every change to production if that is what they want
  • Patch a security vulnerability immediately after it is detected and fixed
  • Reduce the feedback loop in a way that you deliver what your customer is looking for faster than you used to
  • Develop minimally viable products, fail fast and learn and make adjustments as we go along and be more agile not just with development but how they conceive, develop and go to market faster with new products 
Similar to the homing buying experience, making the right choices while enabling Continuous Delivery is more important than the transaction itself for the most part. Those choices dictate your day 2 operations which are even more important from a customer experience perspective. 

Comments

Popular posts from this blog

Why are Great Leaders a Scarcity?

Why do open societies need Occupy Movements?

Is Decision Making and its process Overrated?