RailsConf 2014

Culture of Continue Delivery

Culture of Continue Delivery

by Leena S N and Vaidy Bala

The video titled "Culture of Continuous Delivery" features Leena S N and Vaidy Bala, discussing the significance of building a culture that promotes Continuous Delivery (CD) in software development, as emphasized in the Agile Manifesto. They explore essential practices, such as feature toggles, automated tests, and build and deployment scripts, which contribute to achieving high-quality software that satisfies customers.

Key Points Discussed:

  • Continuous Improvement and Collaboration: The speakers emphasize the importance of a collaborative environment and continuous improvement to enhance team motivation and product delivery. They share experiences from their consultancy work, illustrating the effects of rigorous daily stand-up meetings on team engagement.
  • Build Quality In: They advocate for integrating quality control during the coding phase using practices like Test-Driven Development (TDD) and automated testing. This approach results in higher quality software and improved team confidence.
  • Always Ready to Deploy: Ensuring a build is always ready for deployment is crucial. They describe implementing a robust continuous integration system where developers work on small increments that allow for regular feedback and fast iterations.
  • Motivation Factors: The speakers introduce the concept of Motivation 3.0, spanning autonomy, mastery, and purpose, suggesting that fostering these elements leads to a motivated and highly engaged team. When team members connect their daily work to a larger purpose, their motivation levels increase.
00:00:16.830 Hi everyone, thanks for coming. I'm Vaidy.
00:00:22.360 This is Leena. We are longtime colleagues and have built a significant amount of software together.
00:00:27.550 I've got a confession to make: we're process geeks, and the impact of that has been felt by our own team quite a few times. Let me give you an example.
00:00:39.270 We have daily morning company-wide stand-up meetings, and Leena and I would very excitedly talk about topics like continuous delivery and continuous improvement during these meetings.
00:00:45.550 Things were going great until a colleague of ours asked whether we had noticed that the number of folks in the stand-up was steadily decreasing. It turned out that people were showing up to work just after the stand-up would finish. We wondered why we were discussing such interesting topics every day.
00:01:05.049 Recently, we met a friend who mentioned that process talk sounded to him like a trip to the dentist. I suppose that also explains the mystery of the declining stand-up attendance. What we will do today instead is to share some war stories and include thoughts on continuous delivery and culture along the way.
00:01:26.350 Are there any neuroscience geeks here? Thank you! If time permits, we'll also discuss some of that at the end of the presentation. So, continuous delivery—most of you know it's a large and complex topic with many approaches.
00:01:48.880 In today’s talk, we will focus on three key aspects of continuous delivery: building quality in, making your build always ready to deploy, and continuous improvement. We will also discuss necessary practices related to these aspects and how they connect to team motivation—specifically, the three components of motivation: autonomy, mastery, and purpose, which are crucial for sustaining motivation in a knowledge worker.
00:02:14.110 Before we continue, we must confess—we don't have PhDs in this subject, but we do have a thesis we'd like to present: practice continuous delivery, and you will cultivate a great culture. Let's begin with the stories.
00:02:58.380 The first story takes us back to 2010, when we were operating a software consultancy in Bangalore. A customer approached us to build a product in the consumer space, specifically a utility product. We suggested kickstarting the process with a two-day brainstorming session.
00:03:19.290 We had our Scrum kit ready, complete with story cards, multicolored sticky notes, and plenty of sharpies. By the end of the two-day session, we had over 100 cards neatly laid out on the table and listed on an online spreadsheet.
00:03:31.650 The next logical step was, of course, to start the estimation process. Following Scrum principles, we decided to go with story points and estimate each of those hundred-plus cards over the next few days. Fast forward a couple of days, and we had our estimates ready—it was going to be a nice, long six-month project after which we hoped to have a beautiful product capable of scaling to a million-plus users. Fantastic, right?
00:04:06.360 I suspect some of you can already see where this is going. We also injected a few more milestones into the process—three milestones to be exact. At the end of each of these milestones, we would have a celebration before quickly returning to work on the next milestone. We planned to work in two-week iterations as part of this Scrum-based system and awarded the team story points as soon as they finished coding a story.
00:04:41.010 We just couldn't wait for the testing to be completed. Monthly demos with the customer were also scheduled. Things were going well until about four months in when the customer requested a demo for an investor, with just seven days left to prepare.
00:05:00.870 We asked for a couple of days to get everything ready, and by the day before demo day, the entire team was camping in the office, feverishly fixing bugs. Let's just say that weekend wasn’t our best in the last four years.
00:05:26.400 Most of you might be familiar with this kind of setup. We have already discussed Scrum, but there's another aspect we need to consider: the Water-Scrum-Fall model.
00:05:52.380 Let me explain the Water-Scrum-Fall model. In this model, the 'highest paid person's opinion' (or HIPPO) drives the engineering processes without much input from the engineering team after they have received the instructions.
00:06:03.170 The engineering team is often in a tight spot, having just completed a Scrum training course, while the operations team sits in a secluded corner, ready to pounce on anyone who might interrupt them.
00:06:21.150 This was genuinely stressful for us back in 2010 when things went wrong. We wanted to fix the problems, not just to regain credibility, but also to retain the motivation of our team.
00:06:33.180 But where should we start? The simplest answer in such situations is to address what we have control over. The biggest problem we had was the quality of the product we were shipping.
00:06:51.730 That was within our control, and we aimed to fix that first. Fast forward an additional six months, to 2011, with another customer and a different project.
00:07:16.360 While the Water-Scrum-Fall model still applied, we made some modifications to our practices. By the end of this six-month period, we noticed significant improvements, especially regarding the team’s confidence and the reduced number of weekends and late evenings spent working.
00:07:37.570 The quality of the product itself was markedly better, leading us to no longer track defects in a separate bug list. This was positive feedback for us.
00:07:50.080 Our customer was also easier to work with this time, likely because we were making updates to the staging server much more frequently than in the previous project, which allowed the customer to provide us feedback at least once a week.
00:08:09.130 Let's return to the practices we changed, as they were a crucial reason for the improvements we experienced. We implemented practices to build quality in. You may have seen diagrams depicting phases such as analysis, design, testing, and development.
00:08:34.570 Interestingly, after the testing phase, many assume the bugs are fixed, but building quality in means integrating quality considerations as you write your code.
00:09:05.170 You need to think of testing not as an afterthought, but as an integral part of the process. Extreme programming (XP) offers several good practices to support this, with test-driven development being one of them.
00:09:43.500 Test-driven development provides a suite of regression tests that give the team tremendous confidence to make substantial changes to an evolving codebase.
00:09:58.730 This confidence translates into the team delivering high-quality software. Implementing practices such as continuous refactoring and pair programming creates a cohesive set of practices that facilitate the shipping of high-quality software.
00:10:19.120 While we've discussed the value of building quality in and the resulting improvements for our customers, we started noticing behavioral changes within the team.
00:10:36.180 For instance, when we began shippable software, the development team used to check in with the customer for every small change in priorities or planning. Eventually, as we delivered work more frequently, the customer began seeking the team’s opinions and left the day-to-day decisions to them.
00:10:55.560 The team started to feel a sense of autonomy and freedom that any team would cherish when working with customers. XP fostered a sense of autonomy that we observed growing within the team.
00:11:25.490 You might wonder why we're discussing extreme programming when our topic is continuous delivery. In our opinion, continuous delivery is a superset of extreme programming practices.
00:11:43.750 Now, coming back to our earlier discussion on quality, team motivation, and successful products. We had a fantastic product that was of high quality, and the day came for it to go public.
00:12:00.630 We organized a grand launch party to celebrate the public unveiling. However, a month later, we found that there were only a few users on the system.
00:12:17.040 Despite our expectations, we kept waiting for user engagement, but it never occurred. The customer faced funding issues and subsequently failed to generate traction for the product.
00:12:36.600 So, the customer decided to put the product into hibernation, and even now, three years later, we’re still awaiting their return. Even after delivering a high-quality product, the harsh reality was that it did not achieve success, which affected the entire team’s morale.
00:12:54.390 As a consulting company, we didn’t own this product, but the disappointment of our team was visible. Let’s move on to the next story.
00:13:00.900 Autonomy brings short-term happiness to the team; however, creating long-term motivation requires something more. What can that be?
00:13:34.960 We need to provide an environment that allows the team to connect with the bigger picture, so they feel they are part of something significant. I will explain this through our next story.
00:14:01.780 Recently, we worked with a customer who envisioned a network of tablet devices installed across various cities, controlling them remotely from a central location using web services.
00:14:27.940 Although the original plan was to build the entire system, the customer opted to develop the smallest functional piece first to test the tablet with real users.
00:14:55.580 As you might expect, we encountered several issues early on. For instance, the USB power cable provided with the devices was too short to reach the power source.
00:15:07.840 After ordering a set of longer cables, things initially seemed to work. However, after a day of usage, we saw that the battery levels had dropped by about 50 percent.
00:15:36.540 It turned out the length of the cable caused a voltage drop, affecting battery performance. We directed end-users to turn off the tablets at night and added a high-priority item to our backlog to automate this process.
00:15:53.710 We also addressed some usability issues through user interface tweaks. None of these problems would have been discovered had it not been for our customer's willingness to test an early alpha version with users.
00:16:10.820 This early testing enabled us to iterate on the product rapidly and establish a feedback loop with the entire team, including those back in India.
00:16:39.200 As a result, we were able to realize our customer's early goals to implement the tablet across multiple cities, attract advertisers, and test their pricing model.
00:16:58.290 What’s crucial here is that the customer was able to iterate through multiple versions of the application quickly. However, there were engineering practices in place that supported this process.
00:17:20.230 One key principle of continuous delivery is to always have your build ready for deployment. This means that whenever someone wants to deploy, it should be as simple as the click of a button.
00:17:39.040 To achieve this, we made changes to our software delivery process, reversing our estimating approach. Instead of asking how long stories would take, we started asking, "What is the simplest thing we can do in a couple of days to receive feedback?"
00:18:04.430 Next, we established a real continuous integration system where the entire team checks into the main branch and works on small chunks. This allows immediate feedback on changes and ensures that everything works with existing systems.
00:18:25.360 The third key aspect is the build pipeline, a critical part of continuous delivery. The build pipeline ensures that the deployment process is risk-free and fully automated, as opposed to being a mundane, error-prone manual task.
00:18:45.840 This pipeline also allows for the early identification of bad builds, preventing them from moving forward. It verifies that the same build transitions seamlessly from testing to staging and production environments.
00:19:04.050 While there are numerous automation practices required to achieve continuous delivery, I won't go into the details today. However, I'm available for those who wish to know more.
00:19:29.210 Ultimately, with these practices in place, deployment transforms from an engineering decision to a business decision. The customer can deploy any version of the product with just a click.
00:19:47.350 In contrast to the previous stories, this one has a happy ending. The customer was pleased, and the engineering team was extremely happy not just because of the multiple deployments, but primarily because they could connect their day-to-day work to the bigger picture.
00:20:07.800 This connection provided the team a sense of purpose in their work, leading to heightened motivation among them. Additionally, they engaged not only with the end users but also with the entire ecosystem, including network personnel and other involved entities.
00:20:30.430 This created a feeling of pride in their work and motivated them to continue improving on a daily basis. We have spoken about the importance of building quality in and making the build always deployable, as well as the motivational implications.
00:20:50.090 Now, let’s discuss the third aspect of continuous delivery: continuous improvement, which is crucial not only for achieving continuous delivery but also for maintaining it.
00:21:02.160 To illustrate this, I'll share a story from Toyota. Taiichi Ohno, known as the father of the production system, was part of Toyota in the 1930s. One morning, an assistant ran to him and stated that the plans for a newly constructed factory had been stolen.
00:21:29.830 Despite the assistant's nervousness, he remained unfazed. He communicated that it didn't matter that the plans were stolen, as by the time a factory could be built based on those plans, they would have already refined and improved their current systems.
00:21:40.790 Thus, the gap between what they would build then and where they would have been would be significantly large, rendering the theft inconsequential. This is the power of continuous improvement.
00:21:59.910 From the waterfall and Water-Scrum-Fall eras to continuous delivery, we have been taking incremental steps towards our goals. Interestingly, we weren't even aware that continuous delivery was what we were targeting just four to five years ago.
00:22:31.160 People today come to work motivated to build exceptional products and see their work as a craft rather than just a job. When one perceives their work as a craft, the natural inclination is to keep improving it. This journey towards mastery is the third aspect of autonomy, mastery, and purpose.
00:23:06.790 As Ken Beck reminds us, perfection is not a noun but a verb. Thus, the question arises: is there a definite end to the process of honing one's skills? The answer is no; it’s a continuous journey.
00:23:30.160 To summarize the motivation aspects we discussed, we covered autonomy, mastery, and purpose. The intersection of these three components leads to engagement—a state where a motivated team is highly engaged.
00:23:57.940 An engaged team becomes more outcome-focused. They love their craft, understand their purpose, and consistently connect their work to the impact it has on end-users.
00:24:18.810 The main difference between this engaged team and one stuck in a Water-Scrum-Fall approach is that the engaged team prioritizes outcomes over output, focusing on the software’s impact on end-users and the business rather than metrics like velocity.
00:24:42.130 So this is our team picture back in Bangalore, and we believe the smiles on their faces reflect the high level of engagement they have in their work.
00:25:01.450 Now, let’s shift focus to culture in continuous delivery. Culture comprises shared values and principles within a team. We hold two core values dear: delighted customers and continuous software flow.
00:25:43.960 To identify the practices that will help us achieve these values, we should focus on those that support motivation. Specifically, we seek practices that empower autonomy, provide room for skills improvement, and help connect daily work to the bigger picture.
00:25:58.590 Continuous delivery is an excellent approach to foster such practices. It promotes continual improvement and is purpose-driven.
00:26:16.310 By understanding the purpose of our actions, we bolster feedback and autonomy, making continuous delivery a powerful tool in cultivating a strong culture.
00:26:38.890 If the persuasive power of motivation isn't enough to encourage your team to adopt continuous delivery, perhaps an understanding of neuroscience will.
00:27:04.970 Let’s discuss two parts of the brain: the prefrontal cortex and limbic system. The prefrontal cortex governs logical reasoning while the limbic system is responsible for emotions.
00:27:25.030 Remarkably, the limbic system tends to focus more on negative emotions. You may have heard the saying that people walk toward rewards but run away from threats, which is rooted in how our brains are wired.
00:27:48.520 If the brain is predominantly engaged in negative thinking, how can we maintain positivity in the workforce? This is where the seesaw effect comes into play: your emotional and logical brain either functions independently or not at all.
00:28:13.060 It's beneficial to create an environment where team members engage in creative activities, as this helps steer them away from negative emotional states.
00:28:38.450 Moreover, the prefrontal cortex requires a certain level of stress to operate effectively. Stress becomes detrimental when there's too much of it.
00:29:01.290 It's hard to think creatively in challenging situations, but when one is adequately stimulated, creativity flourishes. Hence, creating that optimal environment at work allows team members to thrive.
00:29:23.990 Continuous delivery aligns well with these principles. It ensures that builds are always ready, keeping the team engaged and maintaining an appropriate level of urgency while providing ample opportunities for incremental improvements.
00:29:43.230 As a result, teams do not harbor fear regarding potential failures since they're making small adjustments. This removes the looming threat, allowing creative strategies to flourish reinforced by the functionality of the prefrontal cortex.
00:30:05.360 Our discussion today has touched upon many aspects, but let's return to our thesis: practice continuous delivery for a strong culture. The question is, where do we begin this journey?
00:30:27.560 Embarking on this path requires persistence and the support of evangelists. To cultivate these evangelists, pose two questions: Why does your business exist, and if it didn't, what would be missing?
00:30:51.060 Crafting answers to these questions helps connect to the purpose: understanding why we do what we do, enabling the team to be more autonomous and improve consistently.
00:31:04.090 To conclude, I'll leave you with an inspiring quote from Jesse Robbins, co-founder of Opscode, who said, "Don't fight stupid. Make more awesome." Thank you very much.
00:31:22.570 These are four books we've found valuable in our journey, and I believe they might be useful for you as well.
00:31:24.490 You can find our contact information on the website, and we are ready for questions if you have any.