When I was in high school reading Franz Kafka’s The Metamorphosis I learned one of the most invaluable lessons of my life; every piece of good writing simply must begin with a well formulated and famously interesting first sentence. There were other themes the teacher wanted to discuss such as transformation and existentialism, but to my young pragmatic (future programmer) mind none of them were as logical as the first sentence rule. I learned this lesson so well that some of my best writing over the next few years was never committed to a page.
Hugh MacLeod suggests in Ignore Everybody: and 39 Other Keys to Creativity that I have created a mental pillar to hide behind which provides opportunity for me to disengage from a creative and possibly productive activity such as writing. He is exactly right.
We create pillars in the software industry all the time because software systems are complex and not predictable and our craft is at its core still a largely creative endeavor. Personal pillars like mine above save us from putting ourselves out there to expose our creative (or lack thereof) inclinations. Organizational pillars such as a policy preventing the use of open source software exist; well I am not sure *why* they exist but they do.
The complexity inherent within any software project leads to one of the most common pillars which I will refer to as requirement explosion; otherwise recognized as the phenomenon that prevents you from finally starting that open source project that you have been thinking about for months because you first need to come up with a project name and a description with which to create your github.com account (or should it be google code or sourceforge?) but before that or at the same time you should have a project website ready that provides your vision for which you will need to acquire a domain name that ideally matches the github.com name (that you haven’t created yet) as well as the visual studio solution name which by the way you probably need to create ASAP so users have something to download once they stumble upon your project. Requirement explosion is paralyzing as we fear starting the first task without fully understanding the necessity and order of all the tasks and thus we do not move forward.
The spirit of this example actually occurs in some form in almost every project and team I have worked on. No matter the level of technical talent, no matter the brute force hours; pillars exist that prevent us from excelling at what we do best; using technology to create value for our users.
Towards this end and in the interest of getting things done I intend to identify pillars created by me and around me and tear them down.
