Last night I was relating to a fellow software developer the frustration I had been feeling over the last few days during the process of refactoring some code to facilitate fixing a bug. We discussed the inherent complexity of building software and how it is quite unlike a discipline such as civil engineering.
So this morning, as I was waiting for a train and reading the Refactoring section of the classic book "The Pragmatic Programmer" by Andy Hunt and Dave Thomas, it was as if a wave of empathy poured from the following passage:
"Unfortunately, the most common metaphor for software development is building construction...Well, software doesn't quite work that way. Rather than construction, software is more like gardening - it is more organic than concrete. You plant many things in a garden according to an initial plan and conditions. Some thrive, others are destined to end up as compost. You may move plantings relative to each other to take advantage of the interplay of light and shadow, wind and rain. Overgrown plants get split or pruned, and colors that clash may get moved to more aesthetically pleasing locations. You pull weeds, and you fertilize plantings that are in need of some extra help. You constantly monitor the health of the garden, and make adjustments (to the soil, the plants, the layout) as needed.
Business people are comfortable with the metaphor of building construction: it is more scientific than gardening, it's repeatable, there's a rigid reporting hierarchy for management, and so on. But we're not building skyscrapers - we aren't as constrained by the boundaries of physics and the real world.
The gardening metaphor is much closer to the realities of software development. Perhaps a certain routine has grown too large, or is trying to accomplish too much - it needs to be split into two. Things that don't work out as planned need to be weeded or pruned."
It's a very apt metaphor, and one which I'll take with me as I return to my refactoring task today. I think I've finished the splitting and pruning; hopefully it's now just a case of checking the soil and pulling out a few remaining weeds.
Following the news the other day that it was 50 years since SILLIAC was unveiled and 25 years since the IBM PC was launched, today comes the news that the World Wide Web is 15 years old.
To celebrate the web's 15th birthday, this article lists 15 websites that "changed the world". Appropriately, I found this via Slashdot, one of those sites.
Last Friday I arrived home and opened the mail to find an invitation to several events that are being organised to celebrate the 50th anniversary of SILLIAC, the first computer built within an Australian university. What an historic milestone! And one which I feel part of. For it was Sir Adoph Basser who, in 1954, donated the money that enabled SILLIAC to be built. Much laster, in 1980, I began studies in the Basser Department of Computer Science from which Sydney University's current School of IT grew.
Later the same evening I came across a news item on Slashdot alerting me to the fact that it was exactly 25 years since the advent of the IBM PC. More trips down memory lane. I was reminded of a day back in the early 1980s when I was a Trainee Programmer at TNT. Naturally in those days we were programming on an IBM plug-compatible mainframe but the manager, in his wisdom, saw fit to send the whole department on a one day training course about the IBM PC because he was convinced that it had an important future. He was right!
Computing milestones such as these make me wonder what the technological world will be like in the year 2031. With a bit of luck I'll be around to find out.
I'm not quite sure whether to celebrate or panic - my proposal (entitled J2EE and Open Source Innovation: The Relationship between Open Source and Standards) to present at this year's Open Source Developers' Conference in Melbourne has been accepted. Now comes the work of transforming the proposal into a paper and presentation...
Thanks to Alan for encouraging me to submit a proposal.