How do you plan a software project?
I've asked this question before, but what Philo said here really made me think:
How do you plan a software project? How do you estimate how long its going to take, when you already have the specs in hand? Better yet: what do you consider the authoritative book on project management for software?
September 10th, 2006 2:46pm
assuming that it is a large-ish project ...
you have to be able to decompose the system into parts that feel manageable. You need to already have some working prototypes of the harder parts, so you get some understanding of how to hit it.
you need to factor in plenty of time for UI design and testing, and iterations. Also for building the lib components, with good unit tests.
you need to give a *lot* of thought to the order you tackle tasks, and how you prove each component before putting the whole together.
add generous debug, integration and slip time.
finally ... be damn sure you are building the roight thing, do whatever you can to verify that. Amazing how many projects derail just because of this.
that's teh best 5 min answer I can come up with,
September 10th, 2006 3:37pm
Iterative development. Any project can be broken down into smaller deliverables. You track progress by deliverable. Each deliverable is a project unto itself, which you can budget and plan for.
ok, but how do you estimate time when it's iterative?
I normally allow 2/3 major iterations depending on complexity, and hope the rest will get worked out in the cracks ... if it needs more maybe it should be smaller sub projects.
September 10th, 2006 3:43pm
Steel - sounds like Extreme Programming.
September 10th, 2006 4:14pm
My thoughts exactly.
September 10th, 2006 4:15pm
If you mean "Extreme Programming" as "here are a bunch of good ideas - take the bits you like, leave the rest" then yes it is.
But if you mean "Extreme Programming" as "if you leave out any single bit of these concepts, you're betraying the faith" then no, it's not.
...because I'm avoiding pair programming like the plague. :)
I rather liked the whole velocity thing, but that kind of thing would never have flown over at big blue.
September 10th, 2006 4:21pm
Why Philo? What is it about pair programming that you don't like?
September 10th, 2006 4:34pm
I think the concept has merit, but nobody seems to be able to adopt it partially - it's either all or nothing. And I know that sometimes I need to be able to just screw around with code on my own.
I'm also very, very nervous about a not-so-great shop that would pair me with someone I'd have to drag along like an anchor. :)
Depends on if you're starting from scratch, or if there's an existing framework or infrastructure to work from.
September 10th, 2006 5:38pm