Development Priorities

When it comes to developing software, there are always trade-offs. Do we want to release the product faster and risk more bugs, or slower with less bugs? Do we want to provide customers with the features they want – or just with basic functionality but more robust. This comes down to what importance we place on the following objectives (suggested by Steve McConnell).

  • Minimal defects (defects=bugs, not missing or incomplete features)
  • Maximum user satisfaction (providing all of the features they want in an easy to use way)
  • Minimal response time (ie fixing bugs and getting new features developed faster)
  • Good maintainability (low risk of breaking stuff when making changes, the ability to make changes faster and introduce new developers faster)
  • Good extendability (making software soft – ie basing core business functionality on a rules engine, or basing the UI on a forms engine)
  • High robustness (no crashing, no loosing data, good performance, you trust it)
  • High correctness (the lack of missing or incomplete features – getting your requirements right in the first place so you build the right thing)

While some of these go together, most of them are trade-offs and its an interesting exercise to get everyone in your company to rank these from 1 to 7. Because they all trade-off – you can’t put any at equal priority and whatever you put at priority 2 – you are saying should be sacrificed where necessary to achieve priority 1, and priority 3 should be sacrificed where necessary to achieve priority 2, etc.

How you rank these will be specific to the priorities and values of your company – but also to the specific product you are working on.

Currently – not taking into account any specific products, my priorities are in this order:

  1. High correctness
  2. Good maintainability
  3. Good extendability
  4. High robustness
  5. Maximum user satisfaction
  6. Minimal defects
  7. Minimal response time

By first focusing on your business and user requirements, architecting for extendability and coding for maintainability – you can give your product a strong base – and then almost forget these aspects and focus on robustness and user satisfaction.

One Response to “Development Priorities”

  1. Are dynamic languages the next best thing? « Business Savvy Software Says:

    [...] and IronRuby are that they give you fast results now, but at the cost of maintainability later (since everything’s a tradeoff). But, maybe maintainability doesn’t matter so much, because its faster to just re-write [...]

Leave a Reply