Managing Complexity: Organic Growth in Artificial Systems
Amazing app called Wordle… created using the words from this blog post.
As terrible and cheesy as it is to start a post this way, I have to admit that I have not exactly been the paragon blogger I once thought I would be. It has been months since my last post.
At any rate, I have a pretty good reason. I have been overworked! However it has been good work… really good work.
As of right now I’m juggling a couple of projects, (three ActionScript projects and an html/css/javascript/php/cms one). It’s been extremely challenging finding ways not to loose my head, and to be honest I think I have a couple times.
On an easy day I’m working nearly 12 hours, and I haven’t taken a complete day off since Christmas, which I almost completely worked through. Before that it was the same pattern.
The great thing about all of this, is that I am starting to reach the light at the end of the tunnel (or the end of my rope depending on which way you look at it), and by that I mean light in two very distinct ways.
ONE: I’ve resolved to myself that I will not be taking on any more freelance work. This is mostly due to financial comfort, but also because I am pretty much sick of not having spare time to myself and my family. However, I still have two very time consuming projects to contend with, and god knows how long it will take for those to tail off. Either way… no new work. (Except for personal stuff of course)
TWO: I am starting to grasp the concept of Managing Complexity. Right now I am engrossed in a very compelling programming book by Steve McConnell called Code Complete – incredibly well written, with a loose, clean-flowing and imperative tone.
He’s a hard man to argue with, and already I’m seeing increases in my productivity and general comprehension. Not only am I producing better code faster, this book also seems to give me a more confident mindset in tackling projects of increased complexity and ambiguity.
The theme consuming my thoughts right now (and there are many themes in this book) is the idea of handling complex systems. McConnell reports some sensible tricks, but more so, these ideas are evolving in my mind into something closer to a philosophy.
I used to believe that programming was very similar to writing when I first started this gig, and there is a good reason for that. Writers who take the trade seriously know inherently that pieces are never really finished, only in stages of development. The whole system becomes perplexed, and mind numbingly interesting when you start to place deadlines and time constraints on this idea. Certainly you can finish a story nice and neat, as you can bring any program to a usable completion. But often the real love for the construction of these ideas and systems come in the incremental improvements over time. The reworking of a sentence, paragraph or theme, routine, Abstract Data Type or Architecture is the real life blood of a craftsman’s genius.
It is the desire for perfection, for perfect creation, and this is what can make code beautiful and artistic.
This is one point where I tend to have a slight disagreement with McConnell. He attempts to defunct Andy Hunt and Dave Thomas’ metaphor for programming as tending a garden. His point is not lost.. certainly you can take any metaphor too far, including software as the construction of a building which he prefers. However, as I delve deeper into his excellent explanation of software construction, a certain feeling of organic growth permeates.
Systems become better as you tend to them, and slowly and patiently improve their path to realization and the program’s future beyond. There certainly is no one way of programming, but the incremental, patient artisan hand, gently forming and breathing life into a vision is the sane loving approach I most agree with. This is not unlike a master gardener, painter, sculptutre or any other master craft one can bring to mind.
In this sense, prgramming can be, for those who wish, a way of life. Certainly for me, I am taking the lessons learning in cultivating my art, and applying them to other areas of my life.

