Steven Thomas
London, UK
Contact me 

Scaling Agile Software Development for Larger Projects 

"Small projects can succeed through sheer force of will and a bit of luck.  Medium and large projects require a more systematic approach" (McConnell, 1998, p. 36).  

Most of the Agile Software Development methods are designed for small team sizes, for example the original XP team had 8 people, but what if we're talking about 30 developers (let alone customers); what process should we use?   

Categorising projects and methods 

Alistair Cockburn (2002) categorises projects by the Criticality of the product and the Number of People, and he recommends picking a method based on this categorisation. He measures Criticality on this scale: 

C=Loss of Comfort, e.g. order a pizza but get lasagne. 
D=Loss of Discretionary Money, but system errors can be fixed by a manual system 
E=Loss of Essential Money. System errors cause bankruptcy. 
L=Loss of Life 

In one project I was almost involved in, the categorisation would have varied over time. The initial functionality was a proof of concept involving change of address functionality, which was C (Comfort), or at worst D (Discretionary Money). Subsequent functionality was unlikely to kill the customer, i.e. if the system made a mistake it would still count as Discretionary Money. The team was expected to grow from 6 (ish) to 30 (ish). So in terms of Cockburn's  categorisation system the project would have gone from a C6 to a D30. 

[By the way Steve McConnell (1998), quoted above, categorises a medium sized project as 3-25 people for 3-18 months with a code base of 20-250 K source lines of code.]

XP 

"Size clearly matters. You probably couldn't run an XP project with a hundred programmers. Nor fifty. Nor twenty, probably. Ten is definitely doable" (Beck, 2000, p. 157). 

Cockburn (2002) says XP is appropriate for C4 to E14 projects. This is not to say that XP can't be used for bigger projects (it is already), just that it has to be tweaked to work for them: 

XP, as written, has been demonstrated on projects with up to 12 programmers and four onsite customers. It may have trouble with larger teams due to its reliance on tacit knowledge. It is difficult to build extensive tacit knowledge without good osmotic communication, and it is hard to do with more people than conveniently fit in a room. A larger project team trying XP will have to adjust the teaming structures interfaces, and use of documentation to accommodate the greater coordination needs of the larger group and the thinner communication lines. (p. 169). 

This has been demonstrated on at least one large XP project run by ThoughtWorks.  In his article XP On A Large Project – A Developer’s View Amr Elssamadisy described a big XP team that abandoned some of the XP practices, and introduced more conventional practices to cope with the size.   

Crystal Orange 

Cockburn's (1998, 2002) claim Crystal Clear is a D6 method, Crystal Yellow is D20 and Crystal Orange is D40 - all are similar, it is just for bigger projects he introduces more formality. The Crystal family of methods is considered light-but-sufficient so I thought I'd compare Cockburn's Clear (D6) to his Orange (D40) to see what we might add to our mix for larger projects. 

The process definition (what Cockburn calls the "policy standards") is identical in the two methods, except the duration of an increment is slightly longer in Crystal Orange. 

Policy Standards

Crystal Clear

Crystal Orange 

Incremental delivery 

Yes (2-3 months)

Yes (3-4 months) 

Progress tracked by delivered software and major decisions, not documents

Yes

Yes

Automated regression testing 

Yes

Yes

Direct user involvement 

Yes

Yes

2 user viewings per increment (at the end of the 1st and 2nd deep iteration; at the end of the 3rd the system goes to QA) 

Yes

Yes

Downstream activities start as soon as upstream is stable enough to review 

Yes

Yes

Process review workshops 

Yes

Yes

Crystal Orange adds a number of specialist roles. 

Roles

Crystal Clear

Crystal Orange 

Sponsor 

Yes

Yes

Lead/Senior designer-programmer 

Yes

Yes

Designer-programmer 

Yes

Yes

Usage Expert 

Yes

Yes

Business Expert 

Yes

Project Manager 

 

Yes

Business Analyst 

 

Yes

Technical facilitator (e.g. JAD stuff) 

 

Yes

Architect 

 

Yes

Design mentor 

 

Yes

UI designer 

 

Yes

Reuse point 

 

Yes

Writer 

 

Yes

Tester 

 

Yes

The Crystal methods require more documentation than XP. However, Crystal Orange adds only two extra work products Crystal Clear - status reports and inter-team specs - and replaces the lightweight requirements specification with a more conventional requirements document. 

Work Products 

Crystal Clear

Crystal Orange 

Release sequence 

Yes

Yes

Schedule (user viewings and deliveries) 

Yes

Yes

Annotated use cases or feature descriptions

Yes

 

Requirements document (purpose, use cases, non-functional requirements, interface definitions) 

 

Yes

Design sketches and notes as needed 

Yes

Yes

UI Design / Screen drafts 

Yes

Yes

Common object model 

Yes

Yes

Running code

Yes

Yes

Migration code 

Yes

Yes

Test cases 

Yes

Yes

User Manual 

Yes

Yes

Status reports 

 

Yes

Inter-team specs 

 

Yes

So a bigger Crystal team uses more specialised roles, and produces more deliverables.  

DSDM 

The DSDM manual (DSDM, 1997) sets a limit of 6 teams of 6 people (including customers), and says not to use it for safety critical systems, so DSDM is probably a C4 to E36 method. DSDM is heavier than the other methods in that there are many prescribed processes and work products. 

Work ProductsYesDescription / What non-DSDM people would call itYes
Feasibility Report  Project brief / business case 
Outline Plan  High level plan 
Business Area Definition  Requirements document 
Non-Functional Requirements List   
Systems Architecture Definition  Architecture document 
Outline Prototyping Plan  Development Plan 
Functional Model  Some of Data/Object model, Use cases, Screens, Data Flow Diagrams, etc 
Functional Prototype  Interim release 
Design Prototype  Interim release 
Tested system  Interim release 
Delivered system  Final release 
Implementation Strategy  Implementation Plan 
Development Risk Analysis Report  Risk log 
Review Records  Record of user feedback on prototypes, i.e. interim releases  
Test records   
User documentation   
Project Review Document   

Scrum 

Many people use Scrum (Schwaber & Beedle, 2002) in conjunction with XP, claiming this makes XP more scalable. The Scrum strategy for scaling is to have more Scrum teams - one team for each "application" and one team for the shared resources (sometimes called the Architecture team). Scrum of Scrums meetings provide inter-team communication. In fact Scrum claims to be infinitely scalable, but the examples from the book only mention 3 parallel application teams, and presumably a shared resource team, so in my opinion, Scrum is proven as a C5 to D32 method. 

Conclusion

Basically a larger team needs more specialist roles and more documentation, even if they're trying to be Agile.  DSDM already has those roles and deliverables as standard.   Crystal and XP add formality to the their default processes to cope with larger projects.  This also fits my experience of running large Agile projects.  

Scrum differs by offering a light process for scaling up.  I haven't tried it so I can't comment on whether it would work.  

References

Beck, K. (2000).  Extreme Programming Explained: Embrace Change.  Reading, Massachusetts: Addison-Wesley. 

Beck, K, & Fowler, M. (2001).  Planning Extreme Programming.  Boston: Addison-Wesley. 

Cockburn, A. (2002).  Agile Software Development.  Boston: Addison-Wesley.  

The DSDM Consortium. (1997).  Dynamic System Development Method [3rd ed.].  Tesseract Publishing.  

Elssamadisy, A. (??). XP On A Large Project – A Developer’s View.  ThoughtWorks.  [Also on-line at http://www.xpuniverse.com/2001/pdfs/EP202.pdf

McConnell, S. (1998). Software Project Survival Guide: How to be sure your first important project isn't your last.  USA: Microsoft Press.

Schwaber, K., & Beddle, M. (2002).  Agile Software Development with Scrum.  NJ: Prentice Hall.