It’s very hard to explain to non-coders how artistic coding really is. People who use software are constantly complaining about usability issues, but when they think about the code behind the software they think “it either works or it doesn’t.” That is not how coders think of coding, and the process of coding isn’t mostly about writing code that runs. Building software is mostly two things:
1. Staring at a blank screen with a goal in mind, such as “I need something that accomplishes x goal” and determining the best strategy to accomplish the goal
2. Looking at something that already accomplishes a goal and determining how to accomplish the goal better.
The more experienced you are as a programmer, the more of your time is spent on those two things and the less that is spent on actually writing code. And in this way, it is almost exactly like writing prose or poetry. Great writers are really great at going from nothing to something in a way that makes sense and then taking that something and distilling it into its most elegant and clear form. Great writing isn’t the writing that uses the most obscure wording, it’s writing that keeps a coherent structure and conveys its message effortlessly in the readers mind. When a writer can’t conceive of how to do one of those two things, it is called writer’s block.
And this is where coder’s block comes from.
Coders block is when you’re staring at a cluttered homepage for your company and stop being able to conceive of how to make it simpler. When you have a five click application that needs to be two. A database that is running too slow, but a faster structure simply aludes you. You stare at your screen, you’re willing to work, but there’s nothing you can do: you’ve got coder’s block.
Interestingly enough, the way I combat coder’s block is by writing, and the way I combat writer’s block is by coding. Despite their processes being so similar, their implementations live in different worlds and speak different languages. When I’ve been writing code, all of a sudden writing in my native tongue feels easier. When writing elegantly becomes too difficult, solving a purely technical problem that actually has a solution (debugging) feels like a breathe of fresh air.
And the point of all of this is…… crap, now I’ve got writer’s block, off to write some code!