The "five whys" productivity technique
blog.superhuman.com
blog.superhuman.com
"Why did our code break?" "Because we habitually ship things without thoroughly testing them."
"Why?" "Because our culture has product managers demanding things with short deadlines and no concern about the code quality."
... which, and this is key, has to be followed by managers at all relevant levels changing their processes to fix this. If it's not fixed -- at an organizational level -- as a result of the analysis, fuck off with the 5 whys process, it's just a joke.
I tried to run an Amazon-style 5-whys at my new job and my boss said, oh that was very good, good analysis. Then we did none of the things suggested. Well, there's no point. Just quit. You're going to be mediocre forever until the management chain buys in.
The reason Amazon scales well and can do so many things is that that their management is incentivized to care about things other than shipping/deliverables/this quarter's returns. It's still about the business overall, but Bezos' long-term-thinking has infected the entire company with long-termism and it's very effective.
I am quite sure that Google/Microsoft/etc do not have this quality in the same degree (or they would not have made many of their obvious mistakes). Not that Amazon doesn't make mistakes; they just make different kinds than a lot of other companies. And of course plenty of departments at Amazon don't do this well either; it's too big a company to be culturally uniform. But at least the norm is to do it well instead of badly, which is more than you can say about most larger-than-startup-sized companies.
My manager handed it back to me and said "this takes the blame off of you for this mistake and puts it on the testing team. Ask different questions."
So I wrote another one that was 100% focused on me. "Why did this happen? Because the config was wrong." "Why was the config wrong? Because I made a typo." "Why didn't I notice the typo? Because I didn't run the feature after making the change." "Why didn't I try it out? Because the feature is very difficult to invoke or observe." "Why is the feature hard to invoke directly?" "Because <x,y,z>."
What I learned from that is that the problem with Five Whys is that there are many different branches of questions that are worth asking, but that design only allows for exactly one path. Choosing which one is an editorial decision on the part of the author. The outcome of a 5-Whys document is, by its nature, one change. But most of the time, outages at mature tech companies are the result of several different problems coincidentally lining up (if exactly one thing going wrong caused a major problem, that itself is the second problem), and a postmortem process really needs to examine each of the things that went wrong separately.
Usually the response to a good root-cause investigation isn't "I'll try to avoid making mistakes" (although sometimes it's just a mistake and no changes is required). The outcome should be a new rule or practice for the organization, some kind of decision that determines how things will be done going forward to make the error less likely. This almost always requires a leader at some level declaring by fiat that things will be done this way going forward; if your managers aren't doing that, they're not 'leading' at all.
* Main Why?
* Why 1?
* Sub Why 1?
* More Whys
* Why 2?
* Sub Why 2?
Its totally fine to have more than one change or path. Theres nothing in the nature of the doc that requires one change or one path, thats just an assumption.You are certainly free to adapt it in whatever way you wish, but you don't call that "5 whys" anymore. TBH, your approach looks closer to fishbone diagrams instead.
I have never heard of this before. I had heard that the 5 why's was a way to force a person or team to be more than surface level about why a feature is needed or a problem happened.
And also, ONE way to represent the work was through a fishbone.
But part of the 5 why's is that multiple "why's" converge (e.g. why did this break? because we have no change control... why does X process suck? Also, because we have no change control)
My favorite feature of 5 why's is they push you into going deeper. If a process keeps failing, the 1st level reason for the failures can be different (X person changed the data, dates suck, the primary server crashed), but the 3rd or 4th reasons should show some similarities and ideas on how to prioritize (e.g. if we have automated unit tests, it would have prevented 25% of our outages!)
"5 Whys" is a helpful mnemonic but authors are encouraged to use more than five causes as they complete their root cause analysis
There's clearly something to learn and improve in your 5 why's. There was a hard to test feature, typos were allowed to pass through validation in the config, there was only one person making the config change and seemingly no one to review the change, etc.
Ok so all these seem like they'd contribute at least somewhat to why this issue occurred. Sure there might have been other deficiencies, like why didn't the test teams also forgot to test the feature or thought they did but didn't, etc. But you can't address everything.
So maybe you update the validation code for the config so it is more likely to catch such typo in the future. Maybe you make improvements to your config change management and enforce a 2-eye rule on config changes, and a 2 person review on the change. Maybe you make improvements to your testing capabilities so that such hard to trigger features become easier to write an automated test for. Maybe the leadership learns to inssist on planning more time for dev QA and writing tests when launching the next big feature, etc.
There are a plethora of tools that go into a problem analysis, six sigma, lean, or whatever labelled toolbox.
The important thing is being able to use the tool, not just do it, as the parent mentions in their comment:
It's easy for a manager to say "do a 5 whys". It's another to be able to support fixing what it finds out. Or if not your manager and just you or a small team with seemingly everything in your control to introspect and challenge assumptions or prior work that might need rethinking. That's the hard part.
The problem with process is that most people follow it as prescribed rather than following the spirit of it.
Now that's engineering.
Code or any feature that's hard to get in isolation and test is prone to fail in unexpected ways. And if the failure in prod is big enough that gives you the opportunity to show that it's cheaper to invest engineering time to make this part of the product better instead of picking up the pieces later on.
I get the idea with the why's but sometimes, it's just that simple, you can't really go deeper than that. I fucked up.
You are looking for improvements to your process that will help you protect yourself from yourself. :)
Anyone can make mistakes, and sometimes the naive 'why' of something is just that someone made a mistake. But if you focus your questions on the process, it becomes 'why did the process allow this mistake through'. Perhaps a checklist could have helped. Perhaps you need a QC [1] step in the process. Maybe the instructions aren't detailed enough.
[1] Though there are many sometimes subtle differences in how these terms are used across industries, generally the difference between Quality Control and Quality Assurance is that QC is part of the process (e.g. a built-in check in the system), while QA is a separate process making sure these checks and balances are working properly.
To bring in the car analogy, QC would be your tire pressure sensors, and QA would be your mechanic checking that the pressure sensors are working correctly.
Why did you fuck up? Because you didn't get enough sleep. Why didn't you get enough sleep? Because you were on-call at 3am. Why were you on-call at 3am? Because the apps keep crashing once a week. Why are the apps crashing once a week? Because nobody has prioritized fixing them. Why has nobody prioritized fixing them? Because the feature work is higher priority.
Or: Why did you fuck up? There was no validation of the change before applying it. Why was there no validation of the change? Because we've never prioritized validation. Why have we never prioritized validation? Because we don't think it's important. Why don't we think it's important? Because we never look back at our previous failures to see if there's a pattern of failures from lack of validation.
So even from "I fucked up" we find a number of problems and things we can start addressing.
Major cause of burnout and incidents, yet management will ignore this particular "why", because their promotions are based on features, mostly. Also why it sucks being an SRE unless the company empowers your team.
If the problem is that you are overcommitted and things are starting to slip, that's a different problem than "I got distracted by something shiny and forgot." In the first case, it might make sense to try to grow the team, for instance.
"Why?" "Because our culture has product managers demanding things with short deadlines and no concern about the code quality."
Does not sound like anything would change. I could chalk up a lot of failures, missed goals or mistakes to this culture of shipping the bare minimum because that's all the time you have. Sometimes it works well, others lead to tech debt that metastasizes because the engineers don't have to use what they built leading to instances like pricing errors that lost significant amounts of money.
Working at Amazon sometimes felt like everyone was gaming the system to hit impossible numbers/deadlines - Goodhart's law at scale.
I find answers like this to be the real downfall of a five whys approach. Is it really true that product managers have "no concern about the code quality"? At best, that seems like a statement that the product managers will not accept, but even worse, it isn't directly actionable.
I'd prefer something like, "Because our teams are not given n days for quality assurance before feature delivery", or "because our estimate of 21 days to deliver was replaced with 14 days without our input".
If it isn't measurable, how can you make the needed changes? "Care more" isn't quantifiable.
Yes, it is often the case that product managers have no concern about the code quality. No, the problem is not that N days aren't given for QA. If the product managers talk to the engineers, they will get a sense of the problem. If they work as colleagues they will be in this sort of discussion all the time. When a product is implemented, they'll keep talking, and they'll be aware that the major corners are being cut, and they'll understand that that puts it at risk. Then they can make better decisions to avoid this.
If they have that information and still make the wrong decisions, then they have perverse incentivizes or are behaving maliciously to the business.
And if they try to reduce the intuition and professional opinions of their engineering team to some numbers -- estimates, QA lead times, bug counts -- which are pitched over the wall, badly summarizing actual expertise -- then they will fail, badly, over time, because that is a nonsensical way to work.
Good decision-making and leadership, imo, don't need you to have found ways to quantify things, and your time is often better spent doing good work than waiting for things to be put into numbers. Quantification helps, sometimes.
"If it isn't measurable, how can you make the needed changes? " Doesn't that question sound absurd? You make the needed changes! What does measurability have to do with it?
If you can't measure the difference, how do you know you've helped? Or if you've made it worse?
> "If it isn't measurable, how can you make the needed changes? " Doesn't that question sound absurd?
No, because you're saying something is needed with no observable difference when it's changed.
If you can't in any way measure the difference between action and inaction, isn't that equivalent to saying "my action is indistinguishable from inaction"?
If someone said "I've fixed the bug, no tests changed and you won't see a difference in the reported issues but it's fixed" how confident would you be that they've actually fixed it?
How do you trust their changes are needed?
.. Obviously the latter. If you can perceive it, it's a valid belief. Obviously it is _somewhat_ subjective, but even subjective things can be true, and from someone with good judgment, they usually are. You probably don't need to go run a survey or something to prove it -- just make a convincing case, in words.
Every case is like this one. You can make changes and see that you've had an impact without ever getting distracted by finding a way to put it into numbers, quantification, and measurement.
> You can make changes and see that you've had an impact
Well the obvious counter here is how do you see you've had an impact when the impact is so hard to measure?
> You probably don't need to go run a survey or something to prove it -- just make a convincing case, in words.
And yet I've seen the huge issue of wordsmiths with nothing to back it up with taking over and ruining teams.
https://demodexio.substack.com/p/a-master-craftsman-will-hav...
It's the foundation of strategy.
You're right, of course. To do causal analysis at all, you have to do it respectfully and well. That's the first step.
When you have the first step down, there are other analysis methods that are not five whys that does this better. One of my favourites is Leveson's causal analysis based on systems theory (CAST).
These dig wider as well as deeper, and offer more interesting questions to ask along the way rather than just "what caused this?"
[edit: to respond to the dead comment about what else "Why" could mean, the difference is the emotional valence. It's not asking the _factual_ question of how it happened; it's applying the appropriate outrage and embarrassment to the fact that it happened. "My god, we messed up! How can we ensure it never happens again, with urgency?".]
- Which business constraint was violated?
- Why is that an important constraint?
- What control mechanisms did we have in place to prevent that from happening? Have they prevented the constraint from being violated before? Why where those mechanisms insufficient this time?
- What control mechanisms didn't we have? Why not?
And so on. You get fan-out of much higher degree that way, but it also, in my experience, is a much more efficient way to search the causal network.
I guess it looks very different depending on the business you're in and how codified everything already is. If you're investigating failures in, say, a manufacturing process, everything is pretty rigid already and you're finding problems with the rules you already have. If you're investigating failures in a hodgepodge software engineering organization, the problem is that there is no rigidity in the first place, and those processes need to be created from scratch.
I'm mostly familiar with the latter, and usually the result of whatever you come up with is a place where leadership ought to be directly applied.
(I'd hazard to claim that: if you do a 5-Whys in an organization and the leader of the organization doesn't see something that they can go fix directly -- not by delegating but by leading, themselves -- either you did it wrong, or they're a bad leader.)
If you want the 5-whys to not be a joke, you certainly shouldn't be arriving at such strong conclusions without an enormous amount of evidence. There's likely many other explanations.
A serious answer to a "why" question requires enough evidence that it could not be explained in any other way.
If we just want to arrive at strong conclusions that fit in with our priors, so be it, but at least be honest that you don't care about the truth.
Let's take this in a different direction:
> "Why did our code break?" "Because we habitually ship things without thoroughly testing them."
.... or "Because Bob didn't write proper tests for his patch, so the bug it introduced went undetected"
It obviously would suck to be Bob here, but the point is there is no single right answer to any of the whys and each choice along the way will lead us down very different narrative paths.
You can't achieve greater certainly simply by chaining multiple uncertain statements together.
The post in question is a good demonstration of how you can misuse the 5-whys, and it gets well deserved criticism for that. It's obviously not getting anywhere 5 levels deep, so it's asking the wrong questions, and honestly, giving very bad answers that don't lead anywhere: 5-whys require a specific mindset first. Thus, the final "root cause" is very suspect and there's one too many "feel" and "think" in there.
To illustrate, the answer to #2 of "Because I am constantly tempted to check my email, rather than work on important projects." is lacking in substance to answer "why are you getting distracted" (it says the same thing in slightly different words). You can go on-and-on in the same vein. "Because my email notifications pop up and I check them out", "Because when I check my email notifications out, I read the email and now I've lost my context and got immersed into the email topic instead"... That's not helpful at all.
As soon as you get to "I get easily distracted by email", that's already a problem worth solving ("root cause"). And it can have multiple solutions: 1. if you are a blocker for something, move that to an email list of people, a "board" or "forum" discussion; 2. if you are not a blocker, stop notifications and set checkpoints for when you'll read email during the day, and open a side-channel for urgencies if it's ever needed.
If that's not the root cause (it is actually expected of you to be responsive even if you are not a blocker to anything), only then is it worth digging deeper to find problems in the team that make this so.
Of course, I am working with the assumption that being extremely responsive to email is really hurting this person's work (they were not hired to be responsive to emails, eg. as a technical architect to support a development team).
There's a lot of cargo culting around Amazon, but having a strong engineering culture and technical leadership is almost never what companies choose to emulate.
True engineering orgs are quite rare (and will often ship disproportionately compared to their competitors. Just think of pre-merger Boeing for instance).
> I am quite sure that Google/Microsoft/etc do not have this quality in the same degree (or they would not have made many of their obvious mistakes). Not that Amazon doesn't make mistakes; they just make different kinds than a lot of other companies
I'm interested what are the obvious mistakes you are thinking about.
Is comingling inventory among sellers long term thinking?
The main reason for commingling inventory is to be able to ship a product from the closest warehouse if it's the same as something in another warehouse (if you order it on the east coast and the nearest Amazon-owned inventory is on the west coast but an FBA seller has it on the east coast, ideally you could fulfill the order from the east coast).
The problem is, nobody anticipated the degree to which sellers began cheating this system when they figured it out. I don't think Amazon was ready to fully moderate the whole system against exploitation. They are no doubt working on it but it's a huge battle.
In particular 'five whys' when run correctly has neither a set number of whys, nor a particular linear structure, nor a fixation on assigning blame, and involves actually taking actions in response to the root causes, not just creating meaningless action items. If those don't apply, you're not doing five whys, you're doing some bizarre aberration of it.
Could someone elaborate on how that's done?
"I'm always busy but I don't feel productive with my time"
Why? "Because I get distracted by email, refactoring, slack, .."
Why? "Because I don't really want to be doing any of this, but I feel like I should be at my computer trying to force myself to do it."
Why? "Because I have a job and therefore some responsibilities, and I wasted a lot of time last week so I guess I need to get things done this week"
Why? "Because I'm sitting at a computer at home, surrounded by nobody, writing code for projects I don't really believe in, that are being mismanaged outside of my control, and what rewards there are (salary) are totally decoupled from the work, and I have lots of money saved up from doing this anyway but the modern world makes no sense and there's nothing I really want to be doing so I guess I'm working."
... ah, you say, you can't work because you're burnt-out and depressed. Yeah, probably. But I mention this to make the point that: if you can't focus, perhaps you just _don't want to be doing whatever you're doing_. It is sometimes hard to admit that in this modern world where you're supposed to be a hard-working adult. But you don't .. have.. to be employed, or working a 9-5, and for many people it's deeply unnatural, I think, to be doing this your whole life day-in and day-out.
Related, this article about writer's block that was posted on HN a few weeks ago: https://sashachapin.substack.com/p/if-you-have-writers-block...
This is the thing that always gets me when reading things about productivity, how to get more done at work, etc. At first glance, the issue seemed to just be compensation—if you just pay us workers a fair wage we will be happy. But as software engineers we are generally fortunate with high salaries. So, what happens when that compensation comes and you still feel extremely unfulfilled? I don’t think the problem is the depressed workers, it seems like the whole entire system is built to slowly drain the life out of us.
She had apparently never thought of this, but agreed. I guess a lot of people think it's about the money and then wonder why they can't get much done. imo the money determines who works where, but has almost nothing to do with the amount of work that gets done.
... so yeah, I agree.
There’s a balancing act between doing things that need to get done and doing things that you want to do. Too much of the former is miserable for you. Too much of the latter is miserable for everybody else.
I’ve had to go to bat for people to work on things that maybe aren’t the absolute most efficient short term use of our resources because working on it will make them either happy or less unhappy. But only rarely can I state it so plainly, so I often wonder what takeaways people are coming to.
...
"Because the sales targets for the enterprise are unrealistic"
"Why?"
"Because the Board of Directors can't attract investors with reasonable sales targets"
"Why?"
"Because investors are only interested in a company scaling at a certain rate"
"Why?"
"Because investors are greedy"
"Why?"
"Because when God first created Man, He also created Temptation..."
The concept of a "root" cause is silly, because the roots of a plant spread far and wide and have many different ends. In the analogy, if the plant is the "problem", and the root is a "cause", then there are hundreds of different roots (causes) that contribute to the plant (problem). People are always trying to assign a single "root" cause as if there is one. Many causes contribute to systemic failures, and often times fixing any one of the root causes would have delayed the failure for another cycle, without actually addressing the procedural risk. Your technician accidentally skipped a step, sure, but he skipped a step because he was in a rush, and he was in a rush because he was overworked, and he was overworked because of those damn sales targets, and...
If we're interested in "root" causes, then we need to end up with a list of several causes that combine to result in the problem. If we only want a single cause, we should call it a "seed" cause, as defined by "this problem (plant) is guaranteed to happen (grow) every time this cause (seed) occurs (is planted)".
Sure, there's a chance that there is no root cause (although, at least in my experience, there usually is a major contributor) or that it's something that's not easy to fix right now, but at least is shows you what issues are brewing below and what you need to put on your roadmap. And, in the best case, you might actually be able to fix a bug higher up the chain directly and resolve future issues.
There is quite often one symptom that is pivotal and cause a critically failure, but generally that symptom itself is a result of multiple inputs.
I'd simply say 5Ys should be a rule of thumb to get folks to be sufficiently inquisitive to keep asking follow-up questions about whatever they are investigating until they've hit around 5 questions per area.
I think the 5 why's should arrive to what part in your circle of ownership does the issue lie.
You end up looking for random causes to increase your tree width, instead of the actual analysis at hand.
5 why's presents a list of action items, and a justification for them. One action item could depend on two leaf nodes of the RCA, or solve multiple leaf nodes.
The appropriate level of abstraction is to find the deepest level at which your choices can have an impact. The purpose of the exercise in general is to make sure we aren't investing energy into solving a problem when that problem may manifest in different ways. To use the article's example, addressing the problem of "I get distracted by emails" is insufficient if the subject will just look for other ways to be responsive, thus reducing productivity. There's a deeper level at which they can impact the chain of events, so we want to discover that.
In your example, there's nothing we could really do about "when God first created Man, He also created Temptation..." or "investors are greedy". But we can impact "investors are only interested in a company scaling at a certain rate", since we can provide feedback about how the current processes impact scaling rates. That would be a good starting point.
> The concept of a "root" cause is silly, because the roots of a plant spread far and wide and have many different ends. In the analogy, if the plant is the "problem", and the root is a "cause", then there are hundreds of different roots (causes) that contribute to the plant (problem). People are always trying to assign a single "root" cause as if there is one. Many causes contribute to systemic failures, and often times fixing any one of the root causes would have delayed the failure for another cycle, without actually addressing the procedural risk. Your technician accidentally skipped a step, sure, but he skipped a step because he was in a rush, and he was in a rush because he was overworked, and he was overworked because of those damn sales targets, and... >If we're interested in "root" causes, then we need to end up with a list of several causes that combine to result in the problem. If we only want a single cause, we should call it a "seed" cause, as defined by "this problem (plant) is guaranteed to happen (grow) every time this cause (seed) occurs (is planted)"
I understand what you're saying here, but I feel like you're focusing on the semantics of the argument rather than on its core message.
This is a brilliant insight and immediately gave me an “aha” moment on how best to use the 5 Whys approach!
Other fields don't immediately critique facts when presented to them. They're asked to update a model before the 12PM call and the get right on it. Five Whys gives them a framework for pausing, thinking, and critiquing their tasks before they set off on them.
I'll note that the engineer's default criticism isn't always positive: sometimes engineers overly-question and end up derailing the actual work. Critique is important, but sometimes executing according to the plan is more important.
(1) The company has either a sales issue or a pitch issue, if reasonable sales targets can't attract investors.
(2) Investors aren't adequately informed on the space and may not be a good fit for the company, if they're only interested in the company if it scales faster.
(3) Alternatively, if investors are short-term greedy, they may be informed on the space but not see a long-term viable path (in which case, silly of them to be investors, but also, analyze why they're long-term bearish).
(4) What other measures could be indicative of success and worth showing to investors, instead of unreasonably high sales projections?
I think it's unknowable, but you have to make a guess.
It's exploration, so you don't know if your time investment will pay off. It's like exploring for natural resources: you may discover a lucrative deposit or you may discover nothing. You can't know without trying.
There's no way to tell in advance whether you should spend more effort looking. There's no formula or rule that can tell you the right amount of searching because that would require information you don't have yet.
> The concept of a "root" cause is silly
The concept of ONE SINGLE root cause is silly, but the lesson of looking for root causes isn't that there's exactly one of them. The lesson is that you shouldn't neglect to look.
Fixing the wrong thing is one type of error you can make. One possible cause of it is not looking at enough things. This error happens often enough that watching out for it is good advice.
1. Create why sessions with key people in the process. Sometimes answers to why are not always apparent. More people contributing can help illuminate
2. If meeting with a group have a facilitator that has done this before.
3. The group needs to have equal say and contribution. No one, including managers and leaders, can overrule or dissuade discource about the answers to why. Everyone's input is equally important.
That said, you're right,maybe there are many sources of the seed coming to the field, and in a 5 why you can recognize that, but target the biggest bang for your buck first.
And in your other example:
> Because the sales targets for the enterprise are unrealistic"
> "Why?"
> "Because the Board of Directors can't attract investors with reasonable sales targets"
> "Why?"
> "Because investors are only interested in a company scaling at a certain rate"
> "Why?"
> "Because investors are greedy"
You're just not asking the correct question.
Yes "the sales targets for the enterprise are unrealistic", but why does that result in the issue that happened?
You would want to come out of it with, even when the sales target are unrealistic, our processes are resiliant to the issue that just occurred. So now ask the Why's that take you to this answer.
Unfortunately, this often means there is no resolution either.
I think that’s the best you can do, but it has problems. One, it becomes a bit of smoke and mirrors for people new to the process. Two, this only works for people who have access and recall of all the near misses and any grumbling in the ranks. Optimists cannot do a 5W justice. Three, I don’t trust any Five Why’s that I’m not present for, because there’s a moment in every RCA meeting where if I don’t judo throw the conversation we end up with some milquetoast bullshit fix that doesn’t fix anything or just makes things worse, and writing code more onerous.
"I feel pressured to do a job that is impossible and it damages my self worth."
Which means GTFO and get a healthier job.
I'm not sure "Why" is the right question to ask all the time. Seems like "If the only tool you have is a hammer, you tend to see every problem as a nail."
In a bigger sense though, the exercise is to force you to take a moment to look beyond band-aid solution, not as an exercise to critique capitalism.
It's a practical tool, not psychotherapy for engineers. You're not supposed to go namby-pamby hands-in-the-air "it's the culture!" after asking why five times. You are supposed to figure some automation to implement, some tool to build that will help fix a recurring problem for good.
Example:
Manager: Power costs at the plastics plant are way too high!
Engineer 1: Why are we using all that power?
Engineer 2: I figured out we have this press that eats a bunch of electricity all the time.
Engineer 1: Why's that one press so power-hungry?
Engineer 2: It needs to be operated at a super high temperature so it uses all that power to keep warm.
Engineer 1: Why's it wasting power to keep warm? Can't it keep temperature?
Engineer 2: The thing's out in the open and the building is air conditioned, so there's constant heat transfer to the environment. And I found an A/C vent pointed directly at it.
Manager: So we're wasting power on heat and cold! Good Lord! Can't we build a box around that press?
Engineer 1: Good point, George thought of that a while ago but no one's gotten to it I guess.
Manager (to now promoted Joint Chiefs of Ass-Kicking Question Making): Great! Get to it!
It's not rocket science. Everyone knows things stink and you can't get anything done at this stupid place etc etc. You either keep busy tending to the garden or you move on.
EDIT: To answer some other comments the original Toyota technique even included ways to explore multiple causes and other such complexities 50 years ago. It's ironic that lean software gurus can't even copy/paste properly. I would hope they read more books before writing their next one.
It’s not a matter of whose hands the hammer is in. Nobody gets to use it at all or everyone will.
Recently, they've instituted formal RCA process with "5 whys" and... every 'why' ultimately ends up being my fault. Now... they're not saying 'fault' directly, but no matter how you cut it, I forgot to add another test, or I didn't document something clearly enough, or I forgot some error checking, or... I forgot to remind someone of something or... whatever.
"Oh, don't take it personally! It's not just you, we're a team". But.. I'm the only one doing the work that is breaking, and I'm the only one fixing it, and every documented RCA lives on, pointing out that I made mistakes, and each document is delivered to 12 stakeholders every time there's a mistake, and mine is the only name on it attached to the 'root cause'.
"What lessons can we learn from this?" That we can't sustain this pace, and adding more managers is not helping the situation in any way.
I've been saying for a while we're formalizing way too much stuff, and that most of the practices they're bringing in from other places all had the baseline of "more developers than managers" in a team environment. I'm a team of one, and processes designed for teams of 3-5-10 aren't appropriate, imo.
“Why did you make the error?”
Was it a competency issue that training can fix? Resource constraint? Process problem? Do you just suck at your job (I say this in jest, but to highlight that you do want to ask the “why” that explains “why” you made the mistake, and not just stop at “Jacob messed up again”). That’s a broken 5 why process…
A proper root cause might be: “I don’t have enough resources to properly get the job done, and need another developer on the project” or “I’m too time constrained due to overhead meetings to properly perform tests on code”.
I feel the current root cause for why everything is broken is: “Jacob” And you want to stop that immediately.
There's been some cases where "I missed X - there's not enough time to check everything and I missed X". "Well, you should have told us X wasn't checked" or "you should have raised the alarm before". I've been raising it for ... 5-6 months. And the whole point of "I missed something" was... it's a mistake/oversight, not "I intentionally didn't check X".
There are rumors of other developers being interviewed, but no one has come on board. Assuming someone does, I suspect the thinking will be "let's double the previous workload - we have 2 people now".
I'm understanding of the situation, to some degree. Pretty much everyone on the project is 'overworked' in some sense, but they've been hiring and doubling up other positions, just not this one. I've been keeping this pace for 18 months. I scheduled one day off - 2 weeks in advance - because I had to drive someplace. That morning, someone noticed a financial bug that was preventing everything from working. 2 hrs later, from my hotel, I had to connect in and review and fix stuff. It was totally my fault - I missed stuff - but there's just... no getting away from it.
Adding in '5 whys' and other formal review processes on top of this situation borders on insulting.
You've probably thought of this, but if X is checkable, then perhaps the question to be asked, potentially outside 5 whys framework is why it's not automated. Or at the very least a checklist developed. Allowing an RCA to fall on 'human error' should be rare, not the default.
Another angle, if there is automated QA in place, is whether the go/no-go signals are good enough. Measures like code coverage can be a signal that your project is cutting QA short, and if it _is_ being tracked and shows green, that's a signal you need more advanced metrics.
In short, if management is shortchanging QA that should be in the causal path. We have an entire section on 'why metrics and tests missed the problem' outside the 5 whys just to prompt participants to discuss these perspectives.
> There are rumors of other developers being interviewed, but no one has come on board
Call me crazy, but if they're thinking about hiring another developer but not inviting you, the sole/lead developer to interview the candidates, then you're being replaced. But if they're asking you to work on vacations, then perhaps this is for the best. (Not that you're going to enjoy being laid off)
> Assuming someone does, I suspect the thinking will be "let's double the previous workload - we have 2 people now".
Well, yea. The alternative is probably to give you a pay cut. It sucks but you usually can't hire your way out of a budget crunch.
Dude, wtf. I hope you're getting paid very well and/or equity in the company, because that's totally fubar'd. You should be looking around for other jobs.
I did a 6 month gig at a company a few years ago. Team of... 6-8, with a dedicated PM and a good team lead. Company was around ... 80 or so at the time, and there were a couple other 'dev' teams (I think around 35-40 'dev' folks at all - it was growing so hard to pinpoint numbers).
I saw some of these types of processes there - I didn't always agree with 100% of everything done, but there was a team. 1 lead, one PO/PM, and... 5-6 devs and a couple testers - a self-contained unit. It worked pretty well, all things considered.
I'm currently in a situation where it's completely backwards, but they're trying to implement all the 'correct' and 'professional' techniques. Oh, and I'm part time - ~20 hrs per week. Pretty much everyone is part time, either overall, or part time on this project, and... the wrongness of trying to bring in techniques built for full time larger teams seems to be lost on everyone but me.
This is similar to how patients will rate doctors (lawyers, auto-mechanics, electricians) higher by things like waiting room design, ability to make small-talk, willingness to give antibiotics, etc. which are important but actually do not correlate with better care.
So I've found that optimizing for "responsiveness" is important in and of itself, and much easier than the alternative of "let me make sure non-technical senior management person X spends the time to understand my contributions at a deeper level".
Now, since going that route I’ve gotten deep into SAFe (Scaled Agile) because I believe that it truly solves so many problems. SAFe recommends using “5 whys” in certain situation and SAFe itself isn’t without valid criticisms either. IMO it’s still by far the best option for a long list of reasons.
Like anything in the wrong hands though, it can be co-opted. Everything revolves around good leadership.
This shows a broad spectrum of proponents and critics of the approach: https://www.google.com/search?q=five+whys+site%3Anews.ycombi...
In reality, complex systems are driven by networks of causal effects, where some form reinforcing and balancing feedback loops. There's no start or end to a causal pathway, there's just where we choose to look and what we choose to ignore. There is no root cause, there is a myriad of interlocking factors that together dynamically drive the system in certain directions.
Five whys type analyses tend to end up blaming whatever is convenient or culturally acceptable to blame, and leaves many branches of the causal network underexplored.
Five whys is easy to explain and humans love the narrative point of view promoted by a chain of events, but it's a very inefficient way to explore the causal structure of a system.
"Five Whys," is a variant of this game where you simply roll the dice five times.
If you want to put on a show and dance to let your management and colleagues know you care about quality and are doing something about it, then it's great. If you like false assurances and feeling like you've contributed to a system you cannot fathom or understand it will definitely give you warm tickles. And it makes you sound smart when you put on such an impressive display of initiative and critical thinking.
What 5 whys helps to do is to structure your existing knowledge. In my experience it is great when you want to analyze your own decisions, or structure team knowledge about particular issue down to a necessary level of detail.
For actual root cause analysis there are better tools, e.g. Ishikawa[1]
But could there still be some value to this sort of exercise? At least it terminates at something. If it is possible to get rid of that convenient or culturally acceptable blame attractor, at least one problem has be exorcised from the organization, right?
That being said, the process at least forces the team to look at root causes beyond what is visible on the surface. It's a good start but it isn't perfect either.
Edit: oh, because the link actually has hacker news in the query filter... duh...
For instance, where I work, if we have a large enough on-call issue, we have an RCA to figure out what went wrong. We use the five whys there to figure out what we could’ve done better. However, we usually only really go as far as the engineer’s actions that caused the issue. We usually don’t ask, why did the engineer choose to act in that manner instead of the correct one? Usually the takeaway is “We need a process to make sure engineer does right thing” and not “We need to make sure engineers don’t have too much work so that they have time and space to do the right thing.” I find it’s usually the latter is a better course of action but it’s hard to make those statements or requests, or if you do make those requests, management isn’t as open to taking action.
It turns out that, seen through the lens of this process, human motivations form a kind of skein or lattice structure, which terminates (or originates) with a small set of "core states" that are transcendent: bliss, love, oneness, okayness, happiness.
The states are transcendent in the sense that they depend on nothing and are universally available at all times and in all places and conditions. They are intrinsically satisfying, and all actions and behaviors are ultimately aimed at restoring the presence of these states.
It follows that the vast majority of human activity is, in fact, yak shaving! Human history is the story of a massive, intricate indirection through layers of abstraction to attain goals that are already available.
[ ] I'm not making money
[ ] Why
[ ] Because i keep getting distracted doing new things instead of marketing
[ ] Why
[ ] Because marketing isn't as much fun as writing new code
[ ] Why
[ ] Because I'm a programmer not a marketer
[ ] Why
[ ] Because i love being left alone and avoid pitching to other people
[ ] Why
[ ] Because I'm just an introvert and sales and marketing feel like shilling and spamming
[ ] Why
[ ] Because i am not a businessman and i just suck sales tbh
I guess I can see my problem but really don't know what to do about it. So I just do it anyway until I develop more confidence and get good at it? Is that it?
Anybody got any advice for me?
On a more constructive note—and I mean this in the best way possible, speaking from experience, not just being a critic for the sake of criticizing—maybe reflect on whether you're "getting distracted" because you're really avoiding the discomfort of not doing marketing because at a more general level you have a tendency to stay in your comfort zone. So work on breaking that habit instead. I know I'm guilty of the very same thing.
* find One Weird Trick to work around your lack of X
* get advice/training from someone who is good at X and do X yourself
* find someone who is good at X and pay them to do X
* decide that even thinking about this problem is painful and go back to doing the stuff you're already good at
In general the first two are gonna cost less money than the third, but will probably cost orders of magnitude more time. The fourth path is obviously not going to change anything but to be quite honest it's mostly the one I take with regards to marketing my own art.
> Why did feature X fail?
Would garner this response:
> Because the universe is deterministic and the fact that this feature would exist and disappoint was determined 13 billion years ago. It really couldn't have gone any other way.
Do we? It seems to me that many of us reach a point in our careers when we can maintain a high level of productivity (defined using whatever personal metric we choose (personal metric chosen over any external metric on the basis of our being seasoned professionals who can manage our own work)) for a long period. Sometimes at our cost.
Productivity isn't my issue. Stepping away often is. It's far too easy to devote most of a week of long days to fixing bugs and adding features and tell one's self that a few hours of downtime Friday and Saturday will be enough to spend part of Sunday working on the critical customer demo Monday.
Which went very well, thanks for asking! But how well it went isn't the point. My level of fatigue is the point.
Instead of 5 why's, I offer why nots: Why not step back and take the extra day? Why not give yourself permission to rest (at least a bit) more so that you can sustain this level of quality and quantity for longer?
Why not indeed....
"And of course, being productive means you can spend more time doing things you enjoy: like spending time with family and friends, honing a skill, enjoying a hobby, *or furthering your career.*"
So...be more productive so you can ... be more productive. Nice.
A lot of circular reasons come down to human factors, like juggling three things at once is distracting. Adding on an extra thing doesn’t fix that. Making one or two of the three less distracting doesn’t fix it, but it makes it better, it makes progress, and it establishes precedent for policy changes. It’s an agenda you can hammer on every time something breaks until the problem only happens once in a great while.
It’s the fact that 5 Why’s develop their own epicycles that sticks with management. Of the last five three of them had the same kind of conclusion, I guess we’re spending time on that now.
I believe the actual technique should be like “break 5 layers of your confidence in a given problem and _question_ everything about it until you build the whole picture”.
In other words instead of asking why 5 times question everything and unwind the knot until you have a straight thread. Sometimes it is not just 5 layers deep.
And one should be brave enough to put their own beliefs and experience under doubt and reassess them from the ground up.
That’s the path that leads to some really interesting questions about yourself, the world around, about other people. That’s what ignites the thought process.
5 whys is an oversimplification of the actual reasoning process. And as with other ideas that get wrapped up in a fancy proverbial form it can be misleading and turns to a cargo cult.
Start with “why should I trust the 5 whys? Will it really lead me to right answers? How? What if the answer is no?”
Personally, despite the popularity of this technique in the Lean/Agile crowd, I've never found it useful for meaningful problems.
Namely, there is never only one reason why something is the case at each of the 5 steps. It's usually a linear combination of various causes with different weights. Furthermore the reasons are not definitive, sometimes at best you can assign a vague probability to each. And finally there are unknown unknowns, the inexplicable. You may only have an intuition about something, but cannot put it into words. Remember often times intuition can be spot on and identify things that your conscious mind may not have access to.
I am not a fan of the matrix of whys that some companies have decided to begin implementing because of 1 blog post high up on Google searches that suggests to use matrices to organize multiple root causes.
They don’t need to be combined. I would rather see multiple RCAs each with a singular concrete cause, than a single RCA with a 5x5 matrix of intermingling causes. It makes it harder to address and dig through each issue accurately in context - you’re always reconciling the causes against each other to form a cohesive story, when there’s actually a good chance that there were separate, unrelated causes to your incident.
Then it becomes an exercise in "Because there are things I can do nothing about without leaving and/or starting a revolution."
This is not an answer most people want.
When I worked SAFe, I was able to point every single outage at the SAFe baloney using this technique. They stopped making us use SAFe.
::shudders in COE::
Reference: https://wa.aws.amazon.com/wat.concept.coe.en.html
Nah, any technique that gets people thinking about root cause analysis is worthwhile, but like most lean techniques they require a level of psychological safety in the organization to be effectively used.
The way I see it, there's a spectrum of trust that goes from one extreme where almost no process works well, and the other extreme where almost any process works well.
So there's the easy discussion of how your technique is supposed to work, and then the hard discussion of how much trust it requires of the people involved.
2 - ...