I was working with a customer recently that has a development process that both made me cringe and struck me as very creative. In this case, the customer has software they have written when spawning a few databases for each new project that is created. There are three types of databases created for each project, with unique names for the project. The DDL and DML to create these initial databases are stored in a central database as a set of rows in a table.
To make changes to their software, developers create a project (with new databases) and then alter the application and the database to meet the requirements. These changes then need to be captured and applied to a development template database. There is a template for each of the three different databases created for projects. Changes made to these are processed and then added to the central database for new projects, and to upgrade existing ones.
This creates a complex development process with lots of potential for mistakes and simple human error. However, that's the state of the software, and so I've been trying to help them find ways to simplify this as well as make it more robust across time (and staff changes).
The situation got me thinking, however. While they or I might not like the process, I do admire the creativity it took to set this up and build a system that allows custom software to meet their needs for project tracking work. It's a solution that works, albeit one that now looks overly complicated. However, I wasn't part of the initial design or the various evolutions since then. Perhaps I'd have ended up in a similar place, given the knowledge and requirements known at each point in time.
I'm sure many of you have an architecture or a process that is unusual in some way. Perhaps you designed it, or perhaps someone else did, but there was some creativity in building a solution to a problem. Today I'm looking to hear the stories of where you've seen creative solutions in development, either to a programming problem or maybe to a process that manages or deploys your software. Maybe you deal with remote systems that aren't connected. Maybe you work with large numbers of sharded databases. Perhaps you have cultural challenges that require creativity to ensure you can update your software.
Let us know today what sorts of creative development solutions you've seen implemented.