- 1. Search for a Wizard
- 2. Under Estimate the Project
- 3. Boil the Ocean
- 4. Get Complicated
- 5. Assemble External Dependencies
- 6. Waterfall, it Worked Before
- 7. No One can Predict the Weather
- 8. IT Chicken
- 9. Now the External Dependencies come in Handy
- 10. Reward Heroics, Look Busy
- 11. Throw Meat at the Problem
- 12. Re-define Success
- 13. Self Congratulation
- 14. Rinse, Repeat
This isn't aimed at any specific organization, I've seen it over and over many times. It seems to be a recipe for individual success and organizational dysfunction.
The project is your ticket to success. It's the meat and potatoes of software development. I'll be talking about a project and how to do it such that you end up with accolades, more people reporting to you and employees with arms full of great job! trinkets. Pretty soon they'll think you're ready for more responsibilities since you have so many code slingers working for you and you're guys are always busy.
1. Search for a Wizard
You're gonna need someone to champion. This is a blue sky guy. He's talking about gravity boots, asparagus that tastes like peaches, IP enabled refrigerators, you name it. He's gotta have the ear of upper management. He is going to sell this stuff, he'll get funding and without him you can't even start.
It doesn't matter what the wizard is focused on. He may have read about the newest acronym in CIO magazine or he might have numbers that say if we get into this market we can print our own money. Don't be the loudest voice in support of him because he's a dead man walking when this project is over.
When the dust settles he may be sacrificed. Even if the project is declared a success he may have to be let go for squandering millions of dollars.
2. Under Estimate the Project
In order to even get the green light you're going to have to under estimate the project. Go ahead and do it, you'll cover your ass in the future.
3. Boil the Ocean
Whatever feature it is, you need it. The wizard is great for this. The gravity boots gotta have fuzzy dice or we have absolutely no offer. We won't be able to compete in 2 years because our competitors will have gravity boots with even better fuzzy dice. We gotta have it.
Sure, he's crazy but you let him do it. Turn into a crack head for scope; keep adding it on wherever you can. Don't do incremental releases, this is gonna ship in a huge big bang.
4. Get Complicated
Okay, you've got a huge scope. Now is the time to go through the acronyms. XML, check. ESB, check. You get the idea. Make sure you're using technology you've never used before. The audacious troops will love you for pumping up their resume.
5. Assemble External Dependencies
This is one of the most important steps. You are going to need someone to blame when things fall apart. You need this part, without it crap is gonna start sticking to you.
So whether or not you need it, you gotta find stuff to be dependent on. Maybe it could be software (open source or otherwise), outside teams or even a current team member you're willing to throw under the bus.
Ideally you'd find external dependencies that are on shaky ground but haven't imploded quite yet. Under the weight of your requirements they will be shown as the tragic failure they are. But not yet, you still need a glimmer of hope.
6. Waterfall, it Worked Before
The problem with an agile, iterative mindset is that if it's done right everyone will become aware of problems before you get a chance to actually grow your empire. This isn't what we want.
Show management a plan. You know what every developer is doing every day, you know that when they finish their task then someone else will start working on another task. You've got great detail and everyone is confident.
So we go waterfall. Weeks before handing off, the weather will turn...
7. No One can Predict the Weather
Who knew, the technology didn't come through. We chose an architecture that the consultants advised. We used tools that they recommended but still, we're slipping dates. Who knew.
It's got nothing to do with our huge scope, questionable technology and ego driven architecture.
8. IT Chicken
If your house is in bad shape you tell no one. Your status is green. Any day now some other peer system or component you depend on is gonna have to report that they're slipping dates. Perfect, you can join in blaming them and you get some wiggle room.
9. Now the External Dependencies come in Handy
The blame game begins. Oh, you'd be on time if it wasn't for the hirlzywhig team. They were supposed to fabricate the fuzzy dice for the gravity boots. Your guys have anti-gravity figured out but you haven't been able to get a set of fuzzy dice to meet requirements for 6 months.
10. Reward Heroics, Look Busy
Start the daily meeting, everyone has got to be there. What else jump starts a project by having everyone involved idle for an hour each and every day. But you're doing something so that's good.
If you have guys staying late, reward them in front of everyone. CC VPs, let them all now that you have the management skill to really put a candle under their ass.
11. Throw Meat at the Problem
This is also part of looking busy. This is where your skill pays off; you get more bodies. Surely if the existing team can't meet the deadline, they could easily do it with 30% more people. The Mythical Man Month is a bunch of ivory tower hooey anyways. So you petition upper management for more bodies. Because your stalling techniques and the amount of funding the wizard was able to secure, they have to go all in. Don't even think of skipping this step, if you don't get more bodies than everything else has been a waste. This is your real goal, forget creating pragmatic business solutions.
12. Re-define Success
Alright, you've made sure that you're out of the line of fire but you're still not going to accomplish what you promised. This is where you re-define success. Sure we're not going to meet all the function points but you have to get something out there. Maybe that something is irrelevant, maybe it'll never sell. Who cares, no one could have predicted the hurdles you and your team have encountered.
13. Self Congratulation
Have a celebration, your guys deserve it. If anyone has any doubt about whether or not your team achieved success they'll be stifled when they find out you had a party.
14. Rinse, Repeat
Time to reflect, your company has an ill-conceived, overly complicated piping hot mass of cyclomatic complexity while you have an expanded empire. Sell all the stock you can, keep cashing your pay check and do it all over again.
This originally appeared as a blog entry.