Developers of enterprise-level software are coming under ever-increasing pressure to deliver systems in ever-decreasing timeframes. Information technology (IT) is an enabler for business, and to compete effectively, modern companies require support from the systems that underpin their core business processes. The requirement for rapid development primarily exists because of the need to have these important systems keep pace with the fast-changing nature of today's agile businesses.
This is the yardstick for a rapid development project, not to deliver solutions in a short time-frame but to deliver business critical functionality as and when required by the business.
This presents us as professional software engineers with something of a dichotomy. While professionalism and personal pride dictate that we engineer solutions to the highest quality, business wisdom demands that the solution is both economically viable and has a short time to market. Enterprise software engineers frequently find themselves in the position aptly captured by the often-quoted adage "cost, quality and speedpick any two"; nevertheless, the need to stay ahead of the chasing pack requires delivering on all three.
To understand why software organizations struggle to achieve these goals, let's consider some of the unique challenges involved in producing enterprise systems.