How to create a maintainable system

Ayende had an interesting post on his blog today about the only metric that really counts, which is maintainability. He made a joke about measuring this property of a system by measuring the intensity of groans that emanate from the team when asked to changed something, which made me laugh.

It did bring up a more significant question in my mind, one that I’ve thought about before, and something that I’ve been telling my TDD classes lately. The question always comes up in class about why we just don’t design our systems right in the first place, for some value of right. There are several parts to my answer, but one of them is always that we build our systems simply and change them as we need to so that we can practice changing our systems for our big moment. That big moment happens when the customer comes in and tells us that he really, really, really needs this new feature, and he needs it by next Thursday.

If we had never practiced changing our system, and had never considered changing our system, then this might be a pretty scary thing. But if you build your system such that you practice changing it in new and interesting ways from the first day, when that change request comes in, you yawn and make the change.

In short, you get a maintainable system by practicing maintenance from the first day.

— bab

64 thoughts to “How to create a maintainable system”

  1. A project manager once asked, in frustration, "When will the users stop asking for changes to the system?"

    (…so that it could be considered "done.")

    I answered, "When they stop using it."

    When a system is dead, as in no one is using it, then no one will ask for enhancements to make it better meet their needs. But in my experience, regular use of a useful system will inspire most people to think of ways to improve it, to better aid them in their efforts.

    It’s not possible to know all the requirements up front: Implementing the system will change the requirements. Normal changes in the business over time will change the requirements. So there may be no one perfect design that will meet all known and unknown present and future requirement changes of a successful system.

  2. Thankss you..

    <a href=";“>;“>;“>; title="sohbet" target="_blank">Sohbet</a>

    <a href=";“>;“>;“>; title="chat" target="_blank">Chat</a>

    <a href="; title="akyazi" target="_blank">Akyazi</a>

    <a href=";“>; title="sohbet" target="_blank">sohbet</a>

    <a href=";“>; title="chat, sohbet" target="_blank">Chat</a>

    <a href=";“>;“>;“>; title="maynet, maynet sohbet" target="_blank">Maynet</a>

    <a href="http://www.baksen&quot; title="mynet" target="_blank">Mynet</a>

    <a href="; title="güzel sözler, guzel sozler" target="_blank">Güzel Sözler</a>

  3. <a href="; target="_blank" title="resimler">Resimler</a>

    <a href="; target="_blank" title="resimler">Resimler</a>

    <a href="; target="_blank" title="tokat yesilyurt">tokat yesilyurt</a>

    <a href="; target="_blank" title="güzel resimler">Güzel Resimler</a>

    <a href="; target="_blank" title="Oyun Oyna">Oyun Oyna</a>

Leave a Reply to kameral? sohbet Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.