I was reading David Anderson's Working Smarter Not Harder and thought about managers. David's right, a few small improvements can dramatically increase a team's productivity and therefore lower the cost of development. But I contend that most of the productivity costs in software is the way we mismanage software projects. If managers worked smarter, they would:
- Assign people to only one #1 priority task at a time
- Assign people to only one project at a time
- Create opportunities for people to work together, to build review into the product development process
- Ask about obstacles
- Clear those obstacles
I'm convinced that the reasons outsourcing works is that it forces organizations to document requirements and the outsourcers work on only one project at a time. The outsourcers' management can then choose any number of useful product development practices that increase the outsourcers' productivity. Management can't change their minds and refocus the outsourced project(s) in the same way they feel free to refocus the internal projects.