This is a bit of stream of consciousness with some light editing. I wrote it quickly on my iPad, so it’s pretty rough. It’s better than nothing though.
I’ve always thought of myself as a perfectionist especially when it comes to the code that I write and the projects that I work on. This tenancy can be useful since it has allowed me to dive deep into many topics, but it also limits my productivity. I’ve spent so much time learning how to model data and implement data access layer code that I never had the opportunity to build anything of consequence with what I learned. I know quite a lot about Java and the JVM, but it only comes in handy once in a while.
Factorio is one of my favorite games. It’s a game with a simple premise. You’re stuck on an alien planet and need to get off of it by building a factory which can ultimately produce a spaceship.
I found that the game perfectly captures many aspects of programming. One thing that it made me realize is the clear trade-off of doing something right versus a quick-and-dirty hack to just get some item in my factory on the production line.
I’ve noticed that I’m much more critical when reading code not written by me. I’ll give myself a pass because I had to get this code shipped today, or because I was focused on fixing the real problems. I like writing good code. Not necessarily because it has any concrete, intrinsic value, but because writing good code makes me a programmer. I do think that there are many advantages to my functional, OOP, data-oriented style.
It can be especially crippling when I have a deadline and perception that I’m unable to do things right. It’s oft said that the best is the enemy of the good, and that’s something that I truly struggle with. Why would I do something if I can’t do it my way — if I can’t do it perfectly? Obviously I’d do it because it needs to be done, but that’s not something I get motivation from. That’s not why I’m a programmer. I’m a programmer because I enjoy making things that work, with code that I can take pride in.