The company I work for now used to be a client of my previous employer. For whatever reason they decided to buy the source code and develop/support the product (a pharmacy claim adjudication system) on their own. The company is US based and they hired 11 of us (8 developers, 2 QA, and an architect) and set us up in an office in Canada.
The company is not a software development shop so the first year or so was ... interesting. CM (configuration management) for our product (dozens of applications written in C, C++, PB, perl, sqlplus, Java comprised of 12K+ files) was left in the hands of our overloaded QA team. This responsibility gradually became my responsibility (I lead a team responsible for GUI, server infrastructure, financial subsystem, and database loads).
Here was our process at the start of the year:
Depending on the stage of the release I was sometimes doing up to 5 builds a day at a loss of 2.5 to 5 hours of productivity a day. Keep in mind I was a hands on Team Lead - still developing for each release.
Our process now:
That's it. Happy times are here again.
The goal for 2006 is to introduce automated smoke and regression tests into the process (at least for core components like our OLTP engine) and generate pretty graphs like the Pugs team has done (