views:

424

answers:

14

At another development company I recently saw some project management/workload prioritisation graphs on the wall.

I'm used to the maxim "Good, Fast, Cheap: Pick two". But this system used five indicators. Those I can remember:

  • Bug Free
  • On Time
  • Feature Complete
  • On Budget

But I can't remember the fifth. Anyone?

In this system, the feature requester gave each of the five priorities a 1 - 5 score where 5 meant 'very important' and 1 meant 'not important'. No two priorities could score the same. This works very nicely because if you want it Bug Free and Feature Complete, then On Budget doesn't mean as much to you -- but maybe it means more to you than On Time does.

Once again, what I'm missing is the fifth priority.

+9  A: 

I'd hope that it would be something to do with "maintainable". Otherwise you've got a nice v1 but no indication that you'll ever be able to add a single feature without the whole thing breaking.

Beyond that, there are things like "performant" which may come under "feature complete" depending on whether you count speed as a feature or not. (Some people here at Google have T-shirts with "fast is my favorite feature" on...)

Also things to consider:

  • Well documented (comes under maintainable? I was thinking of developer documentation, but user documentation could come here too)
  • Efficient (not only is it fast enough, but it only needs a ZX Spectrum to serve all web search requests)
  • Secure (doesn't tweet customer's credit card numbers)
  • User-friendly
Jon Skeet
Heh, I don't think that was it as that's a priority internal to the development team rather than the requester :-D
RickMeasham
Really? I've rarely been in the situation where someone gets everything they want in the first released version, and is happy for you to say "the code can never be touched again." It at least *should* be a high priority for the requester.
Jon Skeet
+6  A: 

I'm gonna nominate Extendable. (aka Maintainable, Future-Proofed.)

The reason to say Extendable is that it communicates better to a business owner what they're specifying. When you say Maintainable, it sounds to a non-developer like you're asking them to prioritize how easy it is to top up the gas and change the oil.

chaos
@chaos, thanks for excellent point. Maintainability in software is mostly different from maintainability in other areas of engineering. It involves a much smaller proportion to do with day-to-day chores of keeping code running and more with being able to further extend and modify software design. Thanks again, it's a true gem.
Totophil
A: 

in the lines of jon : scaleable

Peter
A: 

Meets the needs of the user?

Ken
+2  A: 

Does what customer needs, not what he thought he will need.

ya23
Bwahahahah I like it
RickMeasham
A: 

As an alternative:

Efficient

  • No good having feature complete software if it takes forever to do it, or requires some silly hardware....
Ali Parr
+1  A: 

Not sure what a fifth might be, or if it won't be something already implied by one of the "main" four, but there's a nice explanation of those four in Chapter 7 of "Planning Extreme Programming", you can see some of the pages here

Billy
That's a really good write up on those four. Thanks for the reference, I'll certainly use that.
RickMeasham
A: 

I will add "USABLE". Usability is a very important factor that we as programmers tend to forget. A software with good usability reduces a lot of problems in the user's learning curve and is "used" more and faster than other software with the same capabilities but not so good in usability terms.

backslash17
A: 

I think it might be "Well Documented"

Matthew Jones
+4  A: 

There are probably dozens of versions of such a n-branch diagram.

I've seen it as:

  • Bug Free
  • On Time
  • Feature Complete
  • On Budget
  • With an happy team

The wording and emphasis is mine, but basically, the author added the notion that yes, pushing your team to do crazy overtime is part of the things you can sacrifice, but like quality or budget, you end up paying for it in some way.

Kena
Yup, see my answer. The 'happy team' is certainly one of the original, but I don't think it came into the use-case I saw. This was aimed at the requester and was part of the business-analysis with the customer (proxy) who really doesn't care if the dev team was happy (unfortunately)
RickMeasham
Selecting this as the answer, though I'll come back and comment once I have the actual use-case I saw
RickMeasham
+1  A: 

Ahh .. it appears that what I saw was based on Rob Thomsett's "Success Sliders". Though he has seven sliders, what I saw was just five (and it appears that two of the priorities can share the same score):

  1. Making the stakeholders satisfied.
  2. Achieving functional requirements
  3. Meeting budget
  4. Meeting deadlines
  5. Adding value
  6. Ensure a good quality
  7. Making the team members satisfied

I'd argue that 1 is accomplished by the successful completion of 2 - 6. Good quality would be the bug-free priority. So we're left with 'Adding Value' or 'Making the team satisfied'. Neither sounds familiar. I'll have to get back in contact with the company and ask.

RickMeasham
1 is only satisfied by 2-6 IFF the functional spec truly captures the stakeholders' needs.
Robert Gowland
In a waterfall environment, yes. In an agile (or maybe XP) environment, the spec is a malleable collaboration between the stageholders
RickMeasham
A: 

My own list:

  1. Ensure business functionality goals are met.
  2. Strive for modularity and maintainability.
  3. Avoid scope creep.
  4. Maintain good relationship with business analysts and project managers.
  5. Don't burn bridges.

I would add that it should be a priority to find out what each developer's specialties and areas of enjoyment are, and try to accomodate them. Don't give a developer who is a virtuoso with WCF a project involving UI changes, don't give a game developer a SQL datafix project (unless, in either case, they specifically request such of course).

If you are mindful of what your people are good at, based in part on their track record, and assign tasks accordingly, they will do the job with hopefully more effectiveness than someone else for whom the particular task is either unfamiliar or unfavorable territory.

Darth Continent
A: 

Late answer, however I believe there is something to add to the existing replies. I believe that the whole idea of standard one-fits-all prioritisation graph is more than wrong, it's dangerous.

Widely Accepted Project Dimensions

The general agreement within management community seems to be that a project can be sliced into 4 dimensions:

  • scope
  • time
  • cost
  • quality

Things start getting fuzzy when you either try to further subdivide these dimensions, measure them, or look on the way they affect each other to come up with a prioritisation.

Interdependency

In software usually scope means functional requirements (what software does and also what it is not supposed to do) plus any auxiliary requirements necessary to complete the delivery of the software to customers. Naturally, scope affects project time, cost and functional and non-functional quality.

Let’s say a business has a fixed window of opportunity to beat competitors or deliver some service and cash in. The time clearly takes priority over scope; parts of the system can be done outside software.

But for rocket engine control software the scope might be non-negotiable, and when it takes priority over time. In a similar vein there are interdependency between all of the dimensions.

Endless Slicing

The dimensions can be sliced further: shorter development time versus less effective and efficient system (time lost in maintenance and usage of the software), smaller development cost versus higher total cost of ownership and reduced lifetime (leading to smaller return on investment), higher versatility of use versus mode difficult to learn.

Quality is probably sliced into further categories the most, many of which involve conflicting choices:

  • Functional:
  • Non-functional:
    • Usability
    • Maintainability and design extendability
    • Performance
    • Operational and environmental
    • Legal (and other standards) compliance
    • Cultural (internationalisation, localisation)
    • Look and feel
    • Security
    • Political

And the process of slicing a piece of software ecosystem into categories can be endless. And there are endless ways to measure a success or failure of a software project too. Including stakeholder satisfaction, where development team actually also has a stake in the project and hence their satisfaction matters.

Simplification is Harmful

Software design comes as a result of a series of trade-off between these categories. And as it is with cooking a good meal there are endless ways of combining ingredients, depending on circumstances, customer request, allergies and ingredient availability.

It’s probably best to avoid simplification by putting a poster on a wall where Cost always takes priority over Scope, or Maintainability is more important than Look and Feel. Project manager’s job is to keep in mind the whole picture and give team members guidance on making the prioritisation decisions daily, based on the circumstances.

A PM cannot be replaced by a graph on a wall, nor should a good PM try to outsource the essence of her or his job to a piece of paper.

Totophil
You seem to have missed the description in the original question. These priorities are set for each-and-every project. And changing them daily would be hugely counter-productive. Imagine: Today we want every feature to be done, and being on time is less of a worry. Tomorrow it has to be on time and bug free, but feel free to leave out some of the funtionality. The day after that, it has to come in on budget no matter the features, bugs or time. You just can't change these priorities as you go.
RickMeasham
RickMeasham, I'm sorry if I've missed the description of the original quesiton, but as of 3rd of July 2009 it still doesn't mention having a separate set of priorities for each and every project. Probably the essence of my response is that software quality doesn't boil down to just "bug-free", nor does scope just to features.
Totophil
Any project is a living thing and the day-to-day priorities for individual tasks will differ significantly from the project wide priorities.
Totophil
A: 

As promised, here's the list I had originally seen:

  • Feature complete
  • On Time
  • On Budget
  • Bug Free
  • Fit for Purpose

So I was missing 'Fit for Purpose' which is understandable: the difference between that and 'feature complete' is a little tricky to pin down.

Here's an example a friend gave me:

As a simple example, if a customer rates Completeness as high and Fit as low it would mean that they want both an online product catalog and a shopping cart facility, even if both features are very rudimentary. Conversely, if Completeness is low and Fit is high then the customer may accept a fully featured product catalog in the first release and no shopping cart facility.

RickMeasham