Tuesday, November 03, 2015

Thoughts On Old Software–Why We Need Documentation

A former student sent me a links today - NASA seeks programmer fluent in 60-year-old languages to work on Voyager My first thought was that  I know FORTRAN and COBOL but its been decades since I've used them. But of course there is more to think about here.

NASA has had someone working on this software for many years. No doubt that person has a lot of knowledge of the software. Knowing the languages, FORTRAN, COBOL, and/or Assembly language, is really only part of the issue. Understanding the way the software works and why it works that way is really important to maintaining and enhancing the software over time. What is obvious to someone with years (decades) of looking at the same code is not going to be obvious to someone looking at it for the first time.

Now looking at code with fresh eyes is not completely bad. It’s good to get away from assuming that everything old is good and that change is bad. But as the old saying goes “you have to understand the rules to know when to break them.” So I do hope there is a lot of good documentation to go along with this code.

Another issue with the computers on this spaceship is that they are old. Old means very little memory, very little processor power, and serious limitations on upgrade possibilities. It is not like one can send a tech out there to upgrade the hardware. So understanding the hardware is also very important. I would assume that code has to be hand optimized to take advantage of the the hardware. This also needs to be documented.

These days we tend to think of computers as easily replaceable. To some extent they are. We also think of software as easily replaceable. In some cases that is true but in other cases upgrading both hardware and software is very difficult and expensive. One might be able to write a new phone app in a short period of time but a very complex set of enterprise software that has decades of data and modifications is not always easy to replace. Languages, such as FORTRAN and COBOL, tend to stick around because they are too expensive to replace. Poor documentation makes this situation even worse.

Documentation is not glamorous but it is still important. Something to communicate to beginners before they find out the hard way.

1 comment:

Garth said...

I read the same article with interest. Made me think of my Apple II/TRS-80 days. Assembly was not my cup of tea but I could make things work with it and FORTRAN was no big deal. Finding a young programmer interested in either is going to be tricky, especially since it is not like they need to use it every day. When I first started working on my CS degree assembly programming was a big course that thinned out the students in a drastic manner. Not so much any more.