This is the twenty-second and final post in the Making Software Quality Visible series. It makes clear what you need to do to get started putting all these ideas into practice. It’s where I finally stop talking and you start doing something with all this information.
See the full Making Software Quality Visible presentation for the whole enchilada. Feel free to send me feedback, thoughts, or questions via email or by posting them on the LinkedIn announcement corresponding to this post.
Introduction
No matter what project you’re on, or what company you work for, you can do something about these problems.1 The resources for dealing with them are just as available to you as they are to any other company, given the right mindset.
I’ve shared many concepts behind the changes you may need to make. These are important, but relatively straightforward to grasp. The harder part of the problem isn’t getting people to pay attention to these concepts and to understand them, but to act on them. The most important skill you’ll need to make that happen…
Learn about leadership!
The biggest challenge isn’t technical—it’s changing the mindset.
…is leadership.
Many technical people think they’re above this fuzzy “people stuff,” that driving improvements are all about data and logic and meritocracy. But look where that’s gotten us as an industry with regard to software quality and avoidable damage done to society. The purely technological mindset, and its lack of appreciation for “people stuff,” is why good practices like those we’ve discussed so often fail to spread.
Leadership is also an eminently transferable skill, highly valuable and useful no matter where you find yourself during your career. It has nothing to do with the title you happen to hold, but with how you conduct yourself to achieve alignment with others. It’s a vast topic that you can study for life, but here are a few of my favorite starting points at the moment:
-
John “Add Value to People” Maxwell, The 5 Levels of Leadership
John Maxwell’s personal mission is to “add value to people,” which is my favorite short definition of “leadership.” His book The 5 Levels of Leadership clearly illustrates how leadership transcends title and decision making authoritah, and what’s required to realize outstanding leadership potential. -
L. David Marquet, Leadership is Language
David Marquet’s Leadership is Language is a playbook highlighting how to replace Industrial Revolution era communication habits with more empowering and productive modern habits. It illustrates how to stop merely telling people what to think and do, and how to encourage everyone to grow as decision makers and leaders. The results can literally make the difference between life and death. -
Liz Wiseman, Multipliers
In a similar vein, Liz Wiseman’s Multipliers illustrates the distinction between “Diminishers” that drain intelligence and energy from organizations an “Multipliers” that amplify people’s capabilities. It catalogs and contrasts the behaviors of each, encouraging explicit awareness of our own tendencies, weaknesses, and strengths. -
Scott Miller and David Morey, The Leadership Campaign
Miller and Morey’s The Leadership Campaign is a guide to the dynamics of stepping forward to lead a movement, modeled directly on political campaigning. The focus is on clarity of messaging and organization, building momentum, and taking advantage of opportunities. -
Michael Bungay Stanier, The Coaching Habit
Michael Bungay Stanier’s The Coaching Habit is another book focused on language, specifically when it comes to leading individuals to think through their own challenges. It talks about how to “tame your Advice Monster” and focusing on helping people develop their own solutions and capabilities. -
Ken Blanchard, et. al., Leadership and the One-Minute Manager
Leadership and the One-Minute Manager describes Blanchard’s “Situational Leadership” model. This model describes the need to adapt one’s leadership style to each individual over time based on their current capabilities.
Now remember from Crossing the Chasm that it falls on the Instigators to lead adoption of technologies and practices across an organization. As an Instigator, one of the lessons you’ll learn is that, sometimes…
Instigator Theory
It’s easier to change the rest of the world than your own team.
…it’s easier to change the rest of the world than your own team. I call this phenomenon Instigator Theory. However, as frustrating as this is, and as long as it takes to overcome, the basic outline of what you need to do is straightforward:
-
Phase One: Connect with—or build—a community of fellow Instigators
First, find your people. Put your feelers out. Invite folks to coffee, then start organizing informal meetings, and send out open invitations. See who really cares about software quality and is willing to show up to do something about it. -
Phase Two: Develop resources and do the work
Next, employ your leadership skills and challenge the community to develop resources for helping individuals acquire new skills and teams align on quality practices.-
Focus, simplify, and take your time in the beginning
As mentioned before, there’s no need to rush, and take care not to spread yourselves too thin. -
Every earlier success lays a foundation and creates space for future effort
In time, every win you deliver will draw more people into the community, which then creates the capacity to deliver the next win.
-
-
Phase Three: Share the results—make the work and its impact visible
As your community begins delivering resources, and people put those resources to good use, make all that work and its impact visible early and often. Radiate the good work your doing and its results into the environment as much as you can. And as part of generating that radiation…- Recognize the value of one another’s contributions!
…make sure to recognize the value that each member of the community adds to the effort! This is long term work that’s often thankless, as the focus for most of the organization remains on doing business as usual. Recognizing everyone’s value is a big part of keeping up morale and momentum, and makes that value visible to others in the organization as well.
- Recognize the value of one another’s contributions!
Finally, I’d like to leave you with a concrete list of things you and your fellow Instigators can work to change.
Where we are | Where we’d like to go |
---|---|
Slow, unreliable, expensive processes | Fast, reliable, efficient feedback loops |
Lots of duplicated, complex code | Well-factored, readable, testable code |
Large, complex, monolithic code reviews | Small, digestible, easily reviewable changes |
Large, complex, flaky test suites | Balanced, stable Test Pyramid-based suites |
Expensive metrics people can’t act upon | Meaningful, useful Vital Signs taken seriously |
Reinventing the wheel in wasteful silos | Sharing stories, language, useful examples |
Complexity, risk, waste, and suffering | Clarity, confidence, efficiency, and delight |
Testing (only) like a user would | Testing like a user’s life depends on it! |
Let’s compare where many of us are today, without good quality practices in place, to where we’d like to get everyone to go.2
-
Ultimately, we want to replace painful, expensive processes with fast, reliable, and efficient feedback loops. We can start to do that by…
-
…rejecting duplication and excess complexity in our code, and by writing readable, testable code instead.
-
We can reject large, monolithic code reviews hiding lots of bugs and insist upon smaller, more reviewable changes.
-
We can reduce the size, complexity, and unreliability of existing test suites by evolving towards a balanced, reliable suite based on Test Pyramid concepts.
-
We can throw out meaningless metrics that are expensive and painful to collect in favor of meaningful, actionable, and relatively cheap Vital Signs.
-
We can stop wasting resources on having teams wrestle with common quality problems separately, and help one another by sharing stories, language, and working examples.
-
Improving our software quality can minimize complexity, risk, waste, and suffering, and the increased understanding it affords will yield clarity, confidence, efficiency, and delight.
-
Once freed from the mental trap of testing only like a user would, we can begin testing like a user’s life depends on it.
Ultimately, creating great, high quality software shouldn’t require heroics, sacrifice, or endless pursuit of technologies or resources.
Making software quality visible will…
start a Chain Reaction that will…
minimize suffering—and ultimately…
Make the right thing the easy thing!
Ensuring that everyone can see what high software quality work looks like helps create the conditions for a positive Chain Reaction. As principles and practices spread, and priorities align around quality, we’ll see suffering subside as we keep making the right thing easier! Then maybe one day, it’ll be so damn easy everyone can’t help but to do the right thing by default.
mike-bland.com/making-software-quality-visible
Thank you!
Acknowledgments
I appreciates all the folks who’ve contributed to this presentation!
Ono Vaticone, Microsoft
John Turek, Aetion
Isaac Truett, EAB
Chris Douglas, AARP
Jake Spracher
Oleksiy Shepetko, Microsoft
Alex Buccino, Squarespace
And my fellow QCI Instigators at Apple for your past wisdom—
you know who you are!
(And you know that I know who you are!)
Footnotes
-
If you were paying attention to the description of the narrative arc—or at least to the agenda at the beginning—you should’ve seen this part coming! ↩
-
I was inspired to create this list after reading The Leadership Campaign chapter “Step 6: DEFINE Everything.” ↩