Joshua Allen has posted a long essay with his thoughts on offshoring. I enjoyed reading it.
One of the biggest problems with the state of programmer jobs today is with the programmers' own mentality. We think of ourselves as expert craftsman, and thus our trade as using our brain and skills to craft elegant software -- that's why we build software today essentailyl the same way we did 50 years ago. It pumps our egos, but it doesn't serves us well in the long run. The things that we build today (and for the last 15 years) are too complex to be done right entirely by human labor. That's why software today -- all software -- suffers from quality, security and reliability issues. No human, or group of humans, has the attention span or the attention to detail necessary to write correct software, or verify someone ese's software. You couldn't build a skyscraper or a bridge the way that we build software, even though the software is an order of magnitude more complex. There is an industrial revolution coming that will fundamentally change the way that software is built, relying much more heavily on automation and much less on human eyes. Moore's Law, and recent develoments in software analysis research, are driving this revolution. The tools that will become available over the next 5 years are going to fundamentally change every step of the software development process, from specification through delivery, and move programmers up the abstraction ladder.
Why do I raise this? Because the real issue behind offshoring is that programming has become commoditized labor. It's moving from a craftsman job to a blue collar job -- at least the way it's done today. The programmers that will thrive in the 21st century are the ones who turn it into a white-collar job, who move up the abstraction layer and embrace our own software technology to rise above the rote work and focus on strategic decisions and guiding the outcomes. In the mid 19th century, China and India represented a huge percentage of the world trade, because they were known the world over for their craftsmanship. Then the industrial revolution happened, and the work they were doing by hand, at least from a functional point of view, could be done equally well (if not better) and cheaper in factories. China and India missed the industrial revolution, and their countries suffered greatly for it. We are in danger of the same fate. Notably, China and India (more so for China) are positioning themselves not to miss the boat in this next industrial revolution. They are investing in research, in building strong computer science education programs, and in their local software economies. Computer science education, and most notably enrollment, is on the decline in the U.S.
Now, what neither the China nor India education systems I've seen have realized yet is that software developement is fundamentally inter-disciplinary. It takes programmers, but also graphic designers, interaction designers, psychologists, ethnographers, sociologists, and a long list of other experts, all working together, to design and build a modern piece of software. You don't need 100% of every discipline for every piece of software, but they add tremendous value when they are there and make the difference between an okay program and a truly great one. But they are disciplines that don't understand each other and you need to work hard to build a team with the right kinds of communication and collaboration. The people who can do that wil be highly valued, and my sense of the American and Northern European higher education systems are that they are better at providing that kind of education than many other countries' education systems so there may be an advantage there.
I wish people would stop worrying about offshoring. If we had solved all of the problems of software development, then we could worry about that. We need to keep focused on how to do software development better; whoever provides leadership in that area is going to profit significantly.
11:11:30 PM ; ;
|
|