There we were, watching the VP of Engineering fumble through his presentation. His slides weren’t ready. His microphone wasn’t working. He had issue after issue. It was expensive time: Dozens of high-level engineers were watching this live to give him feedback. There was lots of grumbling over the zoom issues. But that’s not the biggest problem I saw. It was this statement:
Quality is very important.
My heart sank. It’s not that I disagree with “quality is important.” How can you? No, the worst problem might be that it is impossible to disagree with.
In a philosophy class, the professor once mused how few so-called “explanations” actually explained anything. In response to the question, “Why do objects fall?” people say “gravity.” But that’s just a name for the tendency of things to fall toward each other. Or when someone says, “Why doesn’t he get hungry?” they say, “He is anorexic,” which is just the Latin term for lack of hunger.
A better answer might be in the style of Richard Feynman’s father. When little Richie asked why a ball moved to the back of the wagon when he tugged the handle, his father replied, “Nobody knows why. The general principle is that things tend to stay where they are. We call that principle inertia. But nobody knows why it happens.”
We don’t know why things fall to the Earth. The general principle is that all matter in the universe attracts all other matter with an inverse square law. We call that gravity. We don’t know why he isn’t hungry. But we’ve diagnosed it as a condition we call anorexia.
“We don’t know” might be a better answer, but “gravity” is not terrible. Naming things is powerful. Not only does it let you talk about it, but it also gives it a place within a larger framework of study called Physics. Likewise, anorexia might be the Latin word for “without appetite,” but it’s part of a medical diagnosis that treats the psychology, the physical symptoms, and the comorbidity.
However, this VP made it apparent that “quality” was not part of a larger framework. It was just a name for a vague idea. After he stated such a truism as “quality is important,” I realized what I wanted in a leader at that level: If you talk about quality, you need a PhD-level understanding. And you need to guide the company practices to align with that understanding.
A high-level, well-researched understanding of a value is one way to differentiate your company. You do quality better because you understand it better. It’s likely that along the way to getting your PhD in quality, you learn some other concept key to quality. One of the four DORA metrics is “change failure rate,” which measures quality and correlates with improvement in business metrics such as profitability. Decreasing “change failure rate” is a much better value than “quality” because it is specific and grounded in research. It gives you leverage. Quality is such a vague term. It gives you nothing.
Another problem with “quality” as a value is that you can’t disagree with it. Who doesn’t want quality? Who would proclaim they don’t want quality? Values need to be non-obvious and disagreeable. A value that doesn’t differentiate your company is table stakes. Quality, speed, agility, security, convenience—these are not differentiable values. For a value to differentiate, it must stand for something others choose not to.
For example, Clojure values not messing up the git layer graph:
This graph shows the lines of code from a given year that remain unchanged based on the git history. Notice the clear layers that form and persist over time. Clojure 1.0 was released in 2009 (gray layer), but even much code from 2007 and 2008 remains unchanged after being committed. Rich Hickey believes this helps stability. For comparison, here is the same graph for Scala:
I’m not arguing for or against this value here. I’m simply showing that it can differentiate your company if it aligns with your customers’ values.
An ideal is only as valuable as what you will sacrifice to get it. Many people are stymied by the difficulty of merging small improvements to the language into the codebase. Even something as simple as correcting punctuation in comments finds resistance. Hickey gives up casual code refactorings to preserve the stability of the codebase. That steers Clojure away from other languages.
Even if your company’s value is generic “quality,” what are they willing to pay for that? Will they accept slower speed? Will they hire more slowly, looking for better engineers? Or will they fire more quickly if you don’t code well enough? Will they spend money on tools that discover defects? Will they pay an internal bounty for finding bugs? My VP offered none of that. Every value was equally vague and highest priority: quality, security, speed, and cost. We had to max them all.
If every engineer is responsible for maximizing quality, what do we do when we’re asked to sacrifice quality? While we were given responsibility, we were given no authority. I wanted his permission to say “no” to middle management asking us to cut corners. “Sorry, the VP outranks you and says I can’t do that. Why don’t you work it out with him?” He’s the one who takes the heat.
A value needs teeth. The people responsible for upholding the value need the authority to make it happen. But that authority doesn’t need to be antagonistic. I fantasized about telling my manager to shove it only because our relationship was constructed to be confrontational. Toyota is famous for its andon cord, which the workers pull when encountering a problem. It’s one of Toyota’s ways to improve quality. When they pull the cord, the manager doesn’t berate them. Nor is it the other way, where the worker can use it to blame the manager. Instead, the worker and manager both will help solve the problem. It’s even hard to imagine because I’ve never had a manager who helped solve a problem.
Everybody’s behavior is influenced by incentives. Those incentives need to be aligned. In a quarterly report, a manager should be able to say, “Our costs went up by 20%, but our quality went up by 25%,” and they get a pat on the back. But that starts when you go to your manager and say, “I think I can improve quality, but it will cost money.” When they hand you the credit card, that is when you’ll know.
I’m tired of working for leaders who lack differentiated values, won’t sacrifice to get them, and don’t back up their employees with authority. The cowardice to stand behind values was part of the reason engineering quality was slipping. Values have a real cost. If you pick the right ones, you get leverage much higher than that cost. But if you can’t pick good ones, or if you can’t back them up, you might as well not have them.
Nothing is free. Effects can be non-local. Measurement is often bunk and mostly non-linear.
We can't go on. We'll go on.