|
I have seen one old, large codebase that remained tremendously high quality. It was the algorithm suite for ground processing of electro-optical spy satellite collections for the US. By far the cleanest, best-organized, best-tested, and most reliable software suite I've ever had the pleasure of working on. The only downside was very long build times, upwards of two hours when I got there, but we eventually got it down to 45 minutes. All written in C++ and tiny bits of Fortran with the test and simulation tooling written in Ruby and Perl. A few factors that I think contributed to the high quality: - Waterfall development. It may be wrong for fast-moving commercial applications with fickle user bases, but we were targeting hardware capabilities we knew in exact detail years in advance of them launching into orbit and becoming usable, so taking the time to write out detailed specifications and requirements and tailoring verification testing to these structured the development. No chaos. Everything had a clear purpose with a really obvious way of telling whether what you did was right or wrong. - Dedicated testing teams independent of the dev teams. When their entire job is to find bugs and break stuff, it makes a difference. - Very little library use. This wasn't really a "build versus buy" decision per se so much as the program had existed for such a long time, that at the time we solved most problems, we were legitimately the first to do it, but since the code base was entirely classified, we couldn't release our own work as libraries. The upside to this is all of our work was dedicated to actually writing and testing code, with very little work dedicated to managing dependencies, and the developers understood what everything was doing, including low-level functionality like memory and thread pools, filesystem drivers, and scientific functions like coordinate transformation, ground to orbit projection. Nothing was a black box. We understood our system because we wrote it. - Continuity. The lead technical people from research scientists who developed all the algorithms to software architects that came up with data structures and class hierarchies, were often 30+ year veterans that had never worked on anything else. They were the world's foremost experts in what we were doing, so they were good at it. - Effectively no corporate level management interference in what we were doing. The work was all classified and the top suits aren't cleared to know what we're doing anyway. We're either costing more than the contract pays or we're not and that's all the really matters. They can't micromanage if they can't even get into your building. |