This eleventh post in the Making Software Quality Visible series shares some high level guidelines for making quality work and its impact visible. These guidelines ultimately lead to a surprisingly hopeful conclusion.
I’ll update the full Making Software Quality Visible presentation as this series progresses. Feel free to send me feedback, thoughts, or questions via email or by posting them on the LinkedIn announcement corresponding to this post.
Continuing after Team/Organizational Alignment and Roadmap Programs…
Quality Work and Results Visibility
Storytelling is essential to spreading language, leading change.
Great storytelling is essential to providing meaningful insight into quality outcomes and the work necessary to achieve them.1 This can happen throughout the process, but sharing outcomes, methods, and lessons learned is critical to driving adoption of improved practices and making them stick.
-
Media, roadmaps, presentations, events
In fact, good stories can drive alignment via the same media we discussed earlier. Organizing a special event every so often can generate a critical mass of focus and energy towards sharing stories from across the company. Such events can raise the company wide software quality improvement effort to a new plateau. They also help prove that common principles and practices apply across projects, no matter the tech stack or domain, refuting the Snowflake Fallacy. -
Make a strong point with a strong narrative arc
The key to telling a good story is adhering a strong narrative arc.2 Here are three essential elements:-
Show the results up front—share your Vital Signs!
First, don’t bury the lede!3 We’re not trying to hook people on solving a mystery, we’re trying to hook people on the value of what we’re about to share. This holds whether you’ve already achieved compelling outcomes or if you’re still in the middle of the story and haven’t yet achieved your goals. In the latter case, you can still paint a compelling picture of what you’re trying to achieve, and why.Either way, having meaningful Vital Signs in place can make telling this part of the story relatively straightforward.
-
Describe the work done to achieve them, and why
Next, tell them what you had to do (or are trying to do now) to achieve these outcomes and what you learned while doing it. Don’t just give a laundry list of details, however.- Practices need principles! The mindset is more portable than the
details.
Practices need principles. Help people understand why you applied specific practices—show how they demonstrate the mindset4 that’s ultimately necessary to improve software quality. Technical details can be useful to make the principles concrete, but they’re ultimately of secondary importance to having the right mindset regardless of the technology.
- Practices need principles! The mindset is more portable than the
details.
-
Make a call to action to apply the information
Finally, give people something to do with all the information you just shared. Tell them how they can follow up with you or others, via email or Slack or whatever. Provide links to documentation or other resources where they can learn more about how to apply the same tools and methods on their own.
-
Practices need principles
This section is a footnote in Making Software Quality Visible, but I want to call special attention to the concept here.
“Practices need principles” was my extemporaneous response to a Slack comment during a major QCI presentation inside Apple. The commenter asserted, roughly, that the presentation had been abstract to that point, and they were waiting to be told what to do, please. I responded, “Practices need principles. We’re getting there.”
More generally, the commenter’s apparent posture is a big part of why software quality issues continue to plague society. As a species, especially in the Internet era, we’re programmed to favor “System 1” thinking to jump to using the nearest shortcut.
If we’ve already embraced the right principles and mindset, or absorbed the best possible examples earlier in our career, this is less of a problem. In that case, it may be more efficient to go straight to the examples if we already “get it.” My former Test Mercenaries colleague Paul Hammant suggests this in his Tutorials vs. Reference Docs vs. Examples blog post:
“The more experienced developers get, the more likely they are to leave tutorial and api-doc as a way of gaining knowledge of a thing, and more toward examples.”
But if we haven’t been exposed to good practices and the principles behind them already, we need at least some deliberate context building first. (Sadly, this is still the most common case, apparently.) When we see a new practice that runs counter to all the examples we’ve seen before, we need a little preparation first. Otherwise we may reflexively dismiss a potentially valuable new practice as pointless nonsense, absent sufficient context and insight to understand the problem it solves.
BTW, earlier I referred to the commenter’s “apparent” posture, because I knew this person already “gets it.” I was a little surprised in the moment, but we worked out a fuller understanding later. Regardless, the commenter may not’ve found reviewing the principles personally useful, but many others were likely hearing them for the first time. Or if they have, I find there’s still value in hearing different people play the same tune in their own unique voice.
Building a Software Quality Culture
Cultivating resources to support buy-in
Resources | Skills | Alignment | Visibility |
---|---|---|---|
Training | ✅ | ||
Documentation | ✅ | ||
Internal media e.g., blogs, newsletters |
✅ | ✅ | ✅ |
Roadmap program | ✅ | ✅ | |
Vision/strategy presentations | ✅ | ✅ | |
Mentors/advocates | ✅ | ✅ | ✅ |
Internal events | ✅ | ✅ | ✅ |
Here we can see how different resources serve to fulfill one or more of the essential needs for organizational change. There’s no specific order in which to build up these resources—it’s up to you to decide where to focus at each stage in your journey.
Mapping the Testing Grouplet and Quality Culture Initiative activities onto this table reveals how the same basic resources apply across vastly different company cultures.
Google Testing Grouplet
2005-2010
Resources | Examples |
---|---|
Training | Noogler (New Googler) Training, Codelabs |
Documentation | Internal wiki |
Internal media e.g., blogs, newsletters |
Testing on the Toilet |
Roadmap program | Test Certified |
Vision/strategy presentations | Google Web Server story |
Mentors/advocates | Test Mercenaries |
Internal events | Two Testing Fixits, Revolution Fixit, TAP Fixit |
At Google, we provided introductory unit testing training and Codelab sessions to new employees, or “Nooglers.” We made extensive use of the internal wiki, and of course Testing on the Toilet was our breakthrough documentation hit. TotT helped people to participate in the Test Certified program, which was based on the experience of the Google Web Server team. Then we scaled up our efforts by building the Test Mercenaries team and hosting four companywide Fixits over the years.
Apple Quality Culture Initiative
2018-present
Resources | Examples |
---|---|
Training | 16-course curriculum for dev, QA, Project Managers |
Documentation | Confluence |
Internal media e.g., blogs, newsletters |
Quality Blog, internal podcast |
Roadmap program | Quality Quest |
Vision/strategy presentations | QCI Roadshow, official internal presentation series |
Mentors/advocates | QCI Ambassadors |
Internal events | QCI Summit |
At Apple, we knew that posting flyers in Apple Park bathrooms wouldn’t fly, but our extensive Training curriculum was wildly successful. We also made extensive use of our internal Confluence wiki, maintained a Quality Blog, and had a ton of fun producing our own internal podcast. Quality Quest was directly inspired by Test Certified, but adapted by the QCI community to better serve Apple’s needs.5 We promoted our resources via dozens of QCI Roadshow presentations for specific teams and groups, as well as a few official, high visibility internal presentations. We recruited QCI Ambassadors from different organizations to help translate general QCI resources and principles to fit the needs of specific orgs. Finally, we organized a QCI Summit promote software quality stories from across the company, demonstrating how the Quality Mindset applies regardless of domain.
This comparison raises an important point that I’ve made in response to a common question:
“What are the important differences between companies?”
“What are the differences between companies?” with the assumption or implication that the differences are of key importance. Reflecting upon this just before leaving Apple, I realized…
The superficial details may differ…
…of course there are obvious differences. Google’s internal culture was much more open by default, and people back in the day had twenty percent of their time to experiment internally. Apple’s internal culture isn’t quite as open, and people are held accountable to tight deadlines. Even so…
…but they’re more alike than different.
…the companies are more alike than they might first seem. Both are large organizations composed of the same stuff, namely humans striving for both individual and collective achievement. Much like code from different projects, at the molecular level, they’re more alike than they are different.
Over time, I’ve come to appreciate these similarities as being ultimately more important than the differences. The same essential issues emerge, and the same essential solutions apply, differing only in their surface appearances. So no matter what project you’re on, or what company you work for, everybody everywhere is dealing with the same core problems. Not even the biggest of companies is immune, or otherwise special or perfect.
Coming up next
This concludes the Skills Development, Alignment, and Visibility section of Making Software Quality Visible.
The next post will begin the next section, The Test Pyramid and Vital Signs. We’ll use the Test Pyramid model to specify the principles underlying a sound testing strategy. We’ll also discuss the negative effects that its opposite, the Inverted Test Pyramid, imposes upon its unwitting victims. I’ll then describe how to use “Vital Signs” to get a holistic view on software quality for a particular project.
Footnotes
-
Recall that I defined “making software quality visible” as “providing meaningful insight into quality outcomes and the work necessary to achieve them.” ↩
-
I find the insights from The Story Grid to be very helpful when it comes to thinking through the process and mechanics of storytelling. Though it’s not all directly applicable to technical storytelling, some concepts definitely translate, such as “core need/value,” “controlling idea,” and “objects of desire.” For a concise overview, see 1-Page Book Plan: The Story Grid Foolscap. ↩
-
This advice is also congruent with Joel Schwartzberg’s Get to the Point! Sharpen Your Message and Make Your Words Matter. For more background on this particular phrase and the spelling of “lede,” see: Why Do We ‘Bury the Lede?’ The article’s apt subtitle is “We buried ‘lead’ so far down that we forgot how to spell it.” The introductory summary states:
“A lede is the introductory section in journalism and thus to bury the lede refers to hiding the most important and relevant pieces of a story within other distracting information. The spelling of lede is allegedly so as to not confuse it with lead (/led/) which referred to the strip of metal that would separate lines of type. Both spellings, however, can be found in instances of the phrase.”
-
I picked up on using the term “mindset” deliberately and frequently after a chat with an executive that once helped me get hired. Once he said it, I knew that was a concept and a term that bore repeating early and often. (I was surprised I hadn’t thought to do so earlier!) After all, you can have all the knowledge and tools in the world and still be stuck, but with the right mindset, almost anything’s possible. ↩
-
Originally we tried to come up with Quality Quest levels without directly referencing the exact Test Certified requirements. When that didn’t really work out, I copied the Test Certified requirements from my Testing on the Toilet blog post into a Confluence page. Then I asked everyone “What do we need to change to make this work for Apple?” The version we came up with then proved far more successful. ↩