Many IT projects cost much more than they should. There are many reasons, but in my opinion one of more important of them is improper scope management. People usually forget that scope should be managable and they end with shifting delivery dates and increasing budgets. In effect, project fails to satisfy its goals and everyone is dissatisfied. Quite often removing some low-priority requirements from project scope could help deliver product on time and in planned budget.
When developing a new product, you usually want to get as many functions as possible. In fact, people tend to include in their products many "nice-to-have" functions that - in their opinion - could be useful. In fact, these non- essential functions often prove to be useless (or even disturbing).
In many projects sponsors decide to build big, elastic system that will be able to adapt to changing business conditions and environment. It means that analysts must be hired, all possible options have to be described, and then extremaly elastic implementation must be made.
Executing projects of this type has some important drawbacks:
In fact, to achieve your goals you should concentrate only on most important issues. It's quite similar to strategic games: if you play by sending your troops over and over to the battle, you could make some little damage to your enemy. If you want to achieve any success, you must select one target, destroy it, and then go to next one. Of course in the first place you must concentrate on smaller targets that could be a threat for you. Then, when your enemy gets weak, you could attack main base.
Best way to achieve this effect is to divide the project into iterations. Each iteration should end with a new product version, delivered to the customer. Deliver first version fast; this will allow you to verify your vision and make corrections as early as possible. It will also create positive attitude in your development team. And remember that you could always add new features in future versions.
Of course, to succeed in this model you have to design high quality system architecture. You should focus on separating components that will be delivered separately and describing interfaces between them. Without this, instead of well-working IT system, you could soon face a nightmare. :)
Add new comment