Yes, true believers, now is the time of your enlightenment. For years have you stumbled in the dark, arms raised, hands reaching, gingerly feeling for obstacles. You have relied upon truisms and common sense to get you to your goal, knowing that if you only stay on the straight and narrow, you would succeed.
I, too, once believed the same. I, too, used to tout that the way to success was a straight and narrow path, fraught with danger and risk. "DO NOT STRAY FROM THE PATH!" I used to preach, "for the number of roads to ruin are immeasurable, but that way to enlightenment is straight."
Horse hooey and poppycock.
Now hear this: You can build successful products on-time and on-budget over and over again. Here is the secret: constraint. Yes, if you have the discipline to constrain yourself, then you will experience the joy of on-time, on-budget.
The way it used to be
Here is what we all used to do. Tell me if this doesn't sound familiar.
Identify functionality (often in a room full of executive and managers). Document and define functionality. Design application -- user interface, object model, database schema. Finely define functionality for each component, estimate the work involved, identify risks and opportunities, weight the estimates with the risk category and produce a schedule. Assign costs to the schedule and develop a budget. Add padding. Review the preliminary specification (which hardly anyone would read), the preliminary schedule (which would invariably be pulled in for "business reasons"), the preliminary budget (which would be reduced). Revise, regurgitate. Stamp with seal of approval.
Begin work. If you were good, you would track progress against estimates. Within the first 25% of the project you were either on time, or you were slipping. If you were good, you would fix the causes that were making things slip, but for most of the projects, most of the time, you simply raised the flag "We are slipping." No one paid any attention until the last 25% of the project, desperately trying to fix something in the last 10%. Herculean efforts, late nights, long weeks, weekends, etc. You finished.
Congratulations, you had 85% of the functionality, were 20% over budget and 15% over deadline. Or something not too far from that.
You had a party, celebrated the success and kicked off the next project the next morning. After all, you had sufficient headroom and padding to ensure that even with this scheduling and budgeting failure, the product worked.
In reality, the majority of efforts did not produce a successfully released product. This is still true today.
The way it will be
Here is how you will change your life and be successful in producing remarkable products.
You will talk to your customers. Even if you are creating a brand new product for a new market that doesn't even exist yet, you will be selling it to someone. Find them. Talk to them. Call them. Ask leading questions. Listen. Ask and listen again and again.
This process will still produce a list of functionality. However, because you have gotten the pulse of real consumers who would pay real money for your product, you will know what is important to them.
Put the most important functionality at the top of prioritized list. Now figure out what is the least amount of work that it will take to produce the most important functionality. You are permitted to deliver only the top most item if necessary.
Now you may go ahead with your process. Design the user interface, object models and database schema. Break down each component and make work estimates, identify and assess risks and produce a weighted work effort. Apply costs to the work effort estimates to create a budget. Do not pad. Your weighted work effort already includes risk factors.
This is where you stop and take a breath. If the costs of producing only the most important functionality are greater than the market opportunity, then there is no justification for producing the product and you are done. Shelf the idea and go onto the next thing. You just saved yourself a huge bundle of effort and money.
However, if the cost/benefit equation is positive, then you know exactly what it will take to make a product with one tightly focused set of compelling functionality. Now it is time to begin your race.
Your purpose is to produce the most important piece of functionality first. Make it work to the exclusion of all else. You are in a race against time and dollars. Every day, whether you are using Gantt charts or Backlogs, you must make this assessment "Are we doing the right work to produce the most important functionality?"
Here is where you ability to constrain yourself and your team pays off. New feature requests? Put them in the parking lot. Changed functionality requests? Parking lot too. Your ability to focus your team to constrain their work will bring you success.
Plus, you will have noticed that you have a much, much shorter time line then you used to produce. The old way had you implementing all the identified functionality. Now you are implementing on the most important functionality. In my experience, my time lines went from six months to three weeks on average with this approach. Assuming only 4 weeks per month (it's really about 4.3 weeks per month), then I can do eight iterative cycles in the same six month period. EIGHT! That is a lot of opportunity for addition and improvement.
By the way, your team includes the executive staff, management staff, and line staff. It includes Marketing, Sales, Operations, Engineering, and Customer Support. After all, your company is the vessel and if there is a hole in the bow, the stern goes down too, so everyone is responsible for keeping things ship-shape. Keeping your entire team focused on accepting the constraints will keep everyone happy with the end results.
Here is the final key. You will STOP and deliver when the FIRST of these three things occurs:
1) You have completed the functionality you intended. OR
2) You have hit the milestone you identified. OR
3) You have spent the budget you identified.
"But, but, but" I hear you sputter, "But what if I hit the milestone and the work isn't done?"
How could that be? Didn't you identify the least amount that needed to be done? Was it really the absolute least amount? Didn't you design the components to fulfill only the least amount of functionality? Didn't you estimate the work and weight those estimates? Didn't you stay focused on delivering only the functionality identified? Didn't you resist the requests, demands and temptations of adding or changing functionality?
If you really did those things, then you really will hit one of those targets successfully.
What happens too often is that the design accounts for future expansion. Or the UI adds additional features that add complexity but are not required implement the most important functionality. Or the database incorporates infrastructure for expansion, growth, additional reporting. In summary, you failed to constrain the work to the most important tasks.
It is very easy to fall into those traps. Which is why company after company, product after product, program, project, etc. make these mistakes over and over. If you can avoid these mistakes, then you can lead your company into iterative, focused product development and enhancements that will keep your efforts prioritized by value to the company. Plus you will deliver on time and on budget.