When we face a problem, often there are several solutions. Which one is just good enough, and which one is ideal?
Ideal solution criteria 🎯
As a solution indicator test, I often use a powerful idea from the Theory of Inventive Problem Solving (TRIZ).
Ideal final result is achieved when the contradiction disappears through a change in approach, or when the function works without the initial system, or when the object (system) automatically removes the contradiction. No system deterioration. No compromises.
Example: Airbus 330 sidestick function ✈️
The drama happened in 2009, when Air France Flight 447 was en route from Brazil to France.
During mid-flight, ice crystals began to accumulate in the pitot tubes, affecting the speed measurement. The autopilot turned itself off. The pilots took manual control.
Historically, to maneuver an airplane, US and Russian manufacturers use control yokes (left picture), while the European concern Airbus uses sidesticks (right picture).
During the pilot's manual control, the copilot abruptly pulled back on his side stick without notice, raising the plane's nose. After some time, the wings lost lift, and the aircraft began to stall, loosing the hight. To overcome the stall and gain speed, the pilot followed the routine steps: pushed forward the side stick to temporarily lower the nose.
The dual sidesticks on Airbus planes work as follows. They are physically independent, and the program calculates the result. There are basically three conditions of a sidestick related to horizon tilt: neutral gives full control to the other side stick, forward, and backward. When both sidesticks are not in the neutral position, their result is some up. This can be presented as a simple function.
function getStickLevel(left: number, right: number) {
// when left is neutral
if (left == 0) {
return right; // full control to the right
}
// when right is neutral
else if (right == 0) {
return left; // full control to the left
}
// otherwise, average the levels
else {
return (left + right) / 2;
}
Problem 🤔
The copilot accidentally pulled back their sidestick, cancelling the pilot's sidestick's forward level. There were system warnings about both sticks being in use at the same time, but during a stressful situation, the pilots' attention was elsewhere. The recording showed the copilot speaking, "I don't have control of the aircraft anymore now," and "But I've been at maximum nose-up for a while!" when the copilot realized the issue. Ultimately, the airplane crashed into the ocean.
What is the contradiction from the program perspective? The function must sum any given non-zero numbers and not return 0. The mathematical module cannot be used. This is impractical when you have input values, say, -1 and +1.
Solution 💡
Let's move the problem on the physical level out of code. The copilot’s control input must exist so they can instantly assist, and must not exist so it does not interfere invisibly.
One solution is widely used in US and Russian airplanes. The sticks are physically connected and are in sync. You move the left stick, and the right stick immediately mirrors those movements.
That upper-level solution essentially eliminated the problem. Moreover, the best part is zero code. There is no need for a computer controller.
Example: Abu Dhabi speed cameras 📸
Placing many speed limit cameras on a long highway requires a large budget.
Problem 🤔
The contradiction can be stated as follows. A highway is long and requires many expensive cameras. To measure a car's speed at any point, there should be a camera, and at the same time, there should not be a camera.
Solution 1 💡
Abu Dhabi's government experiments with average car speed. The first camera records the time of highway entrance, and the second records the time of exit. The distance is known, so the average car speed can be calculated. If it exceeds the limit, the vehicle definitely sped up too much at least once along the route. You can also drive very fast, half the route, but then you will have to drive the second part slowly. The solution drastically reduces the number of cameras.
Solution 2 💡
In clear weather, from a height of 30 meters (100 feet), the horizon is visible up to 20 km. To locate a phone, cell towers use triangulation. Knowing three radii to the phone, the circle intersections will reveal the exact position.
Today, almost every highway works with transponders in cars. A transponder can be extended with a minimal phone SIM card functionality, so that cell providers can track car speeds. Highways already have cell towers around. Transponders are widely used.
This solution completely eliminates cameras, and the speed limit system continues to function.
Example: ML learning (AI) 🧠
Today, Machine Learning approximates a function that maps millions of given inputs to their expected outputs. Input can be an image, and output can be text describing the image object. This process is called "labelling" and requires an enormous number of examples for the model to create a very good approximation for almost any unseen image. Historically, developers created huge databases with input -> correct answer examples created by hand. Each image is manually highlighted with polygons showing the exact object positions. Just elephant images could require tens of thousands of examples. This is a trunk, this is a leg, this is an ear, and as a whole, this is an elephant.
Such learning, with carefully curated examples of inputs and expected outputs, is called supervised learning.
Problem 🤔
An AI model should learn patterns for object relationships. If we see an elephant trunk, there is likely an elephant head and a body with legs. It is not related to a bird or a table.
From one point of view, there should be a polygon for each image object; from another, there should not be a polygon. Contradiction.
Solution 💡
The following modern approach, called self-supervised learning, does not completely eliminate human labelling but drastically reduces it.
At the first stage, each image is randomly divided into blocks, for example, 3x3, and some blocks are hidden. An AI model trains to guess the hidden parts. By doing so, the model learns patterns between the objects. Like an elephant should have a trunk. It learns relationships on its own without a human manually highlighting all the objects in the image.
The model does not know how elephant objects are called in different languages. The second part is to show prepared, labeled images. This time, we need much less image labelling, as the AI model has already built object relationship patterns.
Note about TRIZ 🧬
Altshuller, author of TRIZ, was a famous inventor who reviewed 40 000 engineering patents and developed algorithms to resolve technical contradictions. The algorithms have been used by research centers worldwide, including companies such as NASA, Boeing, Siemens, GE, Ford, Intel, Samsung, and Apple.
The genius of Altshuller is that he built the invention machine in the physical area.
The given examples do not comply with TRIZ, and there was no intent to do so.
First, TRIZ was created to resolve physical problems. To state the right contradiction, you should have a very good experience with it, and also specify what system quality you want to improve, and what the constraints are.
Second, there are strict algorithms and a list of known physical and chemical approaches to apply to each specific type of contradiction and system quality improvement. The solution is not known, but you likely be able to find the optimal one. Instead, I picked examples of already-known solutions, which is totally counter to TRIZ.
There are many attempts to apply TRIZ in business, the arts, public relations, and even IT. None of them has been endorsed by the TRIZ community without dissent. One reason is that such work requires enormous intellectual resources and perseverance, which is hard to find nowadays. For example, Vikentyev, also a former Alshuller student, analyzes 4-8 kg of scientific books daily (!) for the research database on creativity. Also, there is no guarantee that a similar algorithm exists in a non-physical area.
Conclusion
The concept, when the initial problem disappears while the system continues to function, is very powerful. Also, during programming, I often found that the ideal solution had no code and that systems were improved by other means, such as redefining business tasks or switching to a different service platform.
Resources
- Air France Flight 447, Wikipedia
- Average car speed in Abu Dhabi
- TRIZ site, supported by Altshuller's family and friends. As a bonus, fiction fans can find the list of all fiction ideas of all time.
- Introduction to TRIZ. Basic concepts and approaches, v 3.0, the original e-book.
- Vikent.ru by Vikentyev I.L., contains the largest world research database about creativity.
- Effective TypeScript: 83 Specific Ways to Improve Your TypeScript, 2nd edition, 2024, by Dan Vanderkam, where I initially met the Air France Flight 447 example.
- Artificial Intelligence: A Modern Approach, 4th Global edition, 2022, by Stuart Russell and Peter Norvig. The classic book on AI.
- European software patent examples by Bardehle Pagenberg.







Top comments (0)