It's Hard to Ship
I write code for a living. I enjoy doing it, and find a great deal of satisfaction in the process.
Part of my job is also writing test cases, documentation, and Puppet manifests. If your job is writing code, it likely follows similar lines. Code is only the first step; Done is when it’s documented, tested and shipped.
Writing code is Easy. Being Done is much harder.
I love writing code; most days I end up writing code in the evening as a way of relaxing, playing with new ideas in computer science, exploring metaprogramming and software architecture. Trying new tools.
I end up starting any number of new projects; my
~/src directory is full of ideas. I learn from them, enjoy doing them, always end up beating myself up when I get bored.
Phrases like “I should be working on this,” or “I’m horrible for letting that stagnate” form the backbone of my self-inflicted guilt. I stop enjoying the project, let it slide.
I still want to code, which leaves me starting new project, repeating the cycle.
Tech has a culture of toxicity around achievement; we push the dream of being the next Facebook, Google, or some Big Thing. To always strive harder, do more, be more.
If you’re not, the narrative asks, are you really good enough? That question fed my impostor syndrome, drove guilt deep into my heart. The guilt was blinding; I was so caught up in feeling bad, I wasn’t able to see why my projects stalled.
I wasn’t good enough; being good enough means staying up later, writing more code. Being good enough means releasing and having websites, not intentions and ideas. Being good enough means coding every minute, regardless of tiredness.
Being good enough means, at the very least, open-sourcing and letting others benefit.
I shied away; I couldn’t be that definition of “good enough,” couldn’t escape my own guilt.
The Conscious Choice
In my copious1 spare time I’m also working on an Android app. It’s not a complicated app, it won’t become the next Google or Facebook. It may not even make enough money to cover the time I’ve spent making it, or the servers that run it.
It scratches an itch, and I have the ability and passion to pursue it. It is a choice, after all, to dedicate my free time to development, accepting the difficulty of preparing software for use by others. It won’t be big or important. Whipping myself with shoulds of working harder won’t make it important. It will just make me bitter.
It reminds me that very few people get to make the next Big Thing, that the combination of raw luck, privilege, and public awareness that makes a product a hit isn’t some magic formula.
Once I started to understand the hostility of the narrative, I was able to start to enjoy my own programming again; test new ideas, experiment with new skills, interfaces and concepts. I could watch TV, read, or play videogames without every minute adding to an unbearable weight of guilt.
I could want to release projects, to put something out for the world to see and use and respond to; not want to by the same measure. I could know that yes, I want to release this project, want it to be to the standard of Done, and shipped, and find that relaxing, fun, and playful. It’s my choice to do it, the pleasure of my time.
Moving forwards for myself. Making my own choices.
It’s not copious.↩