1.2. Perceived Vs Actual Complexity¶
It is a general notion that anything that takes more steps is more complex. Fewer the steps, simple it is.
Taking forward the vague definition of productivity in the previous step, all we want to do is how can we reduce the overall effort for software engineering. The key here should be overall effort. When you follow this book, you may feel, this is extra work, but investment in this extra work will reduce the overall effort.
When this book recommends adding a few extra steps to your overall activity, it may feel that we have added extra complexity. But it’s OK. It is human to believe that anything that you add is going to make things more complex.
Quote from Antoine de Saint-Exupery
Perfection is Achieved Not When There Is Nothing More to Add, But When There Is Nothing Left to Take Away.
So, we are made to believe and accept that, to make things simple (and perfect), remove whatever can be removed. Adding an extra step, or doing something more, would go against our psychology and beliefs. If we do something extra, you may feel or perceive that things have become more complex. But in reality, it would have made things more simple if we look at things holistically.
1.2.1. A practical example¶
Let’s take a small practical example.
> If something can be done in 3 steps, why do it in 6?
Well, productivity is not related to the number of steps. It is more dependent on the overall effort that you have to put in to get the output. But here, we will see how we can reduce over all efforts even if we increase the steps.
Take for example, multiplication of two numbers, huge numbers, without using anything digital. No calculators, no mobile phones, no computers.
1.2.1.1. Approach - 1: Traditional way of multiplication¶
Step | Operation |
---|---|
1 | Take Number |
2 | Take Number |
3 | Multiply them. |
Done | Now you have your answer. |
For small numbers, this is fine. But when the numbers A
and B
becomes very huge, multiplication becomes very much effort intensive, and error prone, especially when done with pen an paper by humans.
1.2.1.2. Approach - 2: A different approach — Using logarithm¶
Back when calculators were not even invented, mathematicians used https://en.wikipedia.org/wiki/Common_logarithm tables.
Calculating log of a number was a Look up on that printed table.
Step | Operation |
---|---|
1 | Take Number |
2 | Calculate its logarithm : |
3 | Take Number |
4 | Calculate its logarithm : |
5 | Add and . Addition of two numbers, how ever huge, is simple. Now, you have |
6 | Calculate Anti-Logarithm of . |
Done | Now you have your approximate enough answer. |
When multiplying small numbers, Approach 1 is best. But as soon as the numbers become huge, and when calculators were not invented, common log tables were the best approach known to humans.
Some reference videos are here:
https://youtu.be/VRzH4xB0GdM : Log Tables - Numberphile
https://youtu.be/vzV50goW_WM : Log Tables (extra bit) - Numberphile
https://youtu.be/9D3Rp3oiMVQ : How We Used Log Tables by Jim Simons
As you can see, although we increased the total number of steps we have reduced overall effort for many cases, and thus improved productivity.
The calculation just required look up from a table and addition.
1.2.1.3. Learning Curve¶
If you have never seen a log table before in your life, indeed there is a learning curve.
But, you must see the long term benefits as well. There is a one time cost of learning this, but all future multiplications would be far more efficient.
How ever, there is one more thing that will help you in long term. Division takes exactly the same approach, and only difference is subtraction.
So learning new skill to solve 1 problem will also help in future for another set of problems as well. Keep an open mind and be curious like a baby to keep learning and applying all past skill set to new set of problems.
We need to take a similar approach with this book. Even if you feel that the new approach mentioned in this book is counter-productive, just because it may increase your work today, it may have a positive impact in the future. It has the potential to improve your productivity not just in the long run, but sometimes in the very short term. And this will improve productivity not only for you, but also everybody around you.