In the late nineties, Eric started on his journey from being an engineer to being a programmer.
As part of the transition, Eric was assigned to work on an application that he and many of his fellow engineers were very familiar with - a program that created thermodynamic models used to design heat exchangers. Born and raised completely in-house, it was used in the design process of all of their company's products.
Now, there wasn't anything inherently wrong with the program - as a meaty, iterative number cruncher, it worked. However, to use it, one had to go to the "UNIX Room" where a handful of aging HP-UX stations were set up for the engineers to share...and there was always a waiting list of engineers queued up.
The department had just completed the purchase of new NT Workstations for the engineers and wondered aloud "Hey! Why can't we port the application to Windows and everybody can create models from their own desks?"
And thus, a project was hatched to port the application to run on Windows. As fate would have it, some of the more senior engineers were also on that journey, and their first (and probably last) stop was Visual Basic. Lured by the ability to easily animate a little heat exchanger graphic on the opening form of their program, they forged ahead into unfamiliar territory. Their Visual Basic version was to replace the HP-UX version that Eric had been working on, and ultimately Eric himself.
Months passed and as the project progressed, Eric kept up by addressing a few bugs, helping users figure out why some values were being rounding down to 3.334 instead of appearing as 3.335, but mostly, just learning just how the insides made everything tick.
About this same time, the team of former senior engineers had turned in a version of the new Windows application that they had termed a "finalized" work in progress and to help Eric transition out of his "soon-to-be-obsolete" role, he was tapped to confirm that the new Windows version functioned in the same way that the now "legacy" version did.
However, as testing progressed, it became evident that just because management had assigned senior engineers to the project, their skills didn't translate into in the realm of computer science.
The product was the most fragile rube-goldbergery device Eric had ever had the misery of working on but, as Eric would expect from a group of genius engineers, it was clever.
For example, in order for the program to tell the difference between the form for heat exchanger X and one for heat exchanger Y the program assigned a unique ID, but instead of storing the information in a variable, the values were stored in the background color of the form. After all, the color #444445 is really not visually distinguishable from #444446!
Want to now pass two values into a function but not want to update the interface? Stuff them into the ones and tens place of the integer parameter and then parse them out.
When an engineer works on a heat exchanger, naturally, they would want to save their design. How about saving it to a database? Databases are good and since every engineer's computer included Microsoft Access, it only made sense to make that the default file saving format and for the sake of simplicity, each database should have one table with one row...and as many columns as possible. The end result was that the raw information could be read by any user and could be easily modified outside of the program.
The downside though was that the databases were pretty corruptible. Every 3rd or 4th use of it would cause it to go to an unrecoverable corrupt state requiring everyone to keep tens of megabytes of incrementally backed-up saves for what would amount to only a few hundred kilobytes of saved data.
Eric reported his findings back to management who were not left with a good feeling about their new and revolutionary program that was to be deployed. With the project deadline looming, and only a barely functioning mission critical program to show for it, they needed another solution.
Lacking the necessary time to re-engineer the already over engineered solution they were given, a decision was made to scuttle the new application and create a Windows application that contained an embedded terminal emulator and would connect to the HP-UX terminals in the now "decommissioned" UNIX Room and use the same application that the engineers had been accessing all along.
The engineering staff were impressed because the new version looked and behaved exactly like the old version that they were used to and upper management was equally impressed as well. Everybody involved received kudos for delivering on-time, within budget, that the end result was a big boost in productivity.
Now the only question remaining from upper management was how long it would be until the legacy version would be retired.