Programming is making things

A few years ago, my greatest achievement, the thing I did that I was most proud of, was the thesis I presented for my BA in Political Science. This thesis took a lot of work – after months of doodling, I dedicated an entire month to writing it. I shut off completely: stopped going to class, saw friends only once a week, worked Sunday to Sunday, from 1pm to 5am. I only had respite in sleep, working out and eating – I ate a lot, but the intellectual exertion was such that I actually lost weight. It was perhaps timely that I wasn’t in a relationship.
In this month I struggled every day with putting words on paper, trying to make a compelling, meaningful chain of logic, integrating the best parts of all the papers I was reading. And it came together, through cycles of desperation and fertility. I thought that, besides doing Math or Physics, this kind of writing was the most exacting intellectual exercise possible. And probably the most rewarding, at least for me.
But that was before I started programming, a year after college. The very first programs I wrote, crude and undignified, had a sense of concreteness never before felt in anything else I had made.
Programming has two big advantages that everyone seems to be aware of: 1) you can express your ideas into a reality that other people can use, through a browser or a mobile device – you might even change the world; and 2) it is considerably easier than in other professions to get high-paying, part-time, remote jobs – though I contend that programming jobs are frequently way shittier and mentally taxing than other jobs, hence the market premium.
I find the beauty of programming in the fact that when you make a program, you make a thing that stands on its own. It is not a material entity, but the fact that it can be executed by a machine gives it more existence than the mere written word. Making programs is probably closer to making chairs than to writing papers, in that the final result can stand alone, quite independently of human interpretation. Programming thus is something entirely novel to someone who has spent their entire life working on intellectual products. When the parser yells at you about a missing semicolon, or when you get invalid results, you experience the resistance of the medium. Overcoming it is what makes a program a thing.
Programming not only felt more concrete than my thesis – it also felt more concrete than all the business plans, financial projections and all the other things I had done in college and working in finance. When I was doing all these things, I always felt that they were somewhat vague, even when struggling to make them concrete. But when I made a piece of code, it felt like making a chair. Is the chair comfortable? Does it crack in half when someone sits on it?
Programming makes it easy to respond to those questions, if you are really honest with yourself. And that’s probably why I’m still doing it eight years after starting, and without plans to stop anytime soon. If programming was only about changing the world and getting desirable jobs, I don’t know if I would have sticked around.