On Paradigms of Problem Solving (Revised Version for Class Assignment of Stanford Continuing Study)
March 21, 2015 Leave a comment
In the 19th century, engineering was almost a synonym of mechanical engineering. A typical way to solve problems at that time was 1. analyzing the mechanical structure, 2. building the machine with gears and wrench and 3. using steam engine to drive the machine.
Steam engine was a revolutionary innovation as it introduced a “paradigm” for problem solving. If you have a mechanic description of your problem, steam engine can take care of the rest. There were tons of derivative innovations following this “paradigm”, such as plane, steamship, submarine, automobile and so on. (some of them used internal combustion engine, an improvement of steam engine). Theoretically, steam engine and its derivatives can solve any mechanical problem. What people need to do is to describe the problem in a “mechanical language.”
In contrast, nowadays people have been accustomed to resort to computers when they have problems. Computer is another revolutionary innovation because it provides a similar paradigm. A computer is basically a calculator that can do additions very fast. Since all arithmetic operations can reduce to additions, computer provides us the ability to solve any arithmetic problems that can be described by computer languages. The paradigm for computer is 1. formulating an arithmetic model, 2. proposing an algorithm and 3. running the algorithm with computers.
Steam engines and computers share some common points. Both of them provide a good solution for a fundamental problem: steam engines deal with the problem of “generating rotary movement with a strong force” and computers deal with the problem of “doing additions in a fast way”.
We solve problems by paradigms, namely we divide a problem into a large sequence of “fundamental problems” and solve them with a “problem solver”. The figure below shows the paradigm for steam engines and computers.
Why we need paradigm?
Paradigms can save us time. The real world is too complex and we cannot do everything well. A reasonable way is to solve a small set of problems perfectly and to transform the problem we want to solve into these problems.
Why we need to be cautious about paradigms?
Every innovator needs to be cautious about paradigms. Every paradigm has its own limitation. A paradigm can be very good for some problems and very bad for some others.
It is awesome to use steam engines (or its derivatives) to solve transportation problems. However, it will be very inefficient to use it to solve communication problems.
In the pre-information age when most communications were done by mails, a lot of people tried to improve communication efficiency by inventing faster mail vans. They innovated in their familiar paradigm, but none of them is remembered by us. The problem of communication efficiency was not solved by faster mail vans but computers and the Internet.
Similarly, computers also have drawbacks. Whenever we face a problem nowadays, we subconsciously resort to computers (by writing apps or algorithms). However, computers are powerful, but definitely are not omnipotent.
For example, short battery life is the bottleneck of electric cars. Tesla uses normal chemical batteries provided by Matsushita and its secret sauce is its power management algorithms. Although Tesla has done a good job, its solution still follows the paradigm for computers. The battery life problem is an energy problem, which cannot be modeled as arithmetic operations. The fundamental problem here is “to store a unit of energy”, which hasn’t been solved well yet.
Another hilarious example is this mad mother who created a app to lock his son’s phone when he doesn’t respond. The problem here—-“improving the mother-son relationship”– is definitely not an problem that computers are good at.