Continuous Delivery

Continuous Delivery

What is Continuous Delivery? It is the process of getting your software to your customers as soon as it is ready. More than that, it is getting individual features, enhancement and defect fixes to your customers as soon as they are ready. Let's talk about where you probably are right now. You are most likely delivering at a regular cadence. Whether that is monthly, weekly, each sprint or once a year, that is what you are doing. I think talking through an example is the best way to illustrate this.


You have a bug in the software. The engineer fixes it and it passes testing. Now, how long until your customer gets this bug fix? At your regular release cadence? Or quicker, maybe a hotfix. Hot fixes cost time and usually delay your next regularly scheduled release. For the same example, but this time continuous delivery. The engineer fixes it and it passes quality gates and finally it is deployed to production and available for your customer to enjoy. The whole process of customer sees bug, reports bug, support reviews bug, engineering reviews bug, engineering fixes bug, customer is happy gets streamlined. We all know the longer the customer waits, the less important the customer feels.


There are a few reasons why this is difficult. First, you need a CD (Continuous delivery) pipeline that works. Second, you (this is the everyone "you") must be willing to adapt to this sort of flow. On top of that, you need to define your work in such a way that your customers get value out of each item you do because each thing is a deployment/release to customers. The world you are in now thinks of deployments to production as a big milestone or are large effort. The smaller the change made, the smaller the risk to the customers. If you follow that line of thinking, then the more deployments to production the better.


How do we change our whole organization from large delivery to continuous value delivery? A lot of work. It will take changing a lot of habits and minds. The benefits will be worth cost of change. Like any other journey it starts with one step at a time. Start with your engineering processes. What are the manual steps for every release? You need your CD pipeline to be automated. Define each step until every release is a click of a button. Next, define all of your gates. What specific things must be checked/signed off to get code to production. Automate what you can and what you can't you need to tie into the CD pipeline. If there is a manual review sign off, that is fine. Make sure the notification that something needs to be reviewed is automated. Make sure the person has a button that clears the gate and the delivery moved to the next step. Engineers love automating things, so this should be easy to get buy in.


The hard part is that you have to get everyone else on board (Product, Support, Sales, Marketing, etc.). Support will be scared until you showcase how smooth the deployments go. Sales, they only care that new features are ready for selling and bugs are not preventing deals from closing. I bet they don't care much. Marketing does care about planning, this is going to take some buy in. Product does want things as soon as possible, but they want to control when something is ready (mostly for features). The perspectives of Product and Marketing teams is why I talk about deployment vs release. For items that Marketing or Product deem to be larger, we use modern practices of feature flags. The items are in production but hiding behind a flag. They can be turned on at any time.


The hardest part down your path to true Continuous Delivery is changing how you define work. You must move from a list of everything needed to deliver a feature to each item stands a unit of value for the customer. This goes into how you do User Stories and scrum practices (if that is your SDLC). Product and Engineering must define a value that is delivered by each item. And everyone must agree if things are hiding behind flags or just default being delivered. This part takes a lot of learning. But if you can make it through this journey your customers will be continually getting more value delivered. They will not be waiting for your next regularly scheduled delivery.

要查看或添加评论,请登录

Andy Knieriem的更多文章

  • Coaching/Measuring People Leaders

    Coaching/Measuring People Leaders

    A rarely discussed topic is how to lead and grow your people leaders. How do you measure how a people leader is doing?…

    1 条评论
  • Building leaders

    Building leaders

    Not all engineers have the drive or aptitude to be leaders. When you do identify someone who does have those special…

  • Handling Expectations

    Handling Expectations

    Many people might talk about "Managing Expectations", but I feel that you can't manage other people's expectations…

  • Coaching Styles

    Coaching Styles

    As a leader, your coaching styles are important. It is very important to know that you need more than one coaching…

  • Velocity

    Velocity

    The terminology in Scrum may give some misunderstandings. In running, velocity is hard to describe while sprinting as…

  • Getting the Quality

    Getting the Quality

    Delivering software efficiently relies heavily on quality. Delivering quality is the only way to get the value to the…

  • Coaching Experts

    Coaching Experts

    I have found myself at times leading people who are much better at writing code or designing systems than I am. It is…

  • Continuous Product Management

    Continuous Product Management

    We've discussed a bit about overall Software Delivery and some engineering practices. Now it is time for a focused…

    1 条评论
  • Are you efficient?

    Are you efficient?

    Measuring efficiency is a complicated topic. Do you use your time well? Do you use your money well? Are you doing well…

  • Don't be a Hero

    Don't be a Hero

    I am not saying don't save the day. I am not saying don't step up and help others.

    2 条评论

社区洞察

其他会员也浏览了