Nothing wrong with that of course...but the software development world has moved on and at least the better companies are now mostly using an Agile Software Development set of principles. The concept of an Agile environment is that it is much more "free flowing" and not bound to the traditional milestones and tightly defined guidelines which are being used in a Non-Agile environment.
The challenge is how to provide the accountability to the client (the ones who pay the bill) while harvesting the advantages the Agile environment can deliver.
The Agile Development environment is based upon the following 12 principles:
- Customer satisfaction by early and continuous delivery of valuable software
- Welcome changing requirements, even in late development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Best architectures, requirements, and designs emerge from self-organizing teams
- Regularly, the team reflects on how to become more effective, and adjusts accordingly
A practical problem of an Agile development is that there are really no Milestones the teams are working towards. As such there is no firm date which can be given so that the customer can review a an interim work product (milestone).