I'm becoming more and more convinced that one of the keys to getting good software is to have it developed by a software company, not by the technical department of a non software company, or even by a multifaceted 'management consulting' company. Unless developing software is a company's sole concern, hierarchies, rituals and reward structures certain to drive away the best developers, almost inevitably take root.