- 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
Technology is always changing. It makes the industry interesting and exciting to work in, but it also makes it hard for you, as a developer, to keep up with the changes, let alone get ahead. And yet staying on top of these changes, and thriving because of them, is a rewarding and worthwhile goal, because by doing so, you unlock the potential of what you can accomplish. Here, I explore the how of doing just that.
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.