I've been thinking about outsourcing a lot recently.  The difference in the apparent project costs is very appealing, from a management standpoint, but I wonder if outsourcing large chunks of development can really be successful over the long term.  Successful outsourcing projects have very specific requirements and deliverables.  You hand them off, and viola, you get back a finished project.  Hopefully the customer requirements didn't change in the meantime. And hopefully you got all the requirements down.  This requires a lot of rigor in requirements definition, and also in getting final buy off from your stakeholders (with no, or very little, opportunity to change their minds.)


I missed this post from Johanna Rothman back in September.  (Or maybe I hadn't found her again yet, I lost some folks when I switched machines.)  She talks about how managers would be smarter to assign people to only one project at a time, and to only one priority task at a time.  She concludes:


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.


I have been working in the software industry for 22 years, and I have never once worked on only one project at a time.  Even when I was managing for only one product, there were always those other side projects that needed to be taking care of.  What Johanna points out is spot on; at MSDN we currently have one full project outsourced, and if it weren't outsourced, if we were working on it internally, we probably would have de-prioritized it in favor of a more important project.  As it is, it's pretty much out of our hands, and soon we'll be delivered a completed project.


The other things that I think about, though, are the decisions all along the way of every project I've worked on, and how, for the most part, those decisions improved the final product. In addition to being good at analysis, documentation and communication, great PMs are flexible, quick on their feet (nimble), adaptable and good decision makers.  We wouldn't value those traits if they weren't required in successful projects, and I don't think great requirements and single-minded focus will necessarily yield a great result. The conclusion I ve come to is that you have to carefully pick your projects to outsource, using it just like you would any other tool.