It is true that we live in a culture of haste, where everything has to be ready before yesterday, and where the successes of others are presented to us as if they happened overnight, creating the belief that our most ambitious goals can be achieved quickly.
However, when we analyze the apparently dazzling success of a successful person, we see that this media facade is nothing more than the tiny tip of an iceberg hiding beneath it a great deal of perseverance, failures, effort, and tenacity. Elon Musk, Bill Gates, Amancio Ortega, and so on, to give a few extreme examples, all share a similar story: many hours of work, small progress, and great results… after years, even decades.
Without grabbing headlines, many other people achieve their goals, which do not necessarily consist only of getting rich: writing a book, losing weight, launching a startup, walking every day, running a marathon, or planting a thousand trees.
None of that happens overnight: if you set yourself this last goal, you will have to plant the first tree, then the second, and so on until you reach a thousand. You then achieve the great result you were looking for: you are one of the few people who has planted a thousand trees, even if that is not relevant to everyone else; for you, it matters, and it makes you happy.
But how did you achieve it? Exactly: little by little, one at a time, with the perseverance over time that your purpose gives you.
We do not realize that every great achievement, whatever it is, is the result of many others that are infinitely smaller.
Many years ago I decided to practice yoga; at the beginning everything cost me effort, I ended up with sore muscles, my joints hurt, and although I ran and walked, my body was so stiff that I could not even do the downward dog pose comfortably. Now, without becoming an expert yogi, after more than fifteen years of practice, I do a session almost every day for half an hour or forty-five minutes with ease and without tiring myself. I simply move from one asana to another (that is how the yoga poses are called), in a fluid and pleasant way. And how did I progress? Little by little and without losing interest.
I am surprised that although we have an agile software development culture (all that talk about embracing change, advancing in incremental steps, delivering value to the client above rigid methodologies, etc.), we do not realize that the first solution to a requirement is never the best. What happens then as functionality is added to the system without improving what already exists, without adapting what already works by improving the design to integrate it?
Little by little, the project becomes increasingly unmaintainable, or even a huge ball of mud (big ball of mud).
That is: if we do not continuously improve the implementation of what already exists, we will continue down the path I just described toward an increasingly worse solution.
In software, improving something does not mean doing a complete redesign, throwing everything away and starting again (although sometimes it is necessary). It means incorporating micro-improvements into your day-to-day: refactoring some classes, improving certain names, simplifying that function, extracting redundancies, organizing the project better, or adding more and better unit tests. Small tasks that take very little time to perform compared to all the work required to run any project. I mean that by dedicating just five percent of your developer time to improving what already exists and carrying out those micro-tasks, the quality of the project will be several orders of magnitude better in every sense. And, surprisingly, you will be able to work on it much faster.
For some reason I do not know, this dynamic of continuously integrating micro-improvements is difficult for many developers to understand and apply.
In everything, in software too, any major improvement we consider, of any kind, is made by carrying out many other smaller improvements.
This is nothing more than applying the kaizen technique to everything you do.
Incorporate micro-improvement into your day-to-day: over time, your code will become surprisingly better. Apply this perspective to other areas of your life as well, and it will likely improve in every aspect you set your mind to.
PS: article also published on Medium.