Agile software development methods tell you how to run your projects. But they all do that from a single-project perspective. What if your organization runs multiple projects at the same time? Do the agile practices still hold in such a case?
Our organization consists of 220 people, spread over two locations. We specialize in doing small fixed-price projects, most of them web-based. At any time we have at least fifty different projects running simultaneously, with lots of other projects in "sleep-mode" (either waiting for resources, or waiting for customer input). Handling fifty different projects creates a lot of noise. There are always conflicting resources, conflicting constraints, and conflicting planning requirements.
So, the question is: What do Scrum and Lean say about such a multi-project situation?
Well, the answer is: Nothing! (But maybe they don't need to...)
Let's see... Our people are working on fifty different projects. But is that so much different from other organizations where they have 220 people working on just one big project?
Many Small Projects = One Big Project
I could claim that working on many small projects is similar to working on one big project. In both cases there are simply different teams working on different feature sets. And in either case the teams don't know much about the details of the code being produced in the other teams. Therefore, it seems to me that running many small projects is similar to simultaneously developing many parts of just one big project.
Many Small Projects != One Big Project
However, I could also claim that working on many small projects is different from working on one big project. With many small projects you don't have just one customer to talk to. You have fifty of them! It is easy to agree on a sprint backlog with one customer. But it's much harder to have fifty customers agree on the allocation of your resources.
Optimize the Organization, not the Project
Lean Software Development has taught us an important lesson: don't do local optimization! Optimization should take place at the project level, not at the level of individual people, processes or components. But as I said, running many small projects is similar to simultaneously developing many parts of one big project. You should not try to optimize the development of the individual parts. You should optimize the entire project. In our case, with fifty small projects, the entire project = the entire organization. Therefore, I believe we should optimize the organization, and not the individual projects.
It's the same with traffic regulation on a busy road. By trying to make all cars adhere to a speed limit, the throughput can be increased significantly for everyone. But car drivers often try to optimize only for themselves. And then the system breaks down and everyone finds himself caught in a traffic jam, which could have been prevented by synchronization of the participants.
Synchronize All Projects
How can you perform optimization on the organizational level?
A little (mandatory) synchronization can go a long way in speeding up all the participants. There is much less noise about resources, constraints and planning requirements across our projects when every single project is required to step in phase with the others. Sure, this might not be optimal for some of the individual projects. But we're not trying to speed up individual projects to their highest velocity. We're trying to speed up the entire organization, so we can improve velocity for all projects simultaneously.
The Organization is the Project
I believe that you can solve some resource planning challenges by treating the entire organization as one big project. When planning your resources, it shouldn't matter whether your people are working on many small projects or on many parts in one big project. This means that you can apply the agile and lean principles to the organization as a whole, and let them solve your problems at the appropriate level.
Comments
Thanks for this good post - I
September 23, 2008 by pbielicki, 1 year 19 weeks ago
Comment id: 1867
Thanks for this good post - I find it very valuable.
Just few cents regarding Lean Software Development. I think that it didn't taught us don't do local optimization but optimize the whole instead. It doesn't mean that you don't have to optimize single projects. What if you had Sprint planning on the same days and all the other stuff and you didn't have Continuous Integration server, you didn't use TDD, coding standards, etc. (and these are considered rather local optimizations, right?). I say you will be screwed.
Optimize the whole means optimizing things that affect the whole process/organization - it doesn't mean optimizing stuff only on the process/organization level.
Cheers!
Przemek
I don't see your point
September 23, 2008 by JurgenAppelo, 1 year 19 weeks ago
Comment id: 1868
Thanks for the compliment, but I don't see your point.
I didn't write that people should optimize *everything* on the organizational level. I'm sure there are lots of things you can optimize at the project level, without any penalty to the organization.
As for TDD and coding standards: do you think we should allow different coding standards and different unit testing frameworks for all of our projects? Or do you think there is value in establishing organizational standards (that sometimes might not be optimal for some individual projects)? In that case, you would be optimizing for the organization too.
Then we are both right! And
September 23, 2008 by pbielicki, 1 year 19 weeks ago
Comment id: 1869
Then we are both right! And in my comment I was referring to don't do local optimization! sentence with which you strongly discourage project optimizations. Project optimizations could and should optimize the whole organization (if they work they can be proliferated to other projects) but they should be started down there where work is done. I really cannot imagine management forcing coding or testing standards, can you?
My point was about that particular sentence - IMO it's too strong and it may bring misconceptions.
Hackystat and Project Portfolio Management
September 25, 2008 by Philip Johnson (not verified), 1 year 19 weeks ago
Comment id: 1872
Very interesting post. The Hackystat Project is developing a technique called "Software Project Portfolio Analysis", which is a process-agnostic approach to supporting increased transparency in organizations with many simultaneous projects.
I would be interested to know if our ideas seem relevant to your situation. Here's a pointer to a short tutorial on SPPA:
http://code.google.com/p/hackystat/wiki/Tutorial_ProjectPortfolio
The Hackystat Project Home Page is at:
http://www.hackystat.org/
Philip Johnson
johnson@hawaii.edu
centralized planning
September 25, 2008 by Jeff Santini (not verified), 1 year 19 weeks ago
Comment id: 1875
How would you distinguish your thesis above with the Soviet Centrally planned economy? It seems to me that a big part the joy and success of Agile is in letting teams find the best way to solve their problems. Lean discusses self empowered teams. If you guys do all your planning centrally down to the level of deciding on individual backlog items.
Maybe I misunderstood this. Would love some more detail.
Jeff
Multiple projects are discussed in lean
September 25, 2008 by Anonymous (not verified), 1 year 19 weeks ago
Comment id: 1876
Lean software development says eliminate waste - one way is by reducing work in progress. Multiple projects being run makes for lots of work in progress. Lean says to reduce work in progress - don't work on a bunch of tasks at once, try to swarm on tasks or stories. If you have people spreading themselves over several projects, they are not concentrating on one thing at a time, they are creating work in progress.
If you want to do several projects, fine, but minimize the number of projects and don't let people work on several projects at once. Multiple projects with people spread across also fosters specialization of people - the DB expert that knows the core 5 tables for accounting working on 5 projects that need accounting work. That violates "build knowledge" in lean also.
You'd be better off figuring out the highest value projects and swarming on the projects. The projects would take less time and you'd have happy customers for the high value projects (of course those on low value projects would be less than happy).
Sounds like you've got a honking big backlog of projects too. Projects tend to age like cheese, the older they are the smellier they get. Seriously though, you need to think about time from concept to delivery and reduce that (optimize the whole). The projects may well loose value because they sit in the backlog for so long.
Post new comment