More on this book
Community
Kindle Notes & Highlights
Read between
September 6 - November 6, 2020
in organizations with a generative culture, people collaborate more effectively and there is a higher level of trust both across the organization and up and down the hierarchy.
“generative culture emphasizes the mission, an emphasis that allows people involved to put aside their personal issues and also the departmental issues that are so evident in bureaucratic organizations. The mission is primary. And third, generativity encourages a ‘level playing field,’ in which hierarchy plays less of a role”
Mark Schwartz points out in The Art of Business Value,
Westrum’s description of a rule-oriented culture is perhaps best thought of as one where following the rules is considered more important than achieving the mission—
Westrum’s theory posits that organizations with better information flow function more effectively.
First, a good culture requires trust and cooperation between people across the organization,
Second, better organizational culture can indicate higher quality decision-making.
Finally, teams with these cultural norms are likely to do a better job with their people, since problems are more rapidly discovered and addressed.
What they found instead was that “who is on a team matters less than how the team members interact, structure their work, and view their contributions”
in complex adaptive systems, accidents are almost never the fault of a single person who saw clearly what was going to happen and then ran toward it or failed to act to prevent it.
the way to change culture is not to first change how people think, but instead to start by changing how people behave—what they do”
Lean management, along with a set of other technical practices known collectively as continuous delivery (Humble and Farley 2010), do in fact impact culture,
Continuous delivery is a set of capabilities that enable us to get changes of all kinds—features, configuration changes, bug fixes, experiments—into production or into the hands of users safely, quickly, and sustainably.
Build quality in.
Work in small batches.
Computers perform repetitive tasks; people solve problems.
Relentlessly pursue continuous improvement.
Everyone is responsible.
A key objective for management is making the state of these system-level outcomes transparent, working with the rest of the organization to set measurable, achievable, time-bound goals for these outcomes, and then helping their teams work toward them.
Comprehensive configuration management. It should be possible to provision our environments and build, test, and deploy our software in a fully automated fashion purely from information stored in version control.
Continuous integration (CI).
Continuous testing.
No one should be saying they are “done” with any work until all relevant automated tests have been written and are passing.
Continuous delivery requires that developers and testers, as well as UX, product, and operations people, collaborate effectively throughout the delivery process.
teams that did well at continuous delivery achieved the following outcomes: Strong identification with the organization you work for (see Chapter 10) Higher levels of software delivery performance (lead time, deploy frequency, time to restore service) Lower change fail rates A generative, performance-oriented culture (see
improvements in CD brought payoffs in the way that work felt.
investments in technology are also investments in people,
proxy variables for quality: The quality and performance of applications, as perceived by those working on them The percentage of time spent on rework or unplanned work The percentage of time spent working on defects identified by end users
all measures were correlated with software delivery performance.
continuous delivery predicts lower levels of unplanned work and rework in a statistically significant way.
High performers reported spending 49% of their time on new work and 21% on unplanned work or rework.
Unplanned work and rework are useful proxies for quality because they represent a failure to build quality into our products.
The Visible Ops Handbook,
reducing what he calls failure demand— demand for work caused by the failure to do the right thing the first time by improving the quality of service we provide.
keeping system and application configuration in version control was more highly correlated with software delivery performance than keeping application code in version control.
put automated tests that are not reliable in a separate quarantine suite that is run independently.
Developers primarily create and maintain acceptance tests, and they can easily reproduce and fix them on their development workstations.
having automated tests primarily created and maintained either by QA or an outsourced party is not correlated with IT performance.
the code becomes more testable when developers write tests.
when developers are responsible for the automated tests, they care more about them and will invest more effort into maintaining and fixing them.
where code deployments are most painful, you’ll find the poorest software delivery performance, organizational performance, and culture.
While deployment pain can be an indication that software development and delivery is not sustainable
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; and use version control of everything required to reproduce production environments decrease their deployment pain.
Put another way, 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.
First, software is often not written with deployability in mind.
Second, the probability of a failed deployment rises substantially when manual changes must be made to production environments as part of the deployment process.
Finally, complex deployments often require multiple handoffs between teams, particularly in siloed organizations where database administrators, network administrators, systems administrators, infosec, testing/QA, and developers all work in separate teams.
Burnout is physical, mental, or emotional exhaustion caused by overwork or stress—
stressful jobs can be as bad for physical health as secondhand smoke (Goh et al. 2015) and obesity (Chandola et al. 2006). Symptoms of burnout include feeling exhausted, cynical, or ineffective;
Building trust with your counterparts on other teams.