Have you ever pushed through bad code in the name of a deadline? It’s ok, we all have, which is the reality of life. However, software teams should take extra precautions that this type of attitude doesn’t permeate into the accepted culture. And yes, every software team has a culture, whether they know it or not. Software projects and those involved are in the middle of a battle raging between competing interests, and striking the right balance between these is imperative to success.

The four main competing interests in a software project are:

  • Time
  • Budget
  • Quality
  • Scope

The catch is - you have to prioritized from most important to least important. Every software team should know exactly where they stand on these issues. It’s probably a good idea to nail these down in coordination with the client you’re building the software for. They should have a say in this as well.

Time

This can be somewhat flexible, but can only go so far. How many times will a client be ok with you pushing back a deadline? Not all of us have the luxery of taking all the time we need. Time is generally moderately flexible at best.

Budget

This one is generally even more inflexible than time is. Even more unpleasant than asking for more time, is asking a client or invenstor for more money. We try our best to never have this happen. We can consider budget to be fixed and highly inflexible.

Quality

Jonathon Rasmussen, author of The Agile Samurai says it well:

There are those who believe quality can be sacrificed in the interest of time. They are wrong. Any short-term gain in speed, resulting from a reduction in quality, is a false and temporary illusion. “Uncle” Bob Martins mantra is: The only way to go fast is to go well Quality is often far too flexible in software projects. We should turn quality up to 11 and never comprimise on it. You expect the same from the businesses you patronize don’t you?

Scope

If we can’t comprimise on the prior three, what is left? Scope. A date may be fixed, but a plan is not. If there is too much to do, then do less. This is by far the most flexible and the easiest knob to turn when we’re faced with difficulty completing a high-quality, on-budget, and on-time software project.

In your software team, I encourage you to take a few minutes to discuss which of these you rank in which order. Once as a team you know what you want your culture to look like, you can even use this in your hiring decisions as you seek for candidates which fit into your teams cultural values.

I know for myself quality will always be number one and scope almost always is at the bottom of the heap.

Where do you and your team stand?