my messages on the right please (i)

Oil & Gas Systems
Design and supply of process equipment systems for onshore and offshore installations

I was asked to take over the development of a document management system for OGS 18 months into the development.

The system is entirely private and I can't divulge too many details, but I don't think my client will mind if I say that some of the company's documents are rather large and complicated. Digitising the paper-based processes had proved a challenge that had defeated 2 previous systems engineers before the code and data were handed to me with the options of either using some or all of what has been developed up to that point, or starting from scratch.

Complex problems are sometimes best solved with simple solutions

Starting from scratch would mean higher levels of code-confidence, but using the existing work could prove a handy shortcut. Unfortunately not this time though. There were a few fundamental issues with the code that meant binning it was the only option. Data from the database was passed around using numeric keys rather than variable names. And when names were assigned, they weren't consistent. This meant that when looking at any isolated section of code it was impossible to know what it was processing. It also meant that any changes to the data structure like adding or removing a column, would break everything, everywhere all at once.

The Gordian knot at the centre of the system is a double-digit long alpha-numeric string representing a version of a document, a bit like mini DNA with different chunks of the string representing different characteristics. As well as needing to allow for different sections to increment separately but interdependently, there was/is a requirement for potential id-strings to exist before a database record is created that might store it.

The paper-based version of the system was well established, and so were the rules it used, and understanding these seemed like the key to me, so the first few weeks involved a lot of Q&A. I think it took around 6 weeks to pass the stage that the previous development had reached. Once the id-string logic was established the rest was spade-work, relatively speaking, and something useable was ready a couple of weeks later, I think. I could be misremembering - It has been running for over a decade.