(Taken from my blog for my company Shockoe.com)
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 eludes 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!