Building roads versus building skyscrapers
What do you do for a living? If you answered "I am a programmer", or , "I am an application designer" or "I am an IT architect" or "I am an engineer" or "I am a tester" I would reply "Me too." How odd. How can I be all of those things? You are thinking the same thing I suspect. Maybe you too do all of the above too - and more? How odd!
View full article »BONUS LINKS
Build your tech library with our book giveaways.
Windows PowerShell 2.0 Unleashed
By Tyson Kopczynski, Pete Handley, Marco Shaw; Published by Sams
Windows PowerShell Unleashed will not only give you deep mastery over PowerShell but also a greater understanding of the features being introduced in PowerShell 2.0–and show you how to use it to solve your challenges in your production environment. Enter now!

Ubuntu Server Administration
By Michael Jang; Published by McGraw-Hill Osborne Media
Realize a dynamic, stable, and secure Ubuntu Server environment with expert guidance, tips, and techniques from a Linux professional. Ubuntu Server Administration covers every facet of system management -- from users and file systems to performance tuning and troubleshooting. Enter now!









Metaphors between
Metaphors between engineering in its traditional forms and software engineering are often used to argue for or against the maturity of the industry. I agree that we don't have the several hundred years of experience that went into the development of civil engineering practices, and even the civil engineers are occasionally defeated by "the user". The recent levee failures in the USA as a result of flooding weren't engineering failures: the flood levels were simply higher than their design could cope with. The user, presumably, decided that the cost of handling a "hundred-year event" flood too high.Given the parallels and your comments however, I'd be interested to know what you think of the extreme programming "do the simplest thing that could possibly work" mantra and the shunning of "big up-front design". Extreme programming is a way of maintaining forward progress, but it's less likely to result in engineering standards. In short, everyone might end up with their own individual railway gauge. What's your opinion?
PS: Your blog's extraction of a title from the front of a comment isn't terribly meaningful, in preview at least.
Steve, My take on extreme
Steve,My take on extreme programming is that it works best when the participants are the sort of multi-talented folk alluded to in the article. Without the vision that comes with concern for the big picture, extreme programming can be high on activity but low on progress.
Progress requires activity but not all activity leads to progress. Re-factoring is a fantastic tool for keeping code clean and validated as the path to progress is traversed but re-factoring activity of itself, does not guarantee progress.
I once saw a worked example of XP where the author said "every time I do this example, it comes out differently".
The non-determinism of that makes me think "art", not science!
In short, I think XP has some great ideas for making multi-talented developers even more productive. However, in this industry, the bottomless pit of need for multi-talented developers is the key bug that needs to be fixed.
regards,
Sean
I do hope skyscrapers aren't
I do hope skyscrapers aren't loosely coupled Sean!Dave, To heap metaphors on
Dave,To heap metaphors on metaphors : All metaphors collapse under their own weight eventually :-)
Sean
There are dependencies from
There are dependencies from top to bottom.-- snip --
That is fundamentally why motorway building is much more likely to be a "loosely coupled", decomposable activity than skyscraper building.
When it comes to developing large software systems the general architectural (no pun intended ;-) goal is to reduce coupling and dependencies. This is covered in detail by Robert Martin:
http://www.objectmentor.com/resources/articles/granularity.pdf
and on the c2 wiki:
http://c2.com/cgi/wiki?CouplingAndCohesion
Ger, Absolutely. Loose
Ger,Absolutely. Loose coupling is desirable in its many forms. (I like the coupling classification given in http://en.wikipedia.org/wiki/Coupling_(computer_science).)
Just as "low load stress" is desirable is physical construction.
The very concept of a skyscraper - existing in Earth's gravity, possessing mass, vertically arranged - limits the degree to which low load stress can be achieved.
It seems to me that some application domains are similar. The very concept of a WYSIWYG word processor (for example) - limits the degree to which its components can be loosely coupled. Contrast it with, say, web searching (for example) - it is obvious that the spidering action can be comprehensively decoupled from the searching action...
regards,
Sean