Friday, July 27, 2018

The mother of all wastes

Let's describe your product from problem point of view.

(you know... Problem / Solution ... )

You may have 10 categories or problems to solve with an average of 15 problems per category and each problem will have an average occurrence of 100. So, simplifying, you need to solve 150 distinct problems and a raw total of 15 000.

So, ideally, you can solve a problem once and re-use it for 100 times. That could simplify a lot your product and the overall work. Of course, a solution for a repeating problem could have improvements and it is difficult to go back to already implemented parts and adapt every time to the latest form of the solution.

Sadly, the most common reality it is much worse.

Yes, you will rather have up to 100 different (~ too many) solutions for the same problem. Each "solution" will have other logic and other conventions so the overall complexity will increase exponentially.

What about improvement?

You will have a better solution in time, but (these better solutions) will not be re-used as you may think. In fact, the degree of reuse is rather related to the degree of existent usage.

Can we call this "creativity"?

No, we can call this one of the types of waste by over-processing. ... and because it is such common situation it is a candidate for the supreme title of "the mother of all wastes".

Root causes?

Many engineers have the belief that they are some "pure creators", some artists. They forgot about re-use and they forgot about consistency. So, we are producing some kind of expensive "luxury products", where too many things are "hand-made" and too few are standardized. Also, too many times they do not talk enough to each other in order to harmonize the solution and share their experiences.

Then what is the software creativity?

It is the creativity of a mathematician and of an engineer: as much as possible make the things that are similar in a similar way and things that are different in a different way.

How is that creative?

You need to use your creativity to simplify, to reduce the complexity because complexity is your generic problem to solve. And at the same time...

... continuously find a better solution for each problem, while minimizing the number of solutions in use for the same problem.