Rails vs Off-shoring

This is definitely not an apples vs apples comparison. Unless you think about it from the over all impact of the movement on the enterprise. I think you'll find them to be two solutions to the same problem... Getting more done with less.
Enterprise companies are a conundrum. You will see things that should cost a few dollars cost thousands. I sit every day on conference calls where people decide if they should pay a lot of money for open source software. This is software that is free, but yet they are dying to pay consultants and lawyers a lot of money to tell them it is "okay" to run OSS. Then when they get cold feet, the pay some third party company an insane amount of money to run it for them. Lock it up in a little black box with a big label across it that says, "INDEMNIFIED".
Let's rewind a bit and think about why things are this way. You have to realize that enterprise companies are horribly inefficient. They may be born from innovators and game changes, but once the cross a certain threshold of size they get paralyzed. The paralysis comes from the fact that they are forced to grow very quickly. To scale up they are forced to hire a lot of people, and they just can't find the caliber of people they need in the right quantities. The "innovators" are juicing on the adrenaline that comes from innovation, they've got no interest in "sustaining". You can strap them down with either legal bonds or financial bonds, but at some point they will escape.
Even the might google is dealing with this. Google has turned out so many millionaires that they now are in jeopardy of being assaulted by the up and coming Googles of the future. The bright thing that Google does is that they turned into it. Instead of trying to suppress people and trap them, Google gives them time to innovate, making an incubator for new projects. They keep the innovators innovating.
So what does this have to do with off-shoring? Enterprises are stupid about the fabrication process when it comes to software (sure, not every enterprise, but then we're not talking about THOSE companies are we?). These companies think that since their is no iron or steel or plastic that goes into the process that it doesn't have raw materials.
What about R&D? Isn't it the same thing? You've got people thinking and creating all the time, but they aren't using raw materials (sure some R&D requires raw materials, but lots don't... or you're talking about a fraction of the over all cost, since researchers can be very expensive.
But it's not you see, because companies are proud of their investment in R&D. They see it as proof that they are going to be successful. The difference is that they don't see software fabrication as anything to be proud of. I'm not talking about companies that make software for a living, but many of them have the same problems.
So out of shear lack of respect for the process of software creation, they think that developers are drop in replacements for each other. They make a lot of excuses about how they are "sustaining" not "creating" and that these developers are just here to make a few tweaks, update some code for compliance, etc.
And let's be very clear here, I am not implying that anyone you bring in off shore (or on-shore) is not good at what they do. It's just that nobody can come up to speed that quick on legacy code. Legacy code is full of pitfalls.. things that needed to be re-factored, code written by people who were learning on the job, etc. This is not the kind of code you entrust to someone who works for $10/hour. Would you turn the landscaping of an arboretum or golf course over to a couple of high school kids? You might get lucky, but you probably won't.
The real tragedy of it is the way it breaks down. My personal experience is watching my team at work. We're a support team which means we don't do any development, we deploy and sustain the production environment. So as the quality of the code goes down, we see two distinct issues, the hand off between the teams is more tedious. What used to take a half hour is now taking 5 hours. The other issue is that the software quality decrease results in operational deficiencies. We have more outages, random outages, ugly... UGLY outages.
So can off-shoring work? Of course it can. When you have clearly defined requirements, transfer ownership of the entire process, Companies like GE who are committed to quality have wonderful success off-shoring. They invest completely in the process from the ground up to insure that they have success. They don't ask some two-bit "get rich quick" company to bring in a bunch of "fixed cost resources". You can outsource/off-shore at the task level, but we're back to clearly defined requirements, aggressive quality assurance and quality control.
So that's the root of the problem, to be honest. You can't have a two party process without clear and concise communication. When you don't even know what you want, how can you expect someone who doesn't natively speak your language, work in your time-zone or even get a pay check from your company to have success? Its just plain silly.
So where does Ruby come in? My experiences with Ruby and Rails have lead me to believe that you can program a solution in rails faster than you can define the requirements for a problem. The impact of that is not just outstanding, it's fundamental. It affects the very way in which companies build software.
How does it work? You spend 2 hours interviewing the customer to find out what their requirements are, and then you let them check their email for a half hour while you implement all their features. No joke. You repeat that process over and over and you'll end up with a happy customer.
Some say this process never ends. Well guess what, neither does software development at enterprise companies. No matter what you're working on the problem is always evolving. Wether it's loan processing or medical processes, evidence management or something scientific, you don't WANT the process to stop. That is when you end up with stale code that puts you in serious jeopardy.
Is Ruby/Rails the only answer to this problem? Absolutely not. Try Python/Django, same sorta thing. My point is toolsets that lower the pain threshold raise the productivity threshold. There are even ways to do this sort of thing with Java or C. It's all about your frame of mind. When I was a Visual C++ programmer in the 90s, I found that I could prototype whole systems in hours, not days. The boss would give me an assignment and I could glue together the right components in a fully functional system. The problem with that was me. I never tested anything. Boss never cared about the big picture, he was selling my vaporware. Someone else always came along behind me to condense my vapor into something more tangible.
So in conclusion, I think you'll find that a few smart people working smarter is the solution to the problem.
- jasonmcmunn's blog
- Login or register to post comments
