Code maintainability, and the joy of outsourcing
blog.metaoptimize.com
blog.metaoptimize.com
The situation is...
1) A piece of software that the original company gave up on.
2) A single developer (single point of failure) that knows the software but "went postal" so now the new company has unknown software and no expert.
Strongly implied in the story and the advice is that the source code is a mess; the original company gave up on it, and "refactor" is a repeated refrain.
The advice is to hire a "good project manager" who will become expert in the software and parcel out pieces of work to hired hands (the outsourcing red herring).
OK, we've traded a single point of failure who "went postal" for a new single point of failure, but labeled him "project manager" instead of "key developer." That sounds to me like the same problem, the same failure mode, just a different title on the business card.
A further disconnect is the reference to open source as an argument that the "program manager outsourcing the work" methodology espoused will work. The "program manager" methodology as described is centralized control taken to the extreme. Open source is the epitome of decentralized control. That is a major difference in philosophy and methodology.
I know personally from experience in talking to managers that they are very hesistant to try remote collaboration. The prevailing bias is that their workers must be in the office at the same time within earshot of each other. But, I've observed very successful collaborations between workers who leave a skype window open and communicate via audio when necessary.
I also saw people, primarily managers, push-back on outsourcing on answers.onstartups.com: http://answers.onstartups.com/questions/8423/outsource-basic...
The objections from coders? I am just guessing based upon personal feelings. When I went to the outsourcing sites, I had a strange feeling in my stomach, wondering if I was undermining the value of programming by paying below domestic market rates.
If developers unable to communicate, they will use copy-paste. They will create copy of broken code, rename, refactor and fix it, and will use it in their own code only. I SAW that.
Good code quality is achieved through review system. Someone must just block bad code, until he will burn out.