First, what do we mean by a ‘Large Project’? Rather than try to define this in terms of budget, staffing levels, code size, or complexity, I would prefer to characterize large projects as those carried out by typical large software companies. For example, any list of top software vendors would likely include:
- Computer Associates
Additionally, many companies who do not sell software directly, develop very significant amounts of software for embedding or bundling with their core products or services. Notables would include:
- Cisco Systems
- General Electric
One big difference in how these companies run the front end of their development projects from the methods often cited in the Agile/Scrum literature is that these companies do not need to ‘discover requirements’. These companies operate a strategy that is either:
- Roadmap-driven, (certainly true of technology leaders), or
- Opportunity-driven (or ‘service-oriented’ – requirements derived from ‘RFP’s or customer contracts)
Nearly all of these companies will have mature product development methodologies and lifecycle models, and may even be subject to regulatory or quality management system standards. They also typically are organized around multiple independent functions – Engineering, Product Management, Manufacturing, Sales & Marketing and Customer Support – all of whom are involved in the planning of any new product release.
Finally, most will have development teams that are distributed across multiple sites, countries and timezones.
To summarize, large projects are frequently characterized by:
- Roadmap- or RFP-driven lifecycles
- Mature development processes
- Organized with multiple independent functions
- Regulatory/Compliance obligations
- Distributed, multi-site development teams
This is the context within which many large companies embark upon the pursuit of an agile development framework.