How to Deliver Software on Tight Deadlines
Success comes from a flexible plan guided by a great structure.
Quick reaction to change require crystal clear rules.
Here's what I learned while delivering software for AAA games on very tight deadlines:
First the things to be flexible on:
when to release,
what to cut and keep,
who does what,
and how people work.
Let's take them one by one:
Be flexible on when to release.
Talk to stakeholders. They might very well rather wait than see their favorite feature cut from the release.
Predictability is key when delivering to other teams. They might not be ready for what you deliver or have prepared for what you cut.
Be flexible on what you keep and what you cut.
Not all features are as important. Focus on delivering the high priority items. The lower priority stuff might not be needed at all.
Cut features early to get the most out of it. Late cuts don't help.
Again, talk to stakeholders.
Be flexible on who does what.
The team member who started a task might not have time to finish it.
Make sure tools make it easy to share in-progress work.
Don't have incentives to hoard tasks for finishing oneself.
Be flexible on how people work.
Let people work their way, use whatever tools they like, and work early or late in the day or whatever fits their schedule.
Sure, someone could do something stupid but don't make rules to prevent the exceptions. Trust people.
Now onto things to make crystal clear:
where to view the project plan,
how to add new work,
the current goals,
and how you prioritize.
Let's dive deper below:
Make it crystal clear how to view the project plan.
Everyone benefits from an overview.
Have one URL anyone can visit to see an understandable overview of the plan.
Planning is much easier when everyone is on the same page.
Bonus points if important work stands out visually.
Make it crystal clear how to add new work.
Anyone should be able to add tasks.
Sub-tasks to their own work, bugs found, feature requests, or capture great new ideas.
This should be easy to do without making the plan a mess or feeling like you might break something.
Make it crystal clear what the current goals are.
I mean statements to the team such as:
"Landing this release on time is our highest priority right now."
"This bug must be fixed first because it's blocking that key stakeholder."
"We'll do that only if we have extra time."
Make it crystal clear how work is prioritized.
This teaches everyone what to expect and to make similar decisions themselves.
Disagreements are undramatic when priority is backed up by motivations and also easier to discuss to change when the reasons are clearly stated.
Bonus: Create a release checklist.
Keep a list of all the things you do to release.
Can be package the code, build it, upload somewhere, write release emails (with prepared templates!), and so on.
A checklist makes this easy for anyone to pick up.
Those are some of the things I've learned while delivering software in AAA games on tight deadlines.
What are your tips for effective and nimble software projects?