Building roads versus building skyscrapers

By Sean McGrath  9 comments

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 do all of the above too - and more? How odd!

Imagine a similar conversation in the road construction industry. I ask "Hello, what do you do?" and you reply "I am the architect, and the designer, oh and I decide on all the materials and um, I build chunks of the road myself and then do all the testing." How distinctly odd that would be.

I have been noodling the whys and wherefores of this. It would be easy to discount the whole thing as a simple consequence of the relative youth of computing. One day, perhaps, building software will be broken down along the same lines as any other industrial scale engineering project. Designers will design and architects will architect and builders will build and it will all be happily, cleanly segmented.

I don't think so. At least not if continue on our current trajectory. Here is how I have tried to explain the core of the problem to myself . . .

Imagine building a road. In the physical world I can pour concrete and put up fences and lay asphalt bit by bit, mile by mile. As long as there is an overall plan in place, it's all good. This mile of road is very much the same as the next mile of road. All we need to do is make sure they are all joined up.

In the software world however, I cannot write functions and create modules and design screens bit by bit, mile-of-code by mile-of-code. Every line, every dialog box every data item, needs to be considered in terms of the overall project. Otherwise, there is no way I will end up with something that scales, that is easily modified, that has 5-nines availability etc. etc. There is an uncomfortably high degree of design smarts and architecture smarts required all the way down to the code cutting itself.

Coding is coding but coding done well is also design and also architecture and also fault tolerance and also testing . . .

How odd.

I think I have a better metaphor. Also from the construction world. Software design is like building a skyscraper. Every bolt, every block needs to be put in place from the bottom up with a view to withstanding load that does not exist yet. Every part is built on every other part. Dependencies exist all the way down to the ground. You cannot just knock down a wall or build on extra rooms as it suits you. You need to wonder what impact every bit of the skyscraper has on every other bit. There are dependencies from top to bottom.

In the construction industry, the main enemy is gravity. Gravity comes already load-balanced for you by mother nature. If you build sideways load (gravity) is distributed. However, if you build upwards it is not distributed at all. In the vertical, you need to give gravity your full attention always. That is fundamentally why motorway building is much more likely to be a "loosely coupled", decomposable activity than skyscraper building.

The software application equivalent of gravity is users. At Internet scale, the load on your application is like a mile high skyscraper - and your application is the foundations and the bottom floor. Every nail, every joint needs to be "programmed" to support the load above.

Software development happens in the foundations and on the first floor of the skyscraper. Even the humbler coders in the corner have to be thinking "one-mile-high". Otherwise your application is dust.

I don't see this changing until such time as coding has built-in insurances for all the "ilities" that distinguish an outhouse from a mile-high sky scraper. We need to find a way to cut programmers loose without them (or you) having to worry about all the "ilities" - without which the code will not stand.

We have a long way to go. Till then, the good programmers will be - unavoidably - part programmer, part designer, part architect, part tester.

9 comments

    Anonymous 1 year ago

    Christian Louboutin shoes are very popular among fashionable ladies and young girls, frot its character of elegance and noblity. So do the Herge Leger Dresses. This is why many girls like wearing the shoes going with the dress. Many young ladies are accustomed to dress themselves sitting in front of the mirror and decide whether they should wear Links of London or American stylish Tiffany Jewelry. When they fournd it is snowing outside and they will surely want to protect their feet to wear UGG Boots and select MBT Shoes for their husbands who are watching some attractive films from Wholesale DVD shelf. Referring to the gender difference, brave gentlemen will take the Vibram Five Fingers Shoes with them and explore a chance for adventure. Life is so colorful with all sorts of products we can offter, do you agree with me? Christian Louboutin Sale Christian Louboutin Sale Christian Louboutin Discount Christian Louboutin Discount Christian Louboutin Boots Christian Louboutin Boots Christian Louboutin Sandals Christian Louboutin Sandals Christian Louboutin Pumps Christian Louboutin Pumps Christian Louboutin Knockoffs Christian Louboutin Knockoffs DVD Sale DVD Sale Ugg Boots On Sale Ugg Boots On Sale MBT Chapa Shoes MBT Chapa Shoes MBT M.Walk Shoes MBT M.Walk Shoes MBT Lami Shoes MBT Lami Shoes MBT Sport Shoes MBT Sport Shoes Christian Louboutin Christian Louboutin Nike Shoes Nike Shoes af clothes af clothes

    Anonymous 2 years ago
    Winter is coming, you and your families still have no ugg boots? Just a problem, Sheepskin boots like ugg classic tall boots is the necessity in the cold witer. Especially in the snow space, ugg classic short boots will keep you warm and safe. At the same time, somebody may say, all of the ugg snow boots, the ugg classic cardy bootsis the best choice. Some online stores also sell these ugg boots at low price, so come on now.
    Anonymous 2 years ago
    When you start dog training, you need know how to train a puppy can use dog behavior training and dog training tips.
    Sean McGrath
    Sean McGrath 3 years ago
    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
    Anonymous 3 years ago
    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.pdfand on the c2 wiki:http://c2.com/cgi/wiki?CouplingAndCohesion
    Anonymous 3 years ago
    I do hope skyscrapers aren't loosely coupled Sean!
    Anonymous 3 years ago
    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.
    Sean McGrath
    Sean McGrath 3 years ago in reply to Anonymous
    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

      Add a comment

      Post a comment using one of these accounts
      Or join now
      At least 6 characters

      Note: Comment will appear soon after you have activated your account.
      Obscene/spam comments will be removed and accounts suspended.
      The information you submit is subject to our Privacy Policy and Terms of Service.

      ITworld LIVE

      DevelopmentWhite Papers & Webcasts

      White Paper

      HP NonStop SQL Fundamentals whitepaper

      This whitepaper offers a detailed look into the fundamentals of HP NonStop SQL solutions. See how this system delivers unprecedented levels of application availability with fail-safe data integrity and meets the needs of enterprises with large-scale business critical applications.

      White Paper

      Nebraska Medical Center case study

      See how the Nebraska Medical Center implemented a SQL solution to make information more readily available to streamline operations, improve patient care and facilitate medical research with an enterprise solution running on HP NonStop servers.

      White Paper

      Concepts of NonStop SQL/MX

      For DBAs and developers who are familiar with Oracle solutions and want to learn about NonStop SQL/MX, this whitepaper provides an overview of the similarities and differences between the two products-with a specific focus on implementation.

      White Paper

      6 Things Your CIO Needs to Know About Requirements

      If your organization is not predictably successful on technology projects, there is likely an issue in requirements. CIOs must take action and own requirements maturity improvement. There are 6 main things a CIO must know about requirements.

      Webcast On Demand

      User Experience Monitoring

      In this webinar, you will learn hints & tips for improving end-user response times from Forrester Research analyst, Jean-Pierre Garbani.

      Sponsor: Nimsoft

      See more White Papers | Webcasts

      Ask a question

      Ask a Question