Tuesday, October 29, 2019

Accelerate Chapter 9 Discussion Points

Chapter 9 of Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations, is about making work sustainable.

  • Burnout and deployment pain are important issues to address
  • Deployment pain
    • Highlights the friction and disconnect that exist between
      • The activities used to develop and test software and 
      • The work done to maintain and keep software operational
    • This is where development meets IT operations
    • Where code deployments are most painful, you'll find the poorest software delivery performance, organizational performance, and culture
    • It is also a concern when development and test teams have no visibility into code deployments
      • If they aren't aware of the deployment process, there are probably barrier hiding the work from them
      • Barrier that hide the work of deployment from developers are rarely good, because they isolate developers from the downstream consequences of their work
    • Teams reduce deployment pain when they improve key technical capabilities, such as:
      • Implement comprehensive test and deployment automation
      • Use continuous integration, including trunk-based development
      • Shift left on security
      • Effectively manage test data
      • Use loosely coupled architectures
      • Can work independently
      • Use version control of everything required to reproduce production environments
    • The technical practices that improve our ability to deliver software with both speed and stability also reduce the stress and anxiety associated with pushing code to production
    • There's a high correlation showing that the more painful the code deployments are, the poorer the IT performance, organizational performance, and organizational culture
    • Most deployment problems are caused by a complex, brittle deployment process stemming from these factors:
      • Software is often not written with deployability in mind
      • Manual changes must be made to production environment as part of the deployment process
      • Require multiple handoffs between teams, particularly in siloed organizations
    • To reduce deployment pain:
      • Build systems that:
        • Are designed to be deployed easily into multiple environments
        • Can detect and tolerate failures in their environments
        • Can have various components of the system updated independently
      • Ensure that the state of production systems can be reproduced (with the exception of production data) in an automated fashion from information in version control
      • Build intelligence into the application and the platform so that the deployment process can be as simple as possible
    • Applications designed for a platform-as-a-service can typically be deployed using a single command
  • Burnout
    • Deployment pain can lead to burnout if left unchecked
    • It is physical, mental, or emotional exhaustion caused by overwork or stress
    • It can make things we once loved about our work and life seem insignificant and dull
    • It often manifests as a feeling of helplessness, and is correlated with pathological cultures and unproductive, wasteful work
    • Research shows that stressful jobs can be as bad for physical health as secondhand smoke and obesity
    • Stress costs the US economy $300 billion per year in sick time, long-term disability, and excessive job turnover
    • Organizations can fix the conditions that lead to burnout by 
      • Fostering a supportive work environment
      • Ensuring work is meaningful
      • Ensuring employees understand how their own work ties to strategic objectives
    • Managers should concentrate on:
      • Fostering a respectful, supportive work environment that emphasizes learning from failures rather than blaming
      • Communicating a strong sense of purpose
      • Investing in employee development
      • Asking employees what is preventing them from achieving their objectives and then fixing those things
      • Giving employees time, space, and resources to experiment and learn
  • Common problems that can lead to burnout
    • Six organizational risk factors that predict burnout:
      • Work overload: job demand exceed human limits
      • Lack of control: inability to influence decisions that affect your job
      • Insufficient rewards: insufficient financial, institutional, or social rewards
      • Breakdown of community: unsupportive workplace environment
      • Absence of fairness: lack of fairness in decision-making processes
      • Value conflicts: mismatch in organizational values and the individual's values
    • Most organizations try to fix the person and ignore the work environment, even though fixing the environment has a higher likelyhood of success
  • How to reduce or fight burnout
    • Five organizational factors that are highly correlated with high levels of burnout:
      • Organizational culture
        • Managers are responsible for fostering a supportive and respectful work environment
        • They can do so by
          • Creating a blame-free environment
          • Striving to learn from failures
          • Communicating a shared sense of purpose
          • Remembering that human error is never the root cause of failure in systems
      • Deployment pain
        • With the right practices in place, deployments don't have to be painful events
        • Managers should ask their teams how painful their deployments are and fix the things that hurt the most
      • Effectiveness of leaders
        • Responsibilities of a team leader include limiting work in process and eliminating roadblocks for the team so they can get their work done
      • Organizational investments in DevOps
        • Organizations that invest in developing the skills and capabilities of their teams get better outcomes
        • Investing in training and providing people with the necessary support and resources (including time) to acquire new skills are critical to the successful adoption of DevOps
      • Organizational performance
        • Lean management and continuous delivery practices improve software delivery performance
        • At the heart of Lean management is giving employees the necessary time and resources to improve their own work
        • This means creating a work environment that:
          • Supports experimentation, failure, and learning
          • Allows employees to make decisions that affect their jobs
          • Creating space for employees to do new, creative, value-add work during the work week, and not just expecting them to devote extra time after hours
    • By aligning organizational values with individual values, employee burnout can be reduced