Creation: An act of sheer will?

Christopher Bazley, December 2018

Screenshot of a map editor program

It would be easy to dismiss as an instance of succumbing to the sunk cost fallacy, but returning to an unfinished software project from 20 years ago is teaching me a lot about myself.

In Jurassic Park, a film that I saw at an impressionable age, the arrogant millionaire dreamer John Hammond says "Creation is an act of sheer will." Like Jay Gatsby, Hammond went from humble beginnings to achieve great things and bring disaster on those he cared about most.

With hindsight, I followed the same philosophy until I nearly failed my University degree, never pausing to 'sharpen my saw' or question how realistic or desirable my objectives were. I wanted it, so I could do it; people who fail should try harder; bugs are caused by sloppy thinking, etc. The arrogance of youth can only take you so far, however, and I now see code I wrote then with different eyes. I could write a whole essay about specific problems I now solve differently but that would be of interest only to a narrow audience.

I find it hard to even describe my old priorities because they are now so alien to me. Portability certainly wasn't a concern: I went out of my way to tie my code to system-specific functionality. I was obsessive about error-handling, writing code to handle errors that could not possibly occur. I read all the machine code produced by the compiler and even wrote some of my own when I wasn't satisfied.

Most importantly, I was wrong about the purpose of programming: It is not an act of willpower in which heroic creators are worshipped and the elaborateness of their creations is admired. It is not even about communicating to machines in their own language.

Programming is an exercise in communication and mastering complexity. As an art-form, its pinnacle is when complex ideas are expressed simply: if someone can't see at a glance what your code does, without reading long explanations or searching for definitions, then your code does not fulfil its primary function. It certainly does not mean you are a genius and they are a n00b or part of some undesirable out-group.

Perhaps I could have understood all of this better if I'd actually studied the code of my programming heroes. Perhaps I'm being too hard on my younger self.

Most of all, I think new programmers need mentors: someone to read their code and provide constructive criticism. I wish I'd had a mentor.