STEENSBURROW

The masculine urge to reinvent the wheel

Published by steen on tagged #musings

So I've been playing Baby Steps. It's a game about walking up a mountain by putting one foot in front of the other, and in the process it explores masculinity and how hard it is to accept help from others. I find that I have a lot more in common with Nate, the game's coveralls-wearing manchild protagonist and player character, than I would like to admit.

I'm a self-taught programmer. After failing to get into the product design course at the Politecnico di Torino I enrolled into CS at UniTo because I'd been dabbling in computers since I was a kid, and in programming in the years leading up to my graduation from a linguistic lyceum. I did not attend a single course of the CS program. I don't even know what the CS department looks like because I never set foot into it. I'd planned a trip to, of all places, an anime convention with some friends I had made on the internet, and the trip just happened to overlap with the first few days of courses at the university. After I came back from the convention I figured that ship had sailed and I would not be able to bear the shame of missing the first day of uni. In the mornings I would pretend to take the train to uni, and instead go walking in the woods around my town. I was not in a good place mentally.

Nevertheless, I kept programming. Eventually my father figured out that I was not going to uni. He let me stay home for the rest of the year until I figured things out. I learned Elm and OCaml. The sabbatical year turned into two. I learned TypeScript and React and made some small websites. Now I had to find a job. I rewrote the imageboard that kickstarted my interest in programming in Ur/Web. On the cusp of the third year, I got hired at a consultancy agency by some kind people who were sort of amused by the way I told them about these projects.

During this time I developed a narrative for myself to cling on to. That's what you have to do when you're in a bad spot; you tell yourself whatever horseshit you need to keep yourself sane. I convinced myself that I was better than the average programmer, and certainly better than the people who came out of uni having only taken a cursory glance at Java and C++. Not only that but I'd come all this way by myself, so I didn't need help from others. I was proud of my skills and my self-reliance.

That pride begat a lot of traits that I carry with me to this day. Sometimes I find it hard to ask for help, particularly when I'm already knee-deep into a problem. I refuse to use project templates. If a library gives me a problem I'd rather reimplement it myself from first principles than figuring out how to fix it upstream. I generally don't like working in other people's code. If I have to choose between using a library that would be completely fine for my purposes and reimplementing the parts I need myself, I'll choose the shortest route to yak shaving any day of the week.

I'm a competitive yak shaver. I've been wanting to revamp this blog for a while, but I always get stuck on the part where I have to reimplement the markdown parser. The production-level ones are clearly not up to the task because they don't produce the HTML output that I want, and I think I could do better anyway. I burn out on my own projects on a regular basis. Thank fuck I can turn to videogames when that happens.

Oh, right, videogames. Baby Steps. Where were we?

Baby Steps is partly about learning to accept help. It's not easy to do that; you have to swallow your pride and accept that the help you're getting may not be in the form that you envisioned. It took me a long time to convince myself to use Zola to set up this blog when I don't really like the templating language it uses and I know that I could just as well write my own static site generator with a principled templating language and blackjack and hookers, given enough time.

But that's just the thing: time. I work a full-time job and I have many other things to think about other than implementing the perfect templating language. I don't have the energy to do all of that. And Zola is pretty damn good anyway.

I think I need to learn to accept that compromises are good, actually. That I can't do everything myself. That I don't need to do everything myself. That other people's code is often better than my own, and that flawed code that exists is infinitely better than better code that doesn't. That I should be getting help in any way I can.