One conclusion is clear, anyone who thinks that onshore developers will triumph because they are more skilled is very wrong. We've found that we can hire just as talented developers in India as we can in North America and Europe. -- Martin Fowler
I'm actually so excited [about offshoring] that I've already put my current job in a box, taken it to the post office, and shipped it to Southeast Asia myself! Good riddance, stupid high-paying tech job! -- Rory Blyth
The company where I work-- a rather large pharmaceutical company-- is aggressively pursuing offshoring. The two largest projects in our department, the projects we worked on exclusvely for the last three years, are actively going through "knowledge transfer" with Satyam right now.
At first, I was incredulous. These are not your typical "this code is so boring, I'd pay Indians myself to write it" offshored applications. These are .NET Smart Client applications we just finished rewriting (from ASP.NET and classic ASP/COM, respectively). We were still working out kinks in the architecture not even 4 months ago.
Then I was just plain angry. What we were offshoring didn't make sense. It wasn't rote, by the numbers code; I couldn't even remember a time we had actually been in "maintenance" on these applications. They were in a constant state of active development and rearchitecture, at least as long as I had worked there. And that got me thinking:
(number of developers and managers) X (avg monthly employee rate) x (36 months) / (number of users)That is one scary number. Adding insult to injury, at large companies it's nearly impossible to tell how much difference your software makes-- do people even use it? Did it help our bottom line? Who knows! We sell drugs, not software. And although I'm still very proud of the code we've written (ask me about anything Smart Client), at the macro level-- our software doesn't make any financial sense.
So I began to let go. Though I may not be directly responsible, we're all participants, willing or not, in the same disturbing offshoring trend. This is something I find very troubling. I love computers; I love writing code. I hate to think of my livelihood reduced to something so disposable that it can be done for a fraction of the cost by cut-rate vendors halfway across the world. How am I supposed to feel about that?
And yet, that is exactly what is happening. I tell myself it's another fad, but there's a persistent, nagging doubt that I just can't shake. It's more than a little ironic that one of the first books I read when starting my career as a professional programmer in 1993 was Ed Yourdon's Decline And Fall of the American Programmer. At the time, I couldn't believe the crap Yourdon was writing. I was so disgusted with this book's preposterous prediction..
According to Edward Yourdon, software development may soon move out of the U.S. into software factories in a dozen countries unless U.S. software organizations exploit the key software technologies examined in this new publication... that I actually threw it away, something I rarely do. Yourdon was just ten years ahead of his time. All it takes is ten years of the Internet to bring the Indians to us. And why even get mad at the Indians? They were just lucky enough to be populous and know English, courtesy of a hundred years of British rule. In time it'll be the Vietnamese, or the Eastern Europeans, and the list goes on. You might as well get angry at the Internet, or the sky, or I don't know, Jesus Himself. What's the point? It's absolutely inevitable that given a sophisticated enough worldwide communications infrastructure, we will begin competing with a people all of the world for the same jobs. And while I'm at it, what is so special about programmers? We're not special (well, except for the way a guy with a high school diploma can magically make $80k/year, but I digress). Any job that can potentially be done without physically touching something is at risk. And isn't that the very definition of "knowledge worker"? Whether you are an accountant, an engineer, or a programmer, you're still working in the realm of pure knowledge, manipulating bits in a ledger, in a CAD drawing, in a compiler. You Are At Risk.
So what can I do? What can any of us do? I've done a lot of soul searching, and the answer is very close to home: Be Good At Your Job. We all need to get off our asses, and start taking our skills to the next level. It's OK to make twice as much as an Indian programmer if you're twice as productive. The downside is, the gravy train is over: this is extra work. And no, I don't mean that "maybe if I work 'til 3am every day and drink a six-pack of Red Bull" macho BS kind of work. The best treatment I've found is the Pragmatic Programmer presentation, How To Keep Your Job, where they equate your professional development with your investment portfolio, and apply the same proven rules: diversify, have a plan, be active, look for value, etcetera. Fantastic advice that I will be taking to heart-- and so should you. We dug this hole for ourselves through complacency; now it's time to start digging ourselves out by treating our jobs like an actual engineering profession instead of a license to print money.
One upside of working at a large company, even if they are offshoring the hell out of our livelihood: I was able to convince our group to get Andy Hunt himself to give the How To Keep Your Job talk to our group. Good stuff.
- Designing products for offshore development
- Using an Agile Software Process with Offshore Development
- Offshoring: Twenty Hard Truths about Inevitabilities, Pitfalls, and Matchless Opportunities