The Iterative Approach to Problem Solving

Author: Joe H., Inflow Engineer

Previously in the post How to Think Like an Engineer, I discussed how engineers approach problems and how checklists can be used to simplify problems into manageable steps. This week I want to look more closely at one of those checklist items. It’s the one that tells you to go back to the beginning of the list and it embodies a key principle of design, namely the use of iteration. Again, just as with checklists, learning how to apply an iterative approach to problem solving can give you an edge in just about any field.

The iterative approach to problem solving is based on gradual improvements to a very basic design. For example, if you need to move 120,000 pounds 3000 miles, and you have a system that can carry 150 pounds 120 feet, then you don’t need to design a whole new system, just improve the one you already have. This might seem like an extreme example, but it’s an accurate comparison of a Boeing 747 and the Wright Flyer. In 66 years, gradual iterations to the basic system improved airplanes in ways the Wright brothers could never have imagined. Obviously, there was a great amount of work involved between the two points, but there were very few, if any points, where the whole concept had to be reworked from the ground up. Instead, engineers were able to reduce a very complex problem to a series of simple problems.

This reduction in complexity is the key to iteration and just like the checklists and processes discussed in the post How to Think Like an Engineer, iteration is another tool for removing complexity from problems, which is truly at the foundation of engineering. Of course just like a checklist, using iteration requires enough knowledge of whatever field you are working in to not only solve the simplified problems, but to know which problems to solve and in what order.

Going back to the airplane example, it would have done the Wright brothers no good to focus on developing more powerful engines, since the issue limiting powered flight at the time was the lack of proper controls. By focusing on the limiting factor they were able to come up with a new solution and even today fixed wing aircraft are controlled using simultaneous roll and yaw controls. They also developed very efficient wings and propellers by doing repeated wind tunnel tests and making gradual improvements to their designs. In other words, they used an iterative approach to improve on existing wing designs and only had to solve the control problem from scratch.

So, how do you go about applying an iterative approach to a problem? First, look for the hardest individual part of your problem. For instance, if you need to develop a machine that spins straw into gold, you should probably focus on the part of the process that converts the straw to gold, since it’s a much harder problem than spinning. Try to be as focused as possible. For example, maybe breaking the molecules of straw apart into sub-atomic particles is relatively easy (we’ve had fission technology for decades), but putting those particles back together again is the real challenge. Once you’ve focused on that limiting factor, try to figure out what the most basic success would be. Perhaps instead of putting the particles back together as gold atoms, you focus on putting them back together as helium atoms, since those have fewer parts. Once you’ve figured out how to put two protons together with two neutrons, it’s just a matter of using that same process to add more protons and neutrons to the mix. Even if it takes a month to get a single atom, you can speed up the whole endeavor by building a second machine because now that you know how to accomplish each step in the straw-to-gold process, the problem has moved from figuring out how to do something that no one can do, to figuring out how to do it better, cheaper, or faster.

As I hope you can see, the real power of an iterative approach is found in identifying the correct starting point for your problem and then solving that particular portion of the problem first, so that the solution can be used to build a solid foundation for solving the rest of the problem. In my next post we’ll talk a bit more in depth about how to choose the right starting point and how to split a problem into many smaller problems. In the meantime, if you would like to dig deeper into the history of iterative design, check out “Iterative and Incremental Development: A Brief History” by Craig Larman and Victor Basili. You can find it on Mr. Larman’s website here.

-Joe H., Inflow Engineer

 

At Inflow we solve complex terror and criminal issues for the United States Government and their partners, by providing high quality and innovative solutions at the right price through the cultivation of a corporate culture dedicated to being #1 in employee and customer engagement. We Make it Matter, by putting people first! If you are interested in working for Inflow or partnering with us on future projects, contact us here