My opinions on project planning.
Short and Sweet
- define a project (the smaller the better)
- define how you measure success
- task the project in small, logical steps to execution
- execute those steps
1. Defining a Project
Only 1 / 3rd of customer facing projects have the desired effect. Many end up not moving any KPI toward a positive direction, and that means wasted work. Thus, if there's any part of the development process to optimize, it's choosing which projects to invest time in.
The lean startup and agile suggest defining the absolute bare minimum necessary to prove value of larger investments.
- "good to great" notes that iterating faster is the only way to find your hedgehog faster
- lean startup also pushes iteration
Defining Small Projects
Strip all Unnescessary Pieces
If the value of the feature itself is not clear, it's best to shave off anything that is required for the feature to provide value.
- aesthetics (color scheme / font)
- usability (button layout, etc)
- quality (heavy testing scenarios)
That's not to say these parts aren't important: they just shouldn't be the first optimizations after value is established.
The whole product does need to be built to provide and validate value to users. When selling a new product, you can see if there's demand by buying and selling items off the shelf retail, and taking a loss.
2. Measuring Success
Success is measurable. If a project is being worked on that doesn't move KPIs that someone cares about, then there are more important projects to work on.
A common argument is "but my project doesn't affect the customer!". If that's the case, you may be looking at the wrong customer.
E.g. for refactors on software, the customer is the future software developer: the KPI could be the throughput of that team.
Maybe for an internal reporting tool, the customer is the project manager, and the KPI is their time spent searching for relevant data.
3. Tasking the Project
Tasking projects help in the same way that a six page paper proposal does: clarifying the approach.
Each task in the project should be clear in purpose, and end result. Even small tasks should have some measure of success (although not as rigorous as the larger project KPI)