Making it right, not just making it work Quality

The 100-Year Software Application

We like to imagine that people appreciate it when we create quality work, and that it'll last for generations. Perhaps that isn't a realistic expectation -- but let's write and test the software as if it will be used for decades.

I expected our friend Jorge to be excited: He’d been hired for a new construction project. New buildings were few and far between in rural Maine, where we lived, and he was a master builder. It sounded like Jorge would have work for several months.

But we saw him a few months later, and he was looking for work again. The new building was already completed.

“It went up in three weeks,” he complained. “It’ll come down in 20 years.”

Most of us care about doing quality work, and we want the things we create to last. But so much of what we’re called upon to build is ephemeral. Nobody expects it to last — whether it’s a new laundromat, or furniture, or a quilt, or software. But most of us wish we could create work that lasts… because that imply it matters, and it makes a difference, and it will be appreciated by the people who use it.

I’m not sure that I expect the quilt I’m working on will be used in 100 years. Lord knows that I’m not good enough at my hobby that it will be considered a valuable antique. However, I’m putting a lot of time and love into this creation. I chose the fabric that I think the recipient will love (every time I see her, she wears these colors); I’ve spent time poring over patterns that might mean something (too bad I can’t find her a Firefly motif…); while I sew, I think about my friend and how much I care about her. I think the recipient will feel the love that is sewed into her quilt, even if she doesn’t know anything about how quilts come to be.

Most serious woodworkers talk about creating “100-year furniture.” You won’t get rich as a custom woodworker, but you can be reasonably sure that the table you built will be used by the grandchildren of the client for whom you build it today.

I like to think that you create software the same way. Yes, you’re irritated when software development takes longer than it ought to — but you’re even more annoyed when it’s rushed and it cannot take as long as it should. Because what we create matters. We want the people who use it to appreciate it, whether the software is used for a month, a year, or a decade.

What’s funny about this is that when it comes to software, nobody expects the code to last, and the time you invested in making it work perfectly and defect-free doesn’t often have a lot of correlation with the value it has to its user. I know one developer who, working at a hotel chain, was teaching himself to use a new database reporting tool. For the exercise after Hello World, he ran a report comparing reservations by Day of The Week. His user happened to see the printout on the desk, got excited, and asked, “Can I see this report every week?”

I tried to think of the code that I’d written (or project in which I’d been involved) that ran the longest. I think the accounting application I custom-wrote for a gourmet market might have run for five years before they upgraded their equipment (and I’d moved cross-country by then). I asked a few other developers: Few have code running in production that’s more than 7 years old.

So let’s do a wider comparison with a poll:


Even if we know that our work won’t last a hundred years.. Somehow, it’s important that we act as though it will.

Share with your friendsJoin and Stay Current with the Community
JOIN RSS
About Esther Schindler

Esther Schindler is the editorial director of Software Quality Connection.

Esther has been writing about technology subjects since 1992. She has focused on software development topics for the last several years, with her byline appearing in CIO.com, ITWorld.com, Software Test & Performance, SD Times, Informit.com, IT Business Network, and DevSource.com.

She is also a well-known chocoholic.

You should follow her on Twitter and circle her on Google+.

  • Ole Bulbuk

    Dear Esther,

    thanks alot for your nice article.
    But I think you are missing an important point:
    Most custumers would like to use a software for 100 years.
    Their domain and needs don’t change quickly.
    It is only the rapid change in technology that forces them to shut down an ‘old’ software.
    I am quite sure your 7 year old accounting application has been replaced by another accounting application that is doing almost the same thing.

    They could save lots of money and headaches if they really had a 100-year software.
    I personally think it is possible to build a software for technical changes.
    So the 100-year software should be really possible.

    The main thing to use is protocolls as they can be implemented with an old and a new technology at the same time.
    RESTful web services are a good example.
    Then you can migrate your application step by step from one technology stack to another.
    You might even be able to reuse most of the business logik.

    Best regards

    Ole

  • http://theprogrammersparadox.blogspot.com Paul W. Homer

    I’ve gotten several systems past the ten year mark, but many more failed along the way.

    For one piece of software I wrote just out of school, they called me in a panic ten years later because they were porting it to new hardware and something wasn’t working. It was vital system and would have generated negative publicity if it failed. I took a few days off to save their bacon (and the problem was I had been sloppy …)

    Now if you consider the older COBOL and mainframe systems, a whole lot of them have code that is decades old: 2, 3 and probably even 4. It’s only the modern stuff created in the last couple of decades that is hastily written and disposable …

    I figure 20 years is a reasonable goal, particularly if it took years to get the code stabilized.

    Paul.

  • http://softwarequalityconnection.com Alex Forbes

    I think about the old green screeners (AS/400 guys) and their pains in moving to more modern web-based systems. Hats off “Marty” if you’re reading this. ;)

  • http://theprogrammersparadox.blogspot.com Paul W. Homer

     There are actually several different ways to create web fronts for AS/400 systems. I briefly worked on one, which was OK (not great, not bad, usable). It allowed you to ‘enhance’ the interface, if you’re willing to put in the time and effort.

  • http://twitter.com/dbavedb David Klassen

    s/w can only last as long and rich, as the ideas behind it. it sometimes has nothing to do with intentions, but everything to do with setting. as a programmer I have about as much control over this, as I have the ability to point and choose what type of work I plan to perform. to be involved in a work that lasts a long time, I think is a matter of luck or choice. however if what you create is relatively bad, everyone complains about it, but everyone still uses it, while hard to compare it to a quilt I guess you might say its definitely had human exposure. the value behind the work and the judgements concerning, that is highly narrative based, assuming humans are in the assessment at all. I can compare video games to art, and yes mainframe systems to actual buildings, but what is it I am looking for in a piece of software? I like that question, and I don’t know the answer. So far it is not a quilt to wrap around me on a cold snowy night next to a fire, but what if it could be? Does it matter?

blog comments powered by Disqus