Projects are the main reason for Software Products Development failure.
Because Projects and Software characteristics are totally different and conflict.
Projects are (Temporary) and have an end date.
Software development is (Not Temporary)
and this creates two problems:
a- Quality: poor cos you would like to finish on an end date.
b- Team: dismantled which will lead to lose of experience and deep information which can not be catch by documents.
2- Success Criteria:
Projects (Budget , Time and Scope)
Software development (Value / Benefit)
Projects are Big (budget, time, scope, team, … etc)
which implies Feedback problem, cos of big batches of deliverable.
Software development should be in small batches so as to enable feedback and benefit as soon as possible.
Projects estimate and predict large deliverable in advance. Controlling uncertainty.
Software is inherently unpredictable. So exploit uncertainty to create more releases and more releases means options. And options have value.
Projects will penalized late requirements.
Software products are always changing otherwise they are not used or dead.
Projects suits traditional management where senior managers can sign-off big batches of work.
Software development suits self-managed teams where team members can sign-off small batches of work.
Resource: No Projects – Beyond Projects