A thought, in response to comments and discussion in various places, sparked by TDD for teams:

In a large software application that is worked on by many (> 2) people, which is more important: “good” design or consistency?

7 thoughts on “Priorities

  1. I once had a developer decide not to work on the codebase that the rest of the team had created because it wasn’t up to his standard, so he created his own separate codebase for his bit of the system.
    Then again, I’ve also worked on consistently difficult codebases. Someone has to non-conform if you want improvement.

  2. Usual caveats about “it depends” etc. but i’ll plump for “good” design.

    Consistency only really adds value in terms of adding clarity. Quality of design has more implications and is probably harder to fix after the fact.

  3. I would have to say consistency. If you get skew then you start to get parts of the code that only certain people will touch and you lose collective code ownership. If you want to change the style of doing things then you do so by persuasion and negotiation, not just change it on a whim.

  4. I’m not sure this is a good question.

    “Good” design is often in the eye of the beholder, it is often a question of the level of experience of the reader. For example, I know C++ programmers who regard template meta-programming as good design but I consider it unmaintainable (by the average C++ programmer). (I cite C++ because this is my old language but the point applies elsewhere too.)

    As for consistency, if “consistency” leads you into repeated poor design decisions (Singleton anyone?) Or prevents experimentation to find better solutions then what is the net value?

    Of course this does leave me open to criticism, I’m not really sure what I would look for in a code base!

  5. Definitely a good design would be more important. A good design will save not only time but also more stable system. Good design will minimize defect escapes to producttion, which helps with cost and maintainability. There are benefits with consistency in being able to maintain the system for long term but detailed design is more important.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s