I once lived for several weeks with a team of Russian scientists. The South African government wanted me to learn all I could from them and bring their ideas back to help industry. I’d spend ten hours a day learning, and the last couple drinking chacha and REALLY learning. Their area of expertise is called TRIZ, which is an acronym for the theory of inventive problem solving. Inventive problems are problems that involve some inherent contradiction, like making something strong AND lightweight, present AND absent, both here AND there.
TRIZ was created in the Soviet Union after analyzing tens and later hundreds of thousands of patent proposals to identify patterns of innovation. The idea was to discover a way that people who aren’t “creative” can use a systematic approach to discover innovative solutions. The initial work was done by Genrich Altshuller in the 50’s, and my hosts in Detroit were two of his students, carrying on the work in America.
TRIZ is far too large a topic to address in a single blog post. I have found many of the tools and methods of TRIZ useful in software development, but I’ll concentrate on one of the more deceptively simple ones.
Two of Altshuller’s students, developing on his ideas, added a new tool to the TRIZ toolkit called Anticipatory Failure Determination. It addresses shortcomings in current standard approaches to risk management. The most significant for us is the fact that risk management tends to address risks identified through brainstorming. The result is that we don’t provide for any risk that has never happened to us before (memory) or which doesn’t pop up in a brainstorming session (imagination). Where TRIZ takes a problem and follows discrete steps to arrive at a solution, AFD works backwards, starting with a working solution and attempting to create problems.
AFD challenges practitioners to put themselves into the shoes of saboteurs. They must use their engineering skills and knowledge of the system components and external factors that act on the system to devise ways to do as much damage as possible. There are two valuable benefits of this approach. One is that it engages different heuristics to generate inventive ideas that might not be exposed in a standard risk assessment. The other is that while a standard risk assessment looks for holes and patches them up (adding complexity), and AFD approach looks for internal or external components that could contribute to system failure and tends to favor replacing or removing the components (reducing complexity).
AFD can be used to avoid failures as well as to discover the causes of existing failures.
I recall a story about AFD in action. A consulting team was asked to explain why aluminium blocks stored in a warehouse were pitting on the surface. They approached the problem not by looking for the cause of the damage. Obviously, the company had already done that before hiring expensive consultants. It must be due to some cause that is not obvious and perhaps one that has never occurred anywhere before, or it would be a known issue in the industry.
Instead, they asked themselves the question, “If we were saboteurs hired by a competitor to damage this company’s stock by pitting the surfaces, how might we do it using only what we have in this warehouse?” As engineers, they knew that such pitting could be caused by hydrochloric acid, but of course, there was no hydrochloric acid stored anywhere near the aluminium. That would just be stupid. Could they make their own? They’d need hydrogen, oxygen, and chlorine. There was a chlorine solution used for cleaning parts, but it was at the other end of the warehouse. How could they turn that into hydrochloric acid and get it all the way over to the opposite end of the warehouse and onto the aluminium long enough to do damage, and then make it vanish before anyone saw it? This is a series of inventive problems for which TRIZ has identified several standard solutions.
Think about it. I’ll pause because you’ll feel silly when you read on for not thinking of it yourself, if you haven’t already.
It was a corrugated steel warehouse. Hot in the day, cold at night. Water vapour from the washing station with small amounts of chlorine in it was condensing on the cooling aluminium at night and evaporating before anyone looked in the morning.
American inventor Charles Kettering once said that a problem well stated was a problem half-solved. Changing our perspective by trying to create the problem using a careful review of the components present brings different heuristics into play and leads to more detailed and actionable problem statements. Knowledge workers encounter many of the same problems repeatedly, and we have standard tools like pair programming, continuous integration servers, automated testing, and such for dealing with those risks. But we’re discovering new country every day and in our field any of us may at any time have a crisis that has never, ever happened to anyone before in the history of software development.
Perhaps, in addition to our standard tools of risk management, the TRIZ practice of anticipatory failure determination could help to reveal risks that are not standard, or to uncover the causes of failures that elude our existing tools.
Anticipatory Failure Determination and its acronym AFD are trademarked by Ideation-TRIZ, a company full of fine people with whom I have no association.