Everybody likes a elegant solution. A tightly woven system that only does exactly what is needed, just well enough, in a simple manner. We gaze upon such contraptions with envy and bewilderment, thinking we could never ever reach that level of elegance.
But neither could whoever produced our object of admiration. In their first try and alone, at least.
What we look at are often the latest versions after countless iterations, numerous bad decisions and subsequent reverts, and a lot of introspection.
A little at a time, step by step, without having the faintest knowledge of the whole path, just a very dim vision of the direction to take, the author of the piece we observe applies change.
Way more often than not, the author gets feedback from friends, colleagues, random strangers. That feedback provides with invaluable insight.
At the end, zooming back, we can observe that the following takes place:
- Clumsy code is refined into more elegant solutions, because
- Use cases become more clear and simple as time goes by, because
- Problem variables get nulled out because they turn out not to be that much important, because
- One gets a better understanding of the problem one is trying to solve, not only but mostly because
- Other people provide priceless insight on the problem and solution
What we look at is not only the product of working a solution, but a problem as well. It’s not a single person’s idea, but often the idea of many, often disguised as a genius move of a single contributor.
So when someone presents you with a carefully crafted, flexible and elegant piece of software, and tells you “it was a weekend project”.
Tells you that “it was rather easy”.
Undervalues the effort that it took to do it.
Brags about doing it all alone without any help.
Don’t believe them.
When you look at the code of a library, or gem, or package, and you see the flawless, lean and perfectly put lines of code.
When you join a company or a project and see what it seems to be fantastic code.
Don’t cheat yourself into thinking you should be producing perfection from day one, single handedly.
It takes time to understand. Give yourself some time.
It takes feedback and contributions from other people to catalyse your understanding. Get yourself some people.
The world is full of people that want to put themselves above you at whatever cost, and that will lie to make you think you’re not good enough.
You are. Be ambitious, be diligent. Just don’t buy into the whole snake oil thingy.
Get yourself out there. Publish your stuff. Get feedback. Learn from other people.
It’s OK that it doesn’t look perfect at first. Elegance takes time, and you’ll get there.