Saturday, January 04, 2003
Well, I suppose the mozblog hasn't helped my blog frequency... will need to install it at work me thinks.
There's a lot of talk at the moment (Slashdot and practically everywhere else) about OSS versus proprietory, and also about large firms outsourcing IT (and other functions) to India (though Russia and other low cost of living countries too). Though I'd add my own comments to the fray, and link the two arguments.
I think Microsoft and other software vendors should certainly be afraid of OSS, at least in terms of licensing costs. The OSS model of free (or low up-front cost) software and pay for support will slowly become more popular. The dot-com boom of relying on this for all software was a mistake, sometimes mail-lists and source are enough, sometimes they are not. Sometimes pay-per-license will work, but over time OSS versions in general will become available. As more and more quality OSS products become available, there will be an inevitable Darwinian selection in the number of viable solutions for business (though obviously the winners will change over time). I think the software industry just has to adjust to the fact that software is becoming more and more service oriented, in the sense, that it's possible to create custom apps for a higher percentage of the customer base. The reasons are simply that the building blocks are becoming bigger and cheaper to use. More custom applications are feasible, simply because they are cheaper to write.
Personally, I'd like to start a software house, but finding a niche product that can't be replaced by a OSS alternative is quite a challenge. Rather, building systems, by leveraging ever better, freely available, libraries (for example) and quality tools (Java, IDE's, junit) means that writing code is no longer the bottleneck in custom systems. I've just written a system which probably had 3 weeks coding in it, at the most. 2 years ago, it probably would have had at least 2 months, if not much more. The bottleneck is getting requirements, system testing, and iterating the system.
This is where the outsourcing doesn't make sense. Large firms are outsourcing development, because they see savings due to lower per hour costs for developers. This is certainly true, Indian programmers are cheaper, in terms of salary, and if you pay enough (in local terms), you will find just as able people. However, as many people have pointed out, there is little evidence that the company saves any money in real terms. The reduction in per developer overhead, is accompanied by an increase in head count (typically, many more programmers / support staff are used, right or wrong), a huge increase in the communication overhead (I'll come back to this point), and consequently minimal, if any, possibly negative, savings per project.
All this means is that at a time when project times are coming down due to higher developer productivity, outsourcing them makes less financial sense. Where the effort should be focussed, IMO, is increasing the efficiency and cost effectiveness of projects, not creating more overhead. Yes, cost effectiveness may mean fewer developers, but still local to the team. The only way to get the real cost saving of moving developers to cheaper labour pools, is to move the entire team, users, analysts, management.
On the communication overhead point, this is so well documented it's hard to understand why so few people in management don't know it. Back in '74 Brooks was talking about the same things that XP preaches today. Get your best developers, make them ultra productive. Period. Not even outsourcing to 90% cheaper staff will touch that (it's widely accepted that there's a greater than 10x factor in productivity amongst developers, why not start there?). Turn-around of business solutions is the key factor. Outsourcing can only slow this down. When you get caned by a competitor because you can't keep up with features / service, don't worry, you can always outsource the customers can't you?
There's a lot of talk at the moment (Slashdot and practically everywhere else) about OSS versus proprietory, and also about large firms outsourcing IT (and other functions) to India (though Russia and other low cost of living countries too). Though I'd add my own comments to the fray, and link the two arguments.
I think Microsoft and other software vendors should certainly be afraid of OSS, at least in terms of licensing costs. The OSS model of free (or low up-front cost) software and pay for support will slowly become more popular. The dot-com boom of relying on this for all software was a mistake, sometimes mail-lists and source are enough, sometimes they are not. Sometimes pay-per-license will work, but over time OSS versions in general will become available. As more and more quality OSS products become available, there will be an inevitable Darwinian selection in the number of viable solutions for business (though obviously the winners will change over time). I think the software industry just has to adjust to the fact that software is becoming more and more service oriented, in the sense, that it's possible to create custom apps for a higher percentage of the customer base. The reasons are simply that the building blocks are becoming bigger and cheaper to use. More custom applications are feasible, simply because they are cheaper to write.
Personally, I'd like to start a software house, but finding a niche product that can't be replaced by a OSS alternative is quite a challenge. Rather, building systems, by leveraging ever better, freely available, libraries (for example) and quality tools (Java, IDE's, junit) means that writing code is no longer the bottleneck in custom systems. I've just written a system which probably had 3 weeks coding in it, at the most. 2 years ago, it probably would have had at least 2 months, if not much more. The bottleneck is getting requirements, system testing, and iterating the system.
This is where the outsourcing doesn't make sense. Large firms are outsourcing development, because they see savings due to lower per hour costs for developers. This is certainly true, Indian programmers are cheaper, in terms of salary, and if you pay enough (in local terms), you will find just as able people. However, as many people have pointed out, there is little evidence that the company saves any money in real terms. The reduction in per developer overhead, is accompanied by an increase in head count (typically, many more programmers / support staff are used, right or wrong), a huge increase in the communication overhead (I'll come back to this point), and consequently minimal, if any, possibly negative, savings per project.
All this means is that at a time when project times are coming down due to higher developer productivity, outsourcing them makes less financial sense. Where the effort should be focussed, IMO, is increasing the efficiency and cost effectiveness of projects, not creating more overhead. Yes, cost effectiveness may mean fewer developers, but still local to the team. The only way to get the real cost saving of moving developers to cheaper labour pools, is to move the entire team, users, analysts, management.
On the communication overhead point, this is so well documented it's hard to understand why so few people in management don't know it. Back in '74 Brooks was talking about the same things that XP preaches today. Get your best developers, make them ultra productive. Period. Not even outsourcing to 90% cheaper staff will touch that (it's widely accepted that there's a greater than 10x factor in productivity amongst developers, why not start there?). Turn-around of business solutions is the key factor. Outsourcing can only slow this down. When you get caned by a competitor because you can't keep up with features / service, don't worry, you can always outsource the customers can't you?