© Andrew Davis 2019
A. DavisMastering Salesforce DevOps https://doi.org/10.1007/978-1-4842-5473-8_3

3. DevOps

Andrew Davis1 
(1)
San Diego, CA, USA
 
DevOps has become a trending topic in the tech industry over the last decade, gaining the attention of both developers and the C-suite. Despite some legitimate debate over what it does and does not entail, this interest in DevOps has elevated the discussion around software development practices and the impact they can have on how businesses rise and fall. Figure 3-1 gives one indication of the acceleration of interest in the topic of DevOps over time.
../images/482403_1_En_3_Chapter/482403_1_En_3_Fig1_HTML.jpg
Figure 3-1

Google Trends ranking showing the acceleration of interest in DevOps compared to related terms

The practice of DevOps is to regard IT processes as central to a business’s ability to deliver value to its customers and to continually improve the process of delivering new functionality while ensuring quality and stability. DevOps is a portmanteau of the terms “Dev” (Development) and “Ops” (Operations). The term implies collaboration between these teams, where they’re motivated by the shared goal to enhance both innovation and stability. Achieving this goal involves integrating long-standing development practices—such as continuous integration, continuous delivery, automated testing, and infrastructure as code. As such, it’s become a catch-all term for development process improvements both new and old.

In practice, DevOps is not something you’re ever “done with.” In that sense it’s like “collaboration” or “efficiency”—a principle to adopt and a goal to always improve upon. One core metric used to determine successful implementation of DevOps is called “lead time”—how long does it take your organization to deploy a single line of code to production? It is important that any changes delivered to production be well tested and made in a controlled way. But increased delays in delivering features to production mean greater delays in getting feedback. Delayed feedback means that improvements and bug fixes are delayed, causing inefficient context switching as developers repeatedly revisit work that they may not have touched for days, weeks, or even months.

There are many examples of companies like Amazon, Google, and Etsy who continuously deliver innovation as a result of automating and optimizing their development processes. For companies like these, their development processes are central to their businesses. And their CEOs and other leaders recognize IT process improvement as being every bit as critical as reducing their overhead and building market share. There are also many companies in industries like communication, manufacturing, and banking (Capital One is a notable example), who have shifted to viewing themselves as technology companies, with technological innovation as a core competency.1

This chapter provides a brief overview of DevOps, especially for the benefit of Salesforce practitioners who are new to these concepts. There are many excellent books that delve deeply into this topic—among others, Accelerate by Nicole Forsgren, The DevOps Handbook by Gene Kim, and Continuous Delivery by Jez Humble and David Farley.

What’s Driving the Need for DevOps?

Some companies have been automating and optimizing their code development processes for decades, while others have only recently begun to consider this. Probably the best industry-wide survey of DevOps maturity is the State of DevOps Report2 by Puppet Labs and DORA (DevOps Research and Assessment, now part of Google Cloud). The State of DevOps Report shows striking differences between DevOps “haves” and “have-nots.” High-performing DevOps teams deploy far more frequently and have vastly shorter cycle times (lead time for changes), fewer failures, and quicker recovery from failures compared to low-performing teams.

At the heart of DevOps is the process of continuous improvement, inspired by the Japanese process of kaizen. The implication is that you should get started now, while adopting a discipline of continuous improvement, coupled with the playfulness and flexibility to innovate and experiment. The first and most important step is to capture the state of all of your systems in version control and to perform all your deployments using continuous delivery to ensure that changes are always tracked. These practices set the foundation for increasingly refined automation.

What Is DevOps?

DevOps is a term for a group of concepts that, while not all new, have catalyzed into a movement and are rapidly spreading throughout the technical community. Like any new and popular term, people have somewhat confused and sometimes contradictory impressions of what it is. While a lot of discussions about DevOps focus on the specific tooling or technical implementations, the core meaning relates to the people that develop and maintain technical systems and the culture that surrounds this process. An infinity loop, as shown in Figure 3-2, is often used to illustrate the ongoing rhythm of activities that make up the DevOps process.
../images/482403_1_En_3_Chapter/482403_1_En_3_Fig2_HTML.jpg
Figure 3-2

A DevOps infinity loop

Dev vs. Ops

Working with cloud applications like Salesforce greatly simplifies the requirements for delivering capabilities. In a sense, Salesforce itself takes the place of the “Operations” team that keeps the production system running. Salesforce Admins largely work as declarative developers, building new capabilities rather than just keeping the lights on and keeping performance tuned. But to understand the DevOps challenge, we can think about development and operations needs in a traditional enterprise.

A critical need for businesses is the ability to innovate and develop new functionality for their customers and employees. This is the role of the Development team.

Another critical need is for existing systems to be stable, reliable, and secure. This is the role of the Operations team, which typically consists of system admins, database admins, web site admins, and so on. Their main job is to make sure servers are up and running, SLAs are being met, the application is performing as expected, and so on.

There’s a natural tension between the need for innovation (change) and the need for stability. Developers want and need to keep changing the system, while the Operations team wants and needs the system to remain as static as possible so that they can optimize performance and reduce the risk that change brings.

In large organizations, these teams had historically worked in silos which isolated the Development teams from QA and Ops. QA and Ops typically deal with huge numbers of applications and features, sometimes with little understanding of the business purpose and value of the software they were enabling.

The end goal for all of these teams is customer satisfaction, but specific goals for “Devs” include fixing bugs fast and creating new features, whereas for their “Ops” counterparts, the goals might be to maintain 99.99% server uptimes. These goals can often be in conflict with one another, leading to inefficiency and finger-pointing when things go wrong.

Chronic conflict between the Dev and IT operations teams is a recipe for failure for the IT teams as well as the organization they serve.

The concept of DevOps is founded on building a culture of collaboration, communication, and automation between teams that may have historically functioned in silos. The goal is for both Developers and Operations to share responsibility for facilitating innovation while still ensuring stability.

The generative culture promoted in the DevOps community emphasizes values such as ownership and accountability. Developers and operations teams collaborate closely, share many responsibilities, and combine their workflows. This reduces inefficiencies and saves time (e.g., writing code that takes into account the environment in which it is run). Figure 3-3 depicts DevOps as uniting the focus and activities of these previously disparate teams.
../images/482403_1_En_3_Chapter/482403_1_En_3_Fig3_HTML.png
Figure 3-3

DevOps brings together activities that were traditionally done by independent development, QA, and IT operations teams

The Real Meaning of Agile

In the book Accelerate,3 the authors make the point that
  • at the time the Agile Manifesto was published in 2001, Extreme Programming (XP) was one of the most popular Agile frameworks. In contrast to Scrum, XP prescribes a number of technical practices such as test-driven development and continuous integration … Many Agile adoptions have treated technical practices as secondary compared to the management and team practices that some Agile frameworks emphasize. Our research shows that technical practices play a vital role in achieving these outcomes.

The Agile Manifesto itself promotes 12 principles,4 the first of which is that “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.” And the ninth of which states “Continuous attention to technical excellence and good design enhances agility.”

To the extent that most development teams organize their work into sprints, and craft their requirements in the form of user stories, “Agile” has become the dominant practice for delivering software. But if deployments require hours or days of preparation, environments are inconsistent, and development teams are working on differing versions of the codebase, then actual agility necessarily suffers.

Real agility depends on being nimble with changing customer requirements and on promoting and deferring to the evolving understanding of the team. But the systems the team uses to do their work and the underlying architecture of the products they’re building are also critically important to achieving real agility.

What better measures of agility could there be than how often the team is able to deploy, how quickly, how often those deployments fail, and how quickly the team can recover?

The Three Ways of DevOps

In his books The Phoenix Project and The DevOps Handbook, Gene Kim popularized the concept of the Three Ways of DevOps. You can find excellent explanations in those books or in blog posts such as this one.5 The basic idea is depicted in Figure 3-4. I like to summarize these Three Ways as continuous delivery, continuous feedback, and continuous improvement.
../images/482403_1_En_3_Chapter/482403_1_En_3_Fig4_HTML.jpg
Figure 3-4

DevOps can be characterized by “Three Ways” of working, illustrated in this diagram

Continuous Delivery

The First Way is the left-to-right flow of work from Development to QA to IT Operations to Customer. To understand the process of continuous delivery, it helps to understand some basic concepts involved in this process.

The foundation for continuous delivery (and thus for implementing DevOps) is the use of version control. Version control is a mechanism to track and merge changes smoothly. There are many types of version control, but the most common type used by developers today is Git. The use of version control provides many benefits, but it also opens the door to all of the practices mentioned later. The reason for this is that code stored in version control can be accessed by automated scripts, with each commit tracked in version control reflecting an iterative improvement that is a candidate for testing and deploying.

Continuous integration means that teams work on a common trunk in the codebase and run automated tests with every commit to that trunk. “CI” is often used to refer to tools such as Jenkins that perform automated actions on a schedule or based on code changes. But the underlying meaning of CI is that no two developers are ever working on a codebase that diverges significantly from one another. CI has been a proven software development practice for decades, in contrast to an approach where teams develop in isolation for weeks, months, or years before eventually entering into a long and painful integration phase.

When using CI, it is typical that all code produced by development teams merges into a central repository, where an automated build validates it. This practice helps development teams detect, identify, and fix problems and bugs before releasing changes to customers. This “CI system” alerts the team to build or test failures, with checks being rerun for even the smallest change, to ensure your system continues to work flawlessly. Early detection and fixes are key to ensuring quality at the earliest possible stage. Developers should focus on setting up a simple continuous integration process as early as possible in the development lifecycle.

Continuous delivery means that all the configuration needed to recreate your application is stored in and deployed from version control in an automated way. It’s based on the preceding two practices and is the main technical capability at the heart of DevOps.

As mentioned earlier, DevOps is based on the practice of continuous delivery. DevOps brings together continuous delivery with lean management to maximize the throughput of valuable software and the stability of systems at the same time. That is, “move fast and don’t break things!”

Continuous Feedback

The Second Way is the feedback cycle going from right to left; the constant flow of feedback at all stages of the value stream to ensure we can prevent problems from happening again or enable faster detection and recovery. The necessary processes include the creation of fast automated test suites, monitoring the security, quality, and reliability of the work being passed through the pipelines and failing the pipeline as soon as a test fails, ensuring the code is always in a deployable state.

Continuous Improvement

The continuous delivery and feedback systems described earlier are called the “system of work”—the mechanism that enables valuable work to flow to production. With any changing system, entropy causes things to break down over time, there is no remaining the same. Only by applying effort to continuously improve the “system of work” can it continue to support and empower the whole organization. DevOps demands continual experimentation to improve the “system of work”, and to prioritize this system above the work itself. Maturing the DevOps pipeline involves taking risks and learning from success and failure. The necessary practices include creating a culture of innovation, risk taking, and high trust.

Lean Management

DevOps basically combines two movements: the technical practices of continuous delivery and the practice of Lean management and Lean product development that originated with Toyota. The Toyota Production System set the world standard for how to mass produce a top-quality product. And their product development processes set the world standard for how to quickly innovate to satisfy customers’ diverse needs. Lean Software Development was born from the realization that applying the same practices to software development increased quality and thereby company performance.

There are two pillars of the Lean approach (whether manufacturing or software): just-in-time and stop-the-line. Just-in-time is focused on speed, throughput, and efficiency. With software, the idea is to minimize the time required to deliver a requested feature through steps like automating deployments and identifying other bottlenecks in the process that don’t add value. One key to fast delivery is to break work into small batches. As each small batch is completed, it can be released, which is why the frequency of releases is an excellent indicator of whether teams are following this approach.

Stop-the-line means that as soon as any defect or abnormality is found, the production line (or deployment pipeline) stops and the top priority becomes identifying and uprooting the source of the problem to ensure it doesn’t happen again. The focus here is on stability and quality. With software, this is accomplished through building in checkpoints such as automated testing and validations, and rerunning those every time the codebase changes. The idea is to make the system autonomic, like your autonomic nervous system, where your reflexes recoil from fire without your having to consciously think about it. Having a culture of blameless postmortems is a clear foundation for this kind of approach.

The amount of time a customer spends waiting for a feature to be delivered is called Lead Time. What’s happening while the customer waits? Three things:
  • Valuable work is being done.

  • Work is being done that (in retrospect) doesn’t add value (and sometimes isn’t even necessary).

  • The feature is waiting on someone else to build/review/test/deploy it.

It’s sometimes hard to tell which actions add value and which actions don’t. But it’s always the case that time spent waiting doesn’t add any value. The fastest sustainable speed at which all of the valuable work could be done is called the Process Time. The difference between the Lead Time and the Process Time is one of the main types of waste.

If you think of the lifecycle of groceries, they’re first grown or manufactured, then they’re stored or shipped, then eventually they’re bought and used. The more time elapses between being grown and being used, the more likely they are to go bad. Software also ages quickly. More importantly, the longer the lead time, the longer it takes to get feedback from actual users. Building software is extremely complex, and the only reliable way to ensure things are built well is to get feedback quickly and repeatedly.

The essence of DevOps (and Lean software development) is to eliminate waste, especially time spent waiting. Reducing lead times allows for fast feedback, fast feedback allows for innovation, and innovation enables success.

One of the easiest ways to eliminate wasted time is to automate your deployments using continuous delivery. Implementing continuous delivery on Salesforce is one of the main focuses of this book.

Generative Culture

In his study of safety cultures, sociologist Ron Westrum famously categorized organizational cultures into pathological, bureaucratic, or generative.6 Pathological cultures are oriented around gaining and maintaining power. To maintain power, groups and individuals in pathological organizations tend to limit knowledge sharing and retain tight control over their areas of responsibility.

Bureaucratic cultures are rule oriented, with a focus on applying rules consistently across the organization. Bureaucratic cultures have an emphasis on fairness and on following processes.

Generative cultures, by contrast, are performance oriented. The focus in generative cultures is on getting the job done, rather than emphasizing control or process. Control is still important in generative cultures, as are rules and processes; but they are important only in serving the larger mission of organizational effectiveness.

The term DevOps itself indicates collaboration between Dev and Ops. By extension, DevOps involves collaboration with the QA teams, security teams, as well as business owners and subject-matter experts. The origins of DevOps in lean manufacturing imply looking at the entire software delivery chain strategically, to gradually improve the flow of work. The adoption of new development tools and best practices is done as a means to improve the entire system and thus requires the team to work together for the benefit of all.

For these reasons, Westrum’s generative culture model is an excellent description of a culture conducive to DevOps. DevOps requires collaboration between different teams as well as learning and experimentation to optimize software delivery. For many companies, the biggest challenge to adopting DevOps is establishing an open, performance-oriented culture that allows for such continuous improvement.

The 2018 State of DevOps survey asked respondents about their team’s culture and their organization’s culture. The survey analysis concluded that a generative culture is indeed indicative of better company performance. Importantly, it also found that adopting DevOps practices such as continuous delivery actually drives further cultural improvements by reducing the barriers to innovation and collaboration.

Blameless Postmortems

One manifestation of such a generative culture is an absence of finger-pointing. Development of a strong “safety culture” is recognized as important across many industries, notably healthcare, manufacturing, and transportation. In the aftermath of any incident (whether a train crash or an outage in an IT system), blameless postmortems should be conducted to determine how such incidents can be averted in future. Rather than ever settling on “human error” as a root cause, emphasis should be placed on the circumstances that allowed that error to occur. Human error itself has root causes, and a rich safety culture builds in protections that allow imperfect humans to nevertheless avoid such risks and dangers.

A powerful example of a blameless postmortem followed a headline-generating outage for Amazon Web Services. AWS has become the computing infrastructure for an enormous number of companies. On February 28, 2017, the S3 storage service in AWS’s main region went offline for 4 hours. This took a large number of major Internet companies like Quora and Trello offline during that time, since S3 is used to host web site files among many other things. AWS soon released a postmortem of that event,7 in which they identified that a typo from one of their admins triggered a chain of other problems.

Although human error was involved, nowhere in their analysis did they cite “human error” as a factor, let alone a root cause. Rather they dug deeper to ask what other circumstances allowed this mistake to unfold. They implemented several new protections and safety checks as a result. Despite the PR problems caused by this incident, there was no implication that the admin responsible was fired or disciplined. Rather energy was invested in further improving AWS to eliminate the risk of this kind of incident happening again in future.

A dramatic example of the long-term impact of improving safety culture can be found by looking at automobile fatalities in the United States over time. Figure 3-5 shows the dramatic increase in the number of miles driven per year, juxtaposed with the progressive reduction in risk of fatalities from automobile travel, along with a few practices that helped bring about these improvements. Blameless postmortems provide the opportunity for IT teams to make similar progress to build systems that are increasingly resilient, even as the velocity of innovation continues to increase.
../images/482403_1_En_3_Chapter/482403_1_En_3_Fig5_HTML.jpg
Figure 3-5

Progress on automobile safety in the United States over time8

The IT industry still has much to learn from the systematic improvements in quality and worker safety that have been implemented through such long-standing safety cultures.

The Research

The use of DevOps (continuous delivery and lean software development) has been shown to improve Software Delivery Performance (how fast you can release functionality in a stable way). According to the 2018 State of DevOps Report
  • [Software Delivery and Operational] Performance … enables organizations to leverage software to deliver improved outcomes. These outcomes are measured by many factors, including productivity, profitability, and market share as well as non-­commercial measures such as effectiveness, efficiency, and customer satisfaction. Our analysis shows that elite performers are 1.53 times more likely to meet or exceed their goals for organizational performance.

The 2018 State of DevOps Report also shows that teams with high Software Delivery Performance (SDP) exceeded those with low SDP with
  • 46 times more frequent code deployments

  • 2,555 times faster lead time from commit to deploy

  • 7 times lower change failure rate (../images/482403_1_En_3_Chapter/482403_1_En_3_Figa_HTML.gif as likely for a change to fail)

  • 2,604 times faster mean time to recover from downtime

The use of continuous delivery (version control, CI/CD, etc.) leads to increased software delivery performance, 38% less rework and unplanned work, and 66% more new (constructive) work. High-performing DevOps teams also have higher employee NPS than low-performing teams.

Business Impact of Adopting DevOps

The State of DevOps Report affirms the positive impact that adopting DevOps has on businesses. These studies validate that organizations with high-performing DevOps processes outperform their peers financially by enabling faster time to market for features and increased customer satisfaction, market share, employee productivity and happiness thus allowing them to win in an increasingly competitive economy.

As shown in Table 3-1, organizations like Amazon, Google, Twitter, Facebook, and Etsy embody DevOps processes and routinely deploy hundreds or even thousands of production changes per day while still preserving world-class “reliability, stability, and security.” These organizations are more agile, and the time required to go from code committed to successfully running in production is an average of 8,000 times faster. In contrast, organizations that require weeks or months to deploy software are at a significant disadvantage.
Table 3-1

Software Delivery Performance metrics from some industry-leading software companies9

Company

Deployment Frequency

Deployment Lead Time

Reliability

Customer Responsiveness

Amazon

23,000/day

Minutes

High

High

Google

5,500/day

Minutes

High

High

Netflix

500/day

Minutes

High

High

Facebook

1/day

Hours

High

High

Twitter

3/week

Hours

High

High

Typical Enterprise

Once every 9 months

Months or quarters

Low/medium

Low/medium

Not only do these organizations do more work, they also have far better outcomes. When they deploy code, it is twice as likely to run successfully (i.e., without causing a production outage or service impairment), and when a change fails and results in an incident, the time required to resolve the incident is far faster.

With DevOps in place, instead of deployments being performed only at nights or on weekends, full of stress and chaos, these organizations are deploying code throughout the business day without most people even noticing.

Developers get feedback on their work constantly: linting tools, automated unit, acceptance, integration tests, and other build validations run continually in production-­like environments. This gives continuous assurance that the code and environments will work as designed and that code is always in a deployable state.

How DevOps Helps

The State of DevOps Report confirms the importance of technical practices such as continuous delivery in improving software delivery performance and thus company performance. But that same survey also speaks to the benefits that come directly to teams adopting these practices. The use of continuous delivery itself drives a positive organizational culture, high job satisfaction, and higher employee engagement.

In addition, the use of continuous delivery (version control, CI/CD, etc.) leads to less rework, less deployment pain, and thus less burnout. This is a virtuous cycle. Practices that benefit the development team also benefit the customer; and happier customers in turn make the development team more engaged.

Better Value, Faster, Safer, Happier

Jonathan Smart, who led Barclays Bank on a journey of enterprise-wide DevOps transformation, summarized DevOps as “Better value, faster, safer, happier.”10

Better means always striving to improve the quality of our work and our products. This implies continuous improvement.

Value means using agile development and design thinking to address and adapt to the needs of end users. The focus here is on delivering the desired results to end users and improving their experience. Software is not “done” until it’s in the hands of users, the ones who actually experience value from it.

Faster means using techniques such as continuous delivery to release more quickly. Speed matters; life is short. The more time elapses between requesting something and getting it, the less time that solution will remain valuable. The more time between creating something and getting feedback on it, the more time is wasted in waiting and inevitably forgetting how to improve it.

Coupling increasingly frequent releases with increasingly automated testing allows you to innovate for customers faster, adapt to changing markets better, and improve your product faster. The quicker you can release new features and fix bugs, the faster you can respond to your customers’ needs and build competitive advantage.

Safer means focusing on stability and integrating automated quality and security scanning into the development workflow. Just as when driving in a car, speed only matters if you can arrive safely. Safety means that the solutions we deliver will work and that they won’t break other things. Safety implies testing, or quality assurance. Testing means testing that the software does what it’s supposed to do, is resilient against changing conditions, and doesn’t introduce regression failures (break things that used to work). Safer also implies security, which is an aspect of structural quality.

Automated testing gives confidence that each change is functional and safe. Monitoring and logging practices help teams stay informed of performance or issues in real time.

And happier refers to continuously improving the development experience and the customer experience of users. We’re humans developing for humans. The experience should be increasingly positive for the developers creating functionality and increasingly positive for the end users consuming it.

Note that all of these terms are relative and subjective. This implies an ongoing process, where value is flowing from developers to end users (from creators to consumers), and the whole process is improving on an ongoing basis . We all want better and better experiences. Wisdom dictates that if we focus on improving our actions, our experiences will naturally improve. And so wisely, we strive to improve ourselves and our teams, so that together we can do a better and better job.

The team with the fastest feedback loop is the team that thrives. Full transparency and seamless communication enable DevOps teams to minimize downtime and resolve issues faster than ever before.

Measuring Performance

One of the main contributions of the State of DevOps Report has been to focus consistently on the same key metrics year after year. Although the questions in their survey have evolved and new conclusions have emerged over time, the four key metrics used as benchmarks have remained in place:
  1. 1.

    Lead time (from code committed to code deployed)

     
  2. 2.

    Deployment frequency (to production)

     
  3. 3.

    Change Fail Percentage (for production deployments)

     
  4. 4.

    Mean Time to Restore (from a production failure)

     

The book Accelerate provides a detailed explanation of each of these metrics and why they were chosen; those points are summarized here.

The first two of these metrics pertain to innovation and the fast release of new capabilities. The third and fourth metrics pertain to stability and the reduction of defects and downtime. As such, these metrics align with the dual goals of DevOps, to “move fast, and not break things.”

These also align with the two core principles of Lean management, derived from the Toyota Production System: “just-in-time” and “stop-the-line.” As mentioned earlier, just-in-time is the principle that maximum efficiency comes from reducing waste in the system of work and that the way to reduce waste is to optimize the system to handle smaller and smaller batches and to deliver them with increasing speed. ­“Stop-the-­line” means that the system of work is tuned not just to expedite delivery but also to immediately identify defects to prevent them from being released, thus increasing the quality of the product and reducing the likelihood of production failures.

Lead Time is important because the shorter the lead time, the more quickly feedback can be received on the software, and thus the faster innovation and improvements can be released. Accelerate shares that one challenge in measuring Lead Time is that it consists of two parts: time to develop a feature and time to deliver it. The time to develop a feature begins from the moment a feature is requested, but there are some legitimate reasons why a feature might be deprioritized and remain in a product’s backlog for months or years. There is a high inherent variability in the amount of time it takes to go from “feature requested” to “feature developed.” Thus Lead Time in the State of DevOps Report focuses on measuring only the time to deliver a feature once it has been developed. The software delivery part of the lifecycle is an important part of the total lead time and is also much more consistent. By measuring the Lead Time from code committed to code deployed, you can begin to experiment with process improvements that will reduce waiting and inefficiency and thus enable faster feedback.

Deployment frequency is the frequency of how often code or configuration changes are deployed to production. Deployment frequency is important since it is inversely related to batch size. Teams that deploy to production once per month necessarily deploy a larger batch of changes in each deployment than teams who deploy once per week. All changes are not created equal. Within any batch of changes, there will be some which are extremely valuable, and others that are almost insignificant. Large batch sizes imply that valuable features are waiting in line with all the other changes, thus delaying the delivery of value and benefit. Large batches also increase the risk of deployment failures and make it much harder to diagnose which of the many changes was responsible if a failure occurs. Teams naturally tend to batch changes together when deployments are painful and tedious. By measuring deployment frequency, you can track your team’s progress as you work on making deployments less painful and enabling smaller batch sizes.

Change Fail Percentage measures how frequently a deployment to production fails. Failure here means that a deployment causes a system outage or degradation or requires a subsequent hotfix or rollback. Modern software systems are complex, fast-changing systems, so some amount of failure is inevitable. Traditionally it’s been felt that there’s a tradeoff between frequency of changes and stability of systems, but the highly effective teams identified in the State of DevOps Reportare characterized by both a high rate of innovation and a low rate of failures. Measuring failure rate allows the team to track and tune their processes to ensure that their testing processes weed out most failures before they occur.

Mean Time to Restore (MTTR) is closely related to the Lead Time to release features. In effect, teams that can quickly release features can also quickly release patches. Time to Restore indicates the amount of time that a production system remains down, in a degraded state, or with nonworking functionality. Such incidents are typically stressful situations and often have financial implications. Resolving such incidents quickly is a key priority for operations teams. Measuring this metric allows your team to set a baseline on time to recover and to work to resolve incidents with increasing speed.

The 2018 State of DevOps Report added a fifth metric, System Uptime, which is inversely related to how much time teams spend recovering from failures. The System Uptime metric is an important addition for several reasons. First of all, it aligns with the traditional priorities and key performance indicators of sysadmins (the operations team). The number one goal of sysadmins is Keeping the Lights On or ensuring that systems remain available. The reason for this is simple: the business depends on these systems, and when the systems go down, the business goes down. Outages are expensive.

Tracking System Uptime is also central to the discipline of Site Reliability Engineering (SRE) . SRE is the evolution of the traditional sysadmin role, expanded to encompass “web-scale” or “cloud-scale” systems where one engineer might be responsible for managing 10,000 servers. SRE emerged from Google, who shared their practices in the influential book Site Reliability Engineering.11 One innovation shared in that book is the concept of an “error budget,”12 which is the recognition that there is a tradeoff between reliability and innovation and that there are acceptable levels of downtime.
  • Put simply, a user on a 99% reliable smartphone cannot tell the difference between 99.99% and 99.999% service reliability! With this in mind, rather than simply maximizing uptime, Site Reliability Engineering seeks to balance the risk of unavailability with the goals of rapid innovation and efficient service operations, so that users’ overall happiness—with features, service, and performance—is optimized.13

The State of DevOps Report shows how these five metrics are interrelated, illustrated in Figure 3-6. The timer starts on Lead Time the moment a developer finishes and commits a feature to version control. How quickly that feature is released depends on the team’s deployment frequency. While frequent deployments are key to fast innovation, they also increase the risk of failures in production. Change Fail Percentage measures this risk, although frequent small deployments tend to reduce the risk of any given change. If a change fails, the key issue is then the Mean Time to Restore service. The final metric on availability captures the net stability of the production system.
../images/482403_1_En_3_Chapter/482403_1_En_3_Fig6_HTML.jpg
Figure 3-6

How the five key software delivery and operations performance metrics tie together

Together, these metrics constitute a team’s Software Delivery Performance. The goal of any DevOps initiative should be to improve Software Delivery Performance by strategically developing specific capabilities such as continuous delivery and the use of automated testing.

How your team measures these capabilities is another challenge. But Accelerate makes a compelling argument for the validity of surveys. Automated metrics can be implemented over time, although the mechanism to do this will depend on how you do your deployments. Salesforce production orgs track past deployments, but it’s not currently possible to query those deployments, and so you would need to measure deployment frequency (for example) using the tools you use to perform the deployments. Salesforce publishes their own service uptime on https://trust.salesforce.com , but that gives no indication of whether critical custom services that your team has built are in a working state or not.

Surveys provide a reasonable proxy for these metrics, especially if responses are given by members of the team in different roles. Guidelines for administering such surveys are beyond the scope of this book, but your teams’ honest responses are the most critical factor. Avoid any policies that could incent the team to exaggerate their answers up or down. Never use these surveys to reward or punish; they should be used simply to inform. Allow teams to track their own progress and to challenge themselves to improve for their own benefit and for the benefit of the organization. As it says in the Agile Manifesto, “At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.”

Enhancing Performance

High software delivery performance is associated with objective improvements in corporate performance (both commercial and noncommercial) and subjective improvements to deployment pain, burnout, and employee satisfaction. It’s therefore in the best interest of everyone in an organization to strive to improve their software delivery performance by monitoring the metrics mentioned earlier.

What methods are available to improve software delivery performance? The research from the State of DevOps Report has identified 32 factors that drive this performance. The book Accelerate categorizes those factors into five groups:
  1. 1.

    Continuous delivery

     
  2. 2.

    Architecture

     
  3. 3.

    Product and process

     
  4. 4.

    Lean management and monitoring

     
  5. 5.

    Cultural

     

In this book, we’ll focus almost entirely on how to implement technical practices related to architecture and continuous delivery, with some references to monitoring as well. As such, our goal here is not to provide a comprehensive prescription for all the cultural, management, and process improvements that might be needed, but to at least provide more guidance and definition on how a high-functioning Salesforce implementation would be architected, deployed, monitored, and maintained.

This chapter provides a brief summary of the cultural and lean management practices necessary for success, but for further guidance the reader is encouraged to look at the many excellent books, articles, and talks that are available on these topics.

Optimizing the Value Stream

A fundamental concept in Lean software management is to understand the software development and delivery process in terms of how each aspect of the process contributes (or does not contribute) to value for the end user. As mentioned earlier, value reflects the benefit that the end user receives and would be willing to pay for. As software moves through the development and delivery process, different individuals and teams add value through their contributions. Their ongoing contributions to the process are described as flowing into a “value stream” that delivers ongoing value to end users.

Value Stream Mapping is a key tool in lean management. This involves mapping each stage of the development and delivery process and then gathering three metrics from each stage: lead time, process time, and percent complete and accurate. Lead time is the total amount of time that it takes from a work item entering that stage until it leaves that stage. Process time is the amount of time that would be required for that activity if it could be performed without interruption. And percent complete and accurate is the percentage of the output from that stage that can be used, as is, without requiring rework or clarification. The goal of this mapping is to identify slowdowns where work items spend time waiting or could be completed more efficiently, as well as stages that suffer from quality issues. It’s also possible that this process uncovers steps that don’t add much value and can be eliminated or simplified. The core concept of lean management is to assess this process and identify how to eliminate waste from this system, to maximize the flow of value.

The potential technical improvements that can be made to a software product or to the way of working on that software product are limitless. This book alone introduces a huge range of possible improvements to the way code is written or developed, the way it’s tested, packaged, deployed, and monitored. But it is unwise to assume that adopting DevOps means that we should simultaneously take on all of these improvements or make improvements arbitrarily. Instead, the goal should be to identify the bottlenecks in the system that limit the overall flow of value and to optimize the system around those bottlenecks.

Begin by identifying the current state value map, and then craft a future state value map that aims to increase the percent complete and accurate of the final product or reduce the amount of waste (lead time where no process is being performed). For more guidance, see the book Lean Enterprise: How High Performance Organizations Innovate at Scale 14 or Value Stream Mapping: How to Visualize Work and Align Leadership for Organizational Transformation.15

It can be very challenging to discern where to begin such a process. One complementary approach known as the theory of constraints can provide a practical simplification to help target priority areas for improvement.
../images/482403_1_En_3_Chapter/482403_1_En_3_Fig7_HTML.jpg
Figure 3-7

A sample value stream map

Theory of Constraints

The concept known as the theory of constraints was introduced and popularized by Eliyahu M. Goldratt in his book The Goal.16 That book is cited extensively in DevOps literature and emphasizes a fourfold approach to optimizing the flow of value through a system:
  1. 1.

    Identify the constraint

     
  2. 2.

    Exploit the constraint

     
  3. 3.

    Subordinate and synchronize to the constraint

     
  4. 4.

    Elevate the performance of the constraint

     

In layman’s terms, the idea is that the overall performance of any system at any given time will always be limited by a single constraint. In a software development process, the constraint might be that there are not enough developers, or that the testing process takes too long, or that the deployment process can only be done at certain times, or that there is not any additional demand from customers, and so on. The most important point to note is that improvements to any part of the system other than this constraint will not yield any significant benefit. For this reason, the most critical step to making overall improvements is to first identify the constraint.

Identifying the constraint on a system can be a challenging process, combining measurement, intuition, and experimentation. One approach to identifying the constraint is to look for a buildup of “inventory” in a system, since this tends to indicate a point where the process slows down. The concept of inventory is borrowed from manufacturing, but can be extended to the software development process and relabeled as “work in progress.” Where does work in progress (WIP) accumulate in your development process? You can ask your team questions like how large is the backlog for developers? How many pieces of work are waiting for review by a tech lead? How much work is waiting to be tested? How many items are waiting to be deployed? Asking questions like this and observing trends over time can help you home in on the main constraint in your process.

Once the constraint has been identified, the biggest improvement that can be made is to exploit that constraint—to make sure that it is fully utilized. At the time that Goldratt wrote The Goal, it was common in manufacturing to focus on getting maximum utilization from every single system involved in a manufacturing process. The equivalent in a software team is ensuring that everyone is busy all the time. But in practice this local optimization of each part of the system does not optimize the performance of the overall system, because overall performance is always defined by a single constraint. It is that constraint that needs to be optimized, getting the maximum sustainable productivity out of that constraint.

The third stage is to subordinate and synchronize to the constraint. This means that every other part of the system should be seen as a means to enable and support the constraint. The priority for other systems should be to ensure that the constraint is never waiting on “raw materials” (such as specifications for work) and that the work produced by the constraint is quickly whisked away to the next phase of the process.

For example, if you determine that the capacity of the development team is the limiting factor on your ability to deliver value, then the other individuals or processes that contribute to the value stream—business analysis, architecture, testing, and deployment—should ensure that the developers can be made as effective as possible. That means ensuring that they have a backlog of work and clear architectural guidance, and that once their work is complete, it can be tested and deployed as quickly as possible. Importantly, releasing quickly also allows bugs to be identified quickly so that developers can address those while the relevant code is still fresh in their minds.

Having identified the constraint, the second and third stages of optimization function to maximize the throughput of the constraint (first by using it fully and then by organizing everything else around it). It is entirely possible that through making these optimizations, the original constraint ceases to be the constraint. By definition, the constraints on a system are subject to moving and changing as conditions evolve. This is why it’s important to begin by mapping the entire value stream and continuing to monitor each component of it to gain insight into your overall flow. If you find that the constraint has changed, then you have just achieved the first level of optimization for that new constraint: identifying it. Your task then becomes how to exploit the new constraint, and so forth.

If a constraint persists despite your maximizing its throughput, you have only one remaining option: to elevate the performance of that constraint. When your constraint is one or more individuals, elevating the performance of that constraint might take the form of giving them better tools, training or coaching them, hiring additional team members, or even replacing them and moving them to a different role if necessary.

This fourfold process is a continual dance. There is never a time when there is not some constraint on a system. Even when the market itself is your constraint, your practice is the same: to exploit that market, subordinate your other activities to feeding market demand, and finally work to elevate demand through marketing and publicity.

Even the optimization process itself is subject to unseen constraints. It takes time, effort, and situational awareness to understand how your value stream is performing; and it can take time, effort, and money to make the changes necessary to improve that performance.

From the point of view of the theory of constraints, this continual dance is the essence of effective management.

Enabling Change

Suffice it to say, implementing or improving any of these capabilities is a change management process that relies on human communication, learning, and experimentation.

Industry surveys conducted by McKinsey17 indicate that only 25% of transformation initiatives have been very or completely successful; however, organizations that take multiple parallel actions to improve and especially those which emphasize communication have a 79% success rate. In any case, the DevOps journey is not one that is ever “done.” The point is to provide a clear vision for your team about areas for possible improvement; to provide training, examples, and encouragement to help them understand how to proceed; and to proceed systematically and incrementally with a process of continuous improvement.

It’s helpful to consider the law of diffusion of innovation , first introduced by Everett Rogers in 196218 and concisely summarized in this diagram. According to this widely cited model, individuals adopt a new process (such as DevOps or Salesforce DX in this case) at different rates. A small few individuals fall into the Innovators category. They are the ones who initially experiment with a technology and lay the early foundations for others to follow. They are followed by early adopters, who tend to copy more than innovate, but who are nevertheless bold and enthusiastic about taking on this new process. Innovators and early adopters may only account for 16% of a total population. But they are truly trailblazers and open the door for subsequent adoption. At these early stages, it may seem that adoption levels are very low, which can be disheartening for those trying to champion change. But these initial stages of adoption are the foundation that eventually leads to a tipping point as the early majority and late majority begin to follow suit. The “S” shaped curve in this diagram shows total adoption and depicts how the slow early phases give way to a period of fast diffusion as the majority gets on board.
../images/482403_1_En_3_Chapter/482403_1_En_3_Fig8_HTML.jpg
Figure 3-8

An illustration of the law of diffusion of innovation. Eagerness to adopt a new technology or practice typically follows a bell curve distribution across a population. The cumulative increase in adoption follows an S curve (the integral of the bell curve)19

This law of diffusion of innovation has been the basis for many other analyses. Two relevant observations that are frequently made are that there is a tipping point in this system at which adoption becomes self-sustaining, but also that there is a chasm that needs to be crossed when you transition to majority adoption.

First, the good news. Once you have gained adoption from the innovators and the early adopters (the initial 16% of your target population), you have reached a tipping point where adoption can become self-sustaining, as shown in Figure 3-9. As the early and late majority begin to adopt these processes, the momentum of word-of-mouth marketing and other network effects begins to take hold. People begin to follow this process because it starts to become standard practice. Their friends are doing it; other teams are doing it; the team they used to be on did it, and so on. Malcolm Gladwell’s bestselling book The Tipping Point 20 was based partly on these same ideas.
../images/482403_1_En_3_Chapter/482403_1_En_3_Fig9_HTML.jpg
Figure 3-9

As the early majority begins to embrace an innovation, adoption reaches a tipping point where further adoption tends to become self-sustaining21

Now for the bad news. While there will always be people who explore and experiment with new approaches, Geoffrey Moore pointed out in Crossing the Chasm 22 that for new and disruptive technologies, there is a chasm that exists between the early adopters and majority adoption, illustrated in Figure 3-10. Many very promising technologies have achieved adoption from a small corps of aficionados, but never managed to get wide market adoption. Moore explains that this is because there is a markedly different psychodynamic between innovators and the bulk of the population. To cross this chasm, Moore argues, you must reconsider your target market for each stage and tailor your marketing message and medium differently when appealing to the majority.
../images/482403_1_En_3_Chapter/482403_1_En_3_Fig10_HTML.jpg
Figure 3-10

Early adoption of an innovation is driven by different motivators than later adoption. This leads to a “chasm” that often prevents adoption by the majority. The messaging and enablers for an innovation need to change if it is to appeal to the majority23

These ideas are equally applicable for the commercial adoption of a technology or for internal change enablement with one important difference. Inside an organization there is always the possibility of making a change mandatory, tracking and rewarding based on adoption metrics, and so on. As much as they might wish for it, such options are not available to those marketing commercial products!

Nevertheless, effective change inside an organization is most powerful and sustainable when it’s driven by intrinsic motivators—when people feel that the new process truly benefits them and their team. To take this organic approach, at the beginning, you should seek to attract and appeal to potential DevOps innovators within your company, working to enable them. As you get adoption from this initial group, you can gradually shift your focus to gaining broader adoption by considering different strategies as you begin to roll out change across more and more teams.

DevOps in general and Salesforce DX in particular represent a paradigm shift for Salesforce developers. There are significant changes to behavior that are required for teams to shift from making and deploying changes in an ad hoc or manual way to tracking and automating this process. Those charged with leading change in their organization should take heart and emphasize getting buy-in from innovators and early adopters while encouraging them to share their experience with others around them. They then become the basis on which you can begin to work toward majority adoption, amplifying those early success stories and building a network of support that can help these changes take hold in the rest of your company.

Leading Change

If you are in charge of a small team of Salesforce developers, you may be able to lead adoption of Salesforce DX in a simple and organic way just by piloting its usage and demonstrating some of its benefits. But if change needs to happen across a large and distributed organization, you have entered into the realm of organizational change management. If you have access to experts in organizational change, you should lean on them for advice on succeeding at this process.

A leading voice in organizational change management is John Kotter, whose book Leading Change 24 has been an important and influential guide for many organizational initiatives. Kotter defines an eight-stage process by which effective change takes place. The eight-stage process for leading effective change25 is shared here, together with some notes on the relevance to improving DevOps processes.

Step 1: Create Urgency

None of us act unless there’s a need to. Especially when it comes to changing habitual behaviors and learning new practices, the motivation for change must be strong to overcome our inertia. The same holds true for organizations. Organizational change derives from a sense of urgency , and the first step in effecting broad change is to stimulate this sense of urgency in your leadership team.

Kotter suggests that for change to be successful, 75% of a company’s management needs to “buy into” the change. When it comes to DevOps, this mostly pertains to the managers responsible for overseeing development teams. But changes in process can sometimes involve temporary slowdowns as a team learns new practices.26 There needs to be a commitment from anyone who is a stakeholder in the development process, including project managers, internal customers, and even external customers if you are a consulting company doing development at their behest.

Urgency is built from understanding the problems implicit in the current approach and the benefits of adopting a new approach. The State of DevOps Report provides compelling statistics on the impact of adopting DevOps practices, and I’ve touted those statistics hundreds of times to thousands of listeners to help gain buy-in and motivation.

It’s important for you to also identify risks and opportunities that are specific to your company. In Chapter 12: Making It Better, I share Lex Williams’ story of Salesforce’s own DevOps adoption. Their technical team had been arguing for years that production changes should only be made through a continuous delivery system. But it was only once they started documenting the financial cost of outages arising from ad hoc production changes that they managed to get executive approval to adopt that kind of governance.

Begin to track metrics on how long it takes your teams to deploy to production, merge codebases, perform regression tests, and so on. Take note of how often one team is prevented from deploying critical changes because they have to wait on other teams to complete their work. Gather statistics and explanations to support your vague sense that processes could be more efficient or effective than they currently are. These arguments form the basis for convincing other stakeholders of the need for change.

At the same time, these analyses need to be honest, and you need to listen to counterpoints and have dialog around the need for change as well as possible risks. There are indeed risks associated with change. But by discussing costs and benefits clearly and honestly, you can help yourself and others discern when the risks of not making these improvements outweigh the risks of making them.

Step 2: Form a Powerful Coalition

The first step is the most important, and you should spend time to make sure you have won organizational support before proceeding . But buy-in from management is only the beginning. You now need to gather others who can act as change agents within the company.

Change takes leadership. But leadership happens in many ways, at many levels. You need to find influential people across your organization who are similarly committed to seeing these changes take root. These people may or may not hold traditional leadership roles. Their influence may instead derive from their length of time at the company, their technical expertise, their passion, or their social connections.

Connect with these people to form a coalition. Ask them to commit to helping bring about this change, and work on building trust and collaboration within this initial group. It is helpful to ensure that you have a broad mix of people from different roles and different groups within your organization. For example, at Appirio, we began our DX initiative with a survey of all our technical consultants in which we asked them “which Appirian has helped you the most to improve your coding skills.” This survey helped us to identify influencers across different levels and geographic regions. We brought these people together as evangelists, giving them early access to training and demos as we began to promote Salesforce DX.

Step 3: Create a Vision for Change

Humans are remarkably good at telling and remembering stories. And the most effective communicators rely on stories to convey the essence of complex messages in memorable and impactful ways. Salesforce has poured a phenomenal amount of money into their sales and marketing efforts; and marketing is fundamentally about storytelling.

The tagline for Salesforce DX is “Build together and deliver continuously with a modern Salesforce developer experience.”27 That succinct statement creates a vision , which itself inspires change. “Build together” speaks to collaboration and promises easy collaborative development even across large and distributed teams. “Deliver continuously” speaks to easing deployments and helping end users get ongoing value from development. “A modern developer experience” speaks to the promise of replacing tedious manual processes with powerful and automated tools.

What is the vision for modernizing your own Salesforce development experience?

Think about the values that are most important for this initiative. Are you most concerned about speed? Security? Reliability? Ease of debugging?

Based on these values, write out a one- or two-sentence summary of what the future looks like once these changes are in place. This becomes the vision statement for your change.

Next craft a strategy to achieve that vision. The strategy adds detail that you’ll need as you begin to roll out changes. But the first step in your strategy is to regularly reinforce the vision and ensure that everyone in your change coalition is able to articulate this vision and some key aspects of the strategy. This is the message that you need to build and amplify. It needs to be clear, simple, and compelling so that the story can be told, remembered, and retold again and again throughout the organization.

Step 4: Communicate the Vision

Having gathered support from management, built a coalition of change agents, and established a clear and compelling vision for change , you now need to communicate that vision repeatedly across many channels.

People are subjected to many messages and stories every day. In a busy company, even attendance at ongoing training or all-hands meetings may be limited. So for a message to gain traction, it needs to be heard repeatedly, across different mediums, over a prolonged period. At one point in the Appirio DX initiative, I recognized that many people in our organization lacked grounding in some basic DevOps concepts. So I initiated a “DevOps December” campaign to reinforce some basic DevOps ideas across many channels.

We began the campaign somewhat quietly with posts on our internal Chatter group. But my manager encouraged me that we should reiterate these messages across different channels. “I want people to have DevOps coming out of their ears. I want them to hear about this so much that I start getting complaints!” he said. I happily obliged and sent out daily “byte-sized” updates by both email and Chatter, along with an appearance on a company all-hands call, several open webinars, and a dozen small group meetings. Eventually, he did receive complaints, so we limited the volume and distribution a bit. But we were both delighted with the impact and the reach. No one at the company escaped that December without learning a bit about DevOps.

This formal messaging is not the only way to reinforce the vision. Your actions speak louder than words. So embed these concepts into how you work. Call out teams who are adopting parts of these practices and highlight the benefit they’re receiving. Invite people from those teams to talk about their process . Look for examples in other technologies and share those to bring inspiration.

Tie everything back to the vision. And look for opportunities to incent people to move toward this goal, rewarding them when they do.

Step 5: Remove Obstacles

Repeated communication represents the “happy path” of sharing the vision for change. But it’s entirely natural for you to encounter obstacles as you move toward this goal. Those obstacles may be in the form of skeptics or naysayers who emphasize the shortcomings with the new process or downplay the need for change. There may also be processes or structures in place that get in the way of change.

I’ve encountered senior technical architects who have said that it will never be possible for us to get all of our teams using version control, or that Salesforce DX is not mature enough or a high enough priority for most teams to adopt. Such voices can represent healthy skepticism, but in many cases they are simply based on these individuals’ own inertia or lack of experience with this new way of working.

Listen to skeptics, and make sure you’re understanding the doubts and risks being expressed. But be on the lookout for voices and processes that are actively standing in the way of change and figure out how to overcome these. Help educate these skeptics if their concerns are not valid. Or help them understand how the benefits of change outweigh the disadvantages. There is a learning curve to adopting version control. But every developer I’ve talked to who has worked extensively with version control and continuous delivery would never go back to their old way of working and would want these systems in place on any project they were on in future.

If the obstacles relate to time challenges, the need for training, gaps in tooling, and so on then address those obstacles appropriately.

Kotter’s eight steps to effective change were originally based on his analysis of how change efforts failed in organizations . Having studied dozens of transformation efforts across 15 years, he wrote an article called “Leading Change: Why Transformation Efforts Fail” in which he identified that change efforts fail for one of eight reasons, which are the converse of these eight steps for effective change. Your role in leading change is to identify any obstacles to transformation and uproot them rather than letting them undermine the success of your effort.

Step 6: Create Short-Term Wins

Success begets success.

One important conclusion from the law of diffusion of innovation is that Salesforce’s Trailhead motto is not strictly true. We’re not all trailblazers, at least not in every aspect of our lives. Most people, most of the time, are trail followers. And there’s nothing wrong with that.

When it comes to implementing Salesforce DX or other DevOps initiatives, you can expect at most 2.5% of the population to be true trailblazers. To extend the analogy, these are the innovators who tromp through the wilderness and blaze (mark) trees to show others where to go. They’re followed by the equally intrepid 13.5% of early adopters who by analogy are perhaps clearing the trail and ensuring that it’s increasingly easy to follow.

What these trailblazers offer are examples of successes, small and large. And it is these successes that you need to amplify, advertise, and celebrate. Keep track of these successes and share them.

My brother is an extremely seasoned mountaineer, who has traversed almost every terrain you can imagine. But for myself and the majority of the population, the best we’ll do is hiking well-marked trails, while staying in range of cellphone towers that allow us to double-check Google Maps. It’s the same with most of the development teams at our organization. Their adoption will come when they see clear examples of other teams that have succeeded.

You can strategically choose small early wins to build everyone’s confidence in this process. Nowhere is this more important than with refactoring your codebase to make use of Salesforce DX unlocked packages. Many people have tried and failed to convert their entire org into a single massive package. But the most effective approach is to first build a single relatively simple package and ensure you can deploy it across all of your orgs. Unlocked packages make it easy to add unpackaged metadata into a package, so once teams have established initial success with that process, they can build on that strength as their packages grow and multiply.

Create short-term targets , especially quick wins that you can confidently achieve. This gives everyone on the team increased confidence and helps pacify critics and those who might oppose your efforts.

Step 7: Build on the Change

Kotter argues that many change projects fail because victory is declared too early. Quick wins are only the beginning of what needs to be done to achieve long-term change, and your goal here is to effect a deep and lasting change in approach.

On the basis of your initial successes, keep building. Continue to set targets for training and adoption. And importantly, encourage teams to track their own development and delivery metrics and practice continuous improvement.

Consider establishing a center of excellence around DevOps or Salesforce DX practices. This provides the opportunity for disparate teams to share their challenges and successes. This kind of ongoing knowledge transfer is important.

Step 8: Anchor the Changes in Corporate Culture

The final stage is to ensure that these practices become embedded in corporate culture, so that they can become self-sustaining and are simply the way the company operates.

When I joined Appirio, the organization had an extremely well-established performance-oriented culture . From day one the executive team championed open communication, transparency, collaboration, and efficiency. In addition, the agile practices of working in sprints, using user stories, and so forth are second nature. There is still work to do to embed DevOps practices into the culture and to ensure they are as natural to the organization in the future as sprints and user stories are today.

It’s important to see the broader context in which these practices exist, so that even sales and business people recognize that a reason our organizations can be so effective is that we empower our developers and continuously optimize and automate our software delivery processes. It is only when such practices become part of your corporate DNA that you can have confidence that this change effort will outlive any of the original instigators, and be passed from generation to generation of the organization, despite the constant churn and turnover many IT organizations face.

Summary

DevOps is a rich and growing area in the IT world. The foundations of DevOps have their roots in early automation that developers enacted to facilitate their own workflow. But the practices continue to mature, become clarified, and grow in adoption.

DevOps combines the management and cultural practices of lean software development with the many technical practices that enable continuous delivery. Its business impacts have been analyzed extensively through the State of DevOps Reports and other studies, which conclude that these practices bring benefits that reach far beyond the development team.

Because software development and delivery is increasingly central to achieving organizational missions, the significance of DevOps is growing as well. Organizations that implement the various capabilities that lead to high software delivery performance are twice as likely to meet or exceed their commercial and noncommercial goals.

The business benefits of using SaaS systems like Salesforce are very well established. But DevOps practices are not yet common in the Salesforce world. There is an enormous amount that Salesforce practitioners can learn from the experience and successes achieved elsewhere in the DevOps world. Salesforce DX unlocks the door to combining the benefits of SaaS with the benefits of DevOps and allowing our development teams to be as effective as possible.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.140.160