The politics of offshoring are interesting in my line of work. I haven't had to deal with them for a while, but now that I'm out of the midmarket, they are popping up again. Daniel Drezner raises the topic and I'd like to offer a bit of personal experience that I'm dealing with now.
I'm working at a big company that like many other companies, has in place a procurement process for IT that involves outsourcing and offshoring. Basically, they bought a huge package of services from IBM and IBM gets to decide if it's worth it for their consultants and staff to do the work or if they'd rather not bid, and therefore offshore the less profitable tasks. Essentially, everyone who builds new applications under this agreement is a subcontractor to IBM who is obligated to consider offshore bidders.
When it comes to complicated systems of the type I design and build, it is generally accepted that you need local expertise. People who know what they are doing have to be the ones to draw up the project plans and oversee design. Ever mindful of the bottom line, it has been decided that 'Phase Zero' of this project will be a thoroughgoing exercise in requirements gathering and systems design. The design team will create a 'Bible' whose implementation will be left to bidders.
It would be injudicious for me to say this is absurd, because although it is, it just might work. We are bargaining on a theory that is very much like the ideas which made mass production possible in the early days, which is that there will be interchangeable parts.
As scary as the idea is of interchangeability of labor, it is a possibility that has fairly profound implications.
However software design is nothing like manufacturing, and our desire for software products is infinitely more complex and customized than our demand for other engineered products. Writing code is writing, and never in the history of mankind has writing been successfully split up among dozens of people distributed around the planet to create the best product. So while the absurd notion continues to be funded, we will in the short term, suffer from implementations which will have all the hallmarks of products designed by committee.
What will be lost inevitably, will be the genius of end to end design. We are reducing the ability for individuals and small groups to be responsible for applications systems projects. We are therefore inevitably building bureacracy for the sake of efficiency. And it won't be long before we are doing time & motion studies on $15/hour coders on the international assembly line of software production.
This is very much like code bloat and it is destroying all of the productivity that could be gained by the workings of Moore's Law. So what if machines get faster and faster if the code run on them has become so standardized and commodified that most of the application is management of resources instead of actual algorithms doing work?
At some point, wisdom will prevail, not to mention some of us old heads who, with compute resources available to us as individuals, will demonstrate the beauty of elegant design built by small, tightly knit onsite teams and individuals.
In the meantime, I will report on progress and our efforts to keep this puppy in our backyard.
Comments