Over time, many systems, despite strong procedures and practices, end up with portions that are convoluted or messy, in one way or another. I see plenty of opportunities where customers could get in and rewrite some code to make it cleaner and easier-to-manage. I’ve written about this, before. And, as before, I think we all acknolwedge that this is a tricky business because, first off, everyone is already too busy to do this and, secondly, it could introduce other problems. But we’re seeing a growing trend in this that I specifically want to talk about: Version 7 LabWare LIMS upgrades.
LabWare LIMS Basic
LabWare LIMS basic is what we used to call a “4GL” (fourth generation language) or is sometimes called a “proprietary language.” There are many terms for these types of programming languages. Their purpose is to make programming in the system somewhat easier by removing a lot of the “hard” programming stuff and introducing a lot of functions that are specific to the task. After all, in C#, there is no “log samples” function that comes with it.
These types of languages don’t tend to require that you declare anything, have specific types of data attached to most items – it’s quite flexible from that standpoint. Of course, it can also come back to bite you if you don’t remember that what looks like a number might be text and vice-versa – the programmer is responsible for making sure the data is used in the right way and in the right place – or that it’s properly converted to do so.
Version 7 Upgrades
Suddenly, with version 7, we now have the ability to “declare” our variables so that they’re not just hanging around the entire system. After all, what’s the use of declaring global variables when everything is basically a global variable, right? So, in and of itself, giving the ability to keep variables as local seems like a good option to have.
Yet the bulk of the systems out in the universe were built in the older manner, where all variables were basically global. Thus, we come to conversion and the question, “Should you?”
Should You Convert Your Variables?
For all the systems already built in the world that were built without the declaration statements, there are plenty of them that have tons of junky code that could be rewritten to be more efficient and could benefit from variable declaration. If you’re taking on the effort of actually rewriting code to be more efficient, be more compliant and be more supportable, and this is a huge effort, I know, but it’s worth doing. For those systems that already work badly and have problems, this would likely be a good exercise.
Otherwise, I wouldn’t touch those variables with a ten-foot pole. If your system is working what you’re going to do, especially in a big system, is break a lot of little things that will be almost impossible to pin-down. No matter how careful you are, changing these variables and understanding their wide effects is a huge undertaking and one that will likely leave you with ongoing bugs to fix for a long, long time into the future.
I can’t stress this enough but this is going to be just so much harder than your realize and these bugs will be so incredibly difficult to fix that you’ll find yourself coming up with strange workarounds that are even less compliant than the initial system was without the variable declarations in order to keep things working.