Most software development projects suffer when analysists, architects and developers bite off more than they can chew. This is not because the projects being undertaken are too large or too ambitious.  A large project, like a large meal, is best devoured one small bite at a time.   One technique that features this approach is known as Agile Development.  Using agile development each task in each phase of the software development process is split into consecutively executed mini-tasks. The scope of each mini-task should be set such the mini-task will take only a few weeks to complete.  One benefit of applying this technique is that when a mini-task is completed for some phase of development (i.e. analysis), the result is immediately available for use in the next phase of development (i.e. design).   Although there is a general roadmap that guides task scope selection, each mini-task scope is determined only when work on the preceeding mini-task has been completed.  The mini-task scope is based on what is deemed most important at that time. This “late selection” characteristic allows the development process to be extremely responsive to internal events (i.e. discovery of additional risk factors) and external events (i.e. client change requests). This ability to change direction and feature priorities is why this technique is named “agile” development. Another benefit of Agile Development is that small pieces of the software rapidly pass through all phases of the development process from analysis to client acceptance.  This results in a working application shortly after the project is initiated with a limited feature set consisting of the most important features. The feature set of the application then grows gradually over time to emcompass all of the requested features.

Take smaller bites

My Software Development Philosophy