I am looking for project management techniques and tools to help with the following situation.
(P.S. I know this question is technically off-topic but I felt Revisiting Tool Recommendation Questions expressed a degree of leeway. I am new to project management. I'm sure the community has a lot of useful advice for me.)
We are doing a software development project for a client which has a fixed budget (about USD 100k) and fixed time (about 6 months). I have a team of developers working on it. The requirements are clear (and I've worked with this client many times before so I don't predict big problems there.)
My question is, how can I keep this project on track in terms of time and budget? (If I go over budget then that'll be very frustrating, despite all the work we're going to put into the project, it would make more sense for me to fire everyone and just sit in Starbucks all day... I really want to avoid that!!)
I'm thinking, you can't change the past, but you can change the future. So I need to keep a track on the costs that have happened, and the predicted costs and effort in the future. And keep a constant eye on whether we're predicted to hit the time and budget constraints, and if not, try to take action. The sooner I know the more chance there is of being able to correct course; if I find out the night before the deadline we're not going to make it, it's too late to correct it.
Here's what I've considered:
Scrum. Dividing the project up into sprints. But, because I know what all the sprints are going to contain ahead of time, it's not really "agile". Is this a good/useful option?
Use a tool such as MS Project Online, LiquidPlanner or similar, to enter all tasks and estimates. Team knows what to do, team updates estimates and tasks as soon as things change. I keep a constant eye on spent budget, predicted budget, predicted delivery date. Which tools should I look at there?
Use an offline tool such as Excel or MS Project (offline). And have weekly status meetings where everyone has to update me. I have the worry that then I'll be a week behind (e.g. I've literally seen such situations; have the meeting Monday morning, on Monday afternoon a big problem is discovered, the plan is out-of-date until the next Monday, a week is lost during which preventive action could be taken). Plus nobody likes those big status meetings. Plus they cost a lot.
Bonus features I'd love:
Handling uncertainty somehow, e.g. a screen in the framework we already know can be predicted reasonably accurately, a piece of research less so. Ideally "min 0.5 days, expected 1 day, max 5 days" or something.
Real world estimates such as "1 day of effort" as opposed to "7 story points"
I don't have to spend ages moving Gantt bar charts around the place. Ideally I say "this takes 1 week of effort, and can't be started before this other task finishes, and this person is on holiday on those weeks" and the tool tells me if it'll be done by the deadline or not.
Dependencies, critical path analysis, so I know which work to look at in case we're not going to meet the deadline.
Display of how long people have got work for e.g. "Bob runs out of work in 2 weeks, Joe in 3 months", so I can decide who should take on new tasks.
"what if analysis" like "if I add another developer to the team, will it help the deadline, assuming we have to train them, and maybe development isn't on the critical path"?
Ideally web based. Not PC/Mac based; so it's cross-platform for my team, and ideally not paper-based to support people who aren't always working from the office.
Generate reports with nice KPIs such as what % of the project we're through to present to the client. (Nice to have)
Tool is not slow and difficult to use and annoying. (Nice to have)
I don't mind about cost, if I can avoid a financial disaster with this project then I'm happy to pay for it!
Thanks to Erik for the question "What kind of action are you going to try and take, if the project has fixed budget, fixed time, and fixed scope?" Here's what I was thinking:
I can ask the client for more time. It might be OK for the client or it might not be but it's worth asking. It's never ideal to ask for more time, but if I have a 6 month project and I ask for 2 extra weeks in the middle, I think it sounds more professional than if I ask for those 2 extra weeks the night before the deadline. And if the client is doing marketing activities based around the deadline, it might really be no problem to postpone them 4 months before the deadline, but be a real problem to postpone them if you let them know a few weeks before the deadline.
I can ask the client for more budget, or to reduce scope. Again, far from ideal! But I've done it, and it does sometimes work. Again, doing it with months still to go allows for a better conversation with the client than the night before the deadline, where some of the features the client might offer to drop have already been developed (so dropping them would now no longer help).
Reduce exploratory work. Maybe the team is spending time exploring new technologies (e.g. new software frameworks or whatever). Such things can help the project, or not, one doesn't know at the start, if they're time they're definitely worth investigating. I can terminate such activity and assert we'll use technologies we already know. (This example comes from my actual experience.)
Potentially put other people on the project, if it's just a question of time and not cost. Always a risky move. But, at least it's an option if there are months still to go. It's not an option if there's only two weeks to go. Better to know about the problem sooner than later.
Discovering risks as soon as possible seems to make sense to me. You're going to make better decisions the more information you have (i.e. it's better to know it's going wrong 2 weeks in, than not to know.)