Traditionally, most software development has been done in an ad-hoc manner: in a code and fix style, and without a clear and consistent set of rules to drive the development effort. The ad-hoc manner has brought about chaos in the development process, leading to many problems that plague the software industry today. There have been countless cases of software failures that have sometimes proved to be fatal – largely attributable to a chaotic style of development. Owing to the lack of a consistent process, budget overruns and schedule overruns have been the norm in many software firms.
Many employees get early promotions either because they excel as individual contributors and are hungry for management positions or organizations, always seeking new managers, end up with no choice but to promote their star performers.