22 January 2013

Silver bullet

When I'm truly happy at my work I find my self often thinking about the truth behind software development. I keep finding and formulating maxims to describe various states of my art. I like that.
I think myself as a philosopher of software engineering - looking for the truth in a methaphisical world of ideas and shapes.
I like working with people. But I'm not a social person. I prefer a quiet morning camomilla tea with a book in the office caffeteria then being outside and shooting breeze with my colleagues. Thus I find my self at a crossroad when I try to figure out my self in relation to my job.
My job has two dimensions.
One is a dimension of people and emotion, of tought and word, of smell and touch of ideas and egos. A world of chaos and entropy populated with - well, us humans or developers, IT people and managers all struggling like primordial cells to create something greater something in the face of constant enthropy.
The other is a world of clear shapes and vectors and models and pure crystalline tought. A world of boxes, layers hexagons and numerical formulas given shape inside our collective hallucinations, out matrix, of the systems we are trying to build, to document to give shape.
What am I? What do I actually do.
Nothing.
I just talk to people all day. I write documents all day. I draw diagrams all day. I write code all day. I dream stuff all day. I'm Ada Lovelace's son. A software engineer.
The truth is that I'm not really sure what I am. I think I'm searching for the truth. A unique way of developing software, the ultimate architecture - our silver bullet.
Brooks said that there are not silver bullets, there is not a perfect solution which will work for every project. I know that. I belive that. But still I carry withing me a germ which tells me to keep looking, to keep working on the perfect ultimate architecture.The perfect way of constructing software.
With people.
Software is all about people. In order to build the perfect architecture I need people. At least I need my self. And I'm not perfect. I go hungry.I get sloppy. I forget. I make mistake. I swallow the shame of dirty code and make out stories of better futures to hide out my mistakes from the dream of perfect ideas I constantly have.
Code is dirty. C-O-D-E is a four letter world. Code is not perfect, code is limited. You cannot represent the metaphysical with words and numbers. You can only try and fail. It is why so many of us quickly forget our past projects and greedily go to our next adventure. Next time will be better. But it never is.
I keep missing something in this mix of juices and ideas that we call software engineering. A deep idea, a connecting string. The ultimate truth.
A silver bullet. The all god spark which will give meaning too all there is and ever will be. From the first loop that counts time written ages ago to the modern fast growing, ultra delivering  systems of modern ages. Did developers of old knew something we didn't. Was software better in those days, more pure or was it always the same low level struggle from near emptiness to almost complacent skillfulness.
Code is like love, it is like work. A four letter word. It catches you and carries you unaware, you want it, you need it, you dream it and then you want nothing more then to run from it like the yesterdays girlfriend you are ashamed to wake up beside in the morning.
But like the proverbial secure bond of a known partner we come back to it and try to fail building perfect hallucinations of perfects forms with stone age tools and human minds.
What about God? Is he mad at us for dreaming new worlds, trying be like him. Like a Creator? Maybe we are just cursed, never destined to succeed. Always trying, always failing our sweet silver bullet always around the next corner. Oh, how I search for it so.