Van Gogh and Legos
On programming
On a regular Friday night with a friend, I got asked what’s it like to program over black marzipan tea. I answered quoting from memory Crockford’s though on it: “The majority of programming isn’t power writing code, it’s staring into the abyss saying, ‘My God, what have I done?”
My friend is a non-technical person and she was intrigued by what I had just told her, wanting to know more.
Do you even like programming?
It’s a combination of rush and frustration I don’t get from anything else. Spend a whole week scouring tens of thousands of lines of my own code just to realize that some third party provider was sending me malformed JSON? Programming is like 10 minutes away from being done with programming for the rest of your life. Get a brilliant idea a few minutes before leaving the office and solve the fucker instantly? I am golden god.
Isn’t a button just a button? Didn’t someone invent one that everybody can use and then go home?
Well, that’s like asking why don’t all children play with the same Lego block combination. Because the essence is in the synergy of the components, the sum of the parts type of thing.
Of course an if will always be a conditional statement and a while loop will always serve the same purpose. But how you stack these different blocks might create a self-driving car, a virtual reality or save a life.
The process of creating something new with something you already know is what really matters and I can’t stress enough the need to train yourself in software craftsmanship, from design patterns and SOLID principles to test driven development. Best practices take you from laying things on top of each other to building a masterpiece.
What are the differences between programming languages? How do you choose one?
Think about painting. You use different brushes to do different strokes. There are small brushes to paint fine details and there are huge ones you can paint a wall with. You use graphite for quick sketches and prototyping. But you probably want to use watercolor or acrylic for serious business.
How long are you planning to maintain what you painted? Because it’s how you’ll chose your canvas: maybe a table napkin, maybe paper or fabric. You’ll find the same variety of programming languages and mediums available. And yes — even software products range from cave paintings to Van Goghs.
Making sense of everything
Whatever you create, do it with conviction and relentlessness. You might not know what the outcome should look like or how you are going to get there. Trust in the process and keep being Agile. In the end, it’s an endeavor of creating something palpable as much as it’s an endeavor of creating yourself along the way.