Beyond the Code: my reflections after 365 days of code
On Dec 12, 2023, exactly one year passed since I decided to dedicate my 100 percent attention to being good at programming. I learned many things other than just code during this time. This is just a collection of those things:
Minecraft
My 10-year-old cousin showed me his house in Minecraft, then he showed me his shop, and then his chicken coop, he was passionate about everything he showed me. He kept going back to the game and building new worlds, imaginary but also very real, in some cases, more real than reality. Programming, it seems to me, is just Minecraft for adults, but people can live and interact in the imaginary worlds that you create.
Action
Programming is an Action-first discipline. You learn by writing code - not understanding of the science and history of code. The latter help but without lines of code under your belt, it is all bullshit. All code can be executed, all your hunches can be tested, and all your hypotheses can be disproven.
Try
Programming is also a Trial-first discipline. Things are often easier to figure out by trial and error than by merely thinking about them. Sometimes more information gets uncovered about the problem when you are halfway into the solution, or when you have failed at solving it 3 times. Another way to say the same thing: programming is iterative.
Taste
At the deepest trenches, programming like other domains, relies on taste. The taste of the programmer who wrote a particular library, or a language. A guy, in some dark corner, decided one day that in his language - 2 + 2 = 4, Cat + Cat = CatCat, and Cat + 2 = Cat2, and that was that, millions of people now spend hours debating whether Cat+Cat = CatCat or should it give an error. There are millions on both sides, it is all a matter of taste.
领英推荐
English
People who tell you that you can be great at programming without being good at English are bullshitting you. Yes, you can start programming - there are a lot of beginner-level tutorials in various languages, and yes some libraries have docs in multiple languages, but the reality of code is that it is English-first. When a new library is released, it is in English, when you go on a forum to learn, those are in English too. A lot of terminology makes sense in English. For example, React is called React because the interface REACTS to the data. And ideas like ‘abstraction’ are far easier to grasp if you know the meaning of the word and how the word is used in domains other than programming.
History
I read somewhere in a philosophy book that philosophy is just one long conversation. Someone in Greece started it by asking some questions, another guy answered it 2000 years later in Germany, and today we are still responding to some of the same questions. I think the same can be said about programming. To know why something is the way it is, you must know what existed before it to solve the same problem. Every generation has a new programming paradigm to solve the same age-old problems. Once in a lifetime, new truths are uncovered - like the invention of the microprocessor, or that of the internet, and in our times, the invention of LLMs (transformers). These truths require the creation of new ways of thinking, but other than that we just solve the old problems in new ways.
FOMO
More things happen in the world of programming every day than in any other discipline. Things change, things get better, things get worse, old things die off, and new things are born every, single, day. Programmers live in perpetual fear of missing out. Think of it like this - if you were an English grammar expert, a programming equivalent of your morning would be reading a change log like this
NewEnglishGrammar v0.0.1-early-release
Now, do you upgrade to the New Grammar, or keep using the old one?
Thieves
Copying someone else’s code is an accepted practice in code - people call it reuse. Now that I think of it, copying is revered, a programmer is often judged by how good they are at writing reusable code. We are all thieves, copycats.