Unrepeatable Insights

Kevin: A coworker of mine wrote some software that was subsequently classified. She was later asked some questions about how the software worked. When she asked for the source code to refresh her memory, she received a listing with the classified portions – which she had written – literally cut out of it.

William: Well, I suppose one moral to this story is always keep copies of everything one does that is of value. And yet I suppose to keep copies of such work without the express permission of the employer is unethical and perhaps illegal. A different moral is to heavily document all work so that even if it becomes classified, anyone with clearance to access it would be able to follow the documentation. On the other hand when writing very complex code it becomes cumbersome to maintain accurate documentation since the task of documenting impedes creativity and imagination. If one suddenly has some insight, it often takes a long time to put that insight into a narrative documentation which can be followed easily by others. I think we have all had the experience of writing something which seems rather inspired and unique and then losing track of the only copy and which point one realizes that it is impossible to recreate the exact same words. I sometimes feel that the mind’s creative imagination is like a kaleidoscope which is constantly refocusing and once a particular configuration passes out of focus one can never return to that exact same configuration.

+++++

I worked for two years as a programmer in RPGII at Stone & Websters Engineering in Boston in what they called “The Treasury Department” which handled payroll and other accounting related tasks. Each programmer would be given an assignment which might take only a day or might take several months. After the programming was completed it would take a day or two to complete flowcharts and documentation. There was a full-time “librarian” who did nothing but file and monitor all documentation. I remember several times getting a program to do what was necessary and test out but losing sight of HOW the entire program actually worked. It was observed back in the 1980s that the IBM OS mainframe operating system was the most complex of all human creations. At any given time that operating system had a constant number of “bugs” that hovered around 1000. No matter how many bugs were “fixed” there were always new bugs. It was like trying to smooth out the wrinkles in an infinite carpet which of course was a never-ending task of Sisyphus. Perhaps if I possessed a higher caliber intellect I would not have produced working programs which escaped the full grasp of my understanding. Many old software programs and operating systems had layer upon layer of redundancy built into them to make them backwards compatible with older techniques. CICS on-line real time programming was said to be like that. Some huge programs had been maintained over the years by many programmers of varying skill levels. Sometimes a programmer was under pressure to implement a change or fix a “bug” in a hurry and so they would simply write something to BYPASS the old code and perform the task in a way that they could understand and control. I found it was ALWAYS easier to start a program from scratch and make it work rather than to take an old program, understand its design and modify it. Some programmers were more adept than others at demystifying old programs. I do wonder how open source programs like Linux deal with such issues. It took me years to realize that I did not really possess all the skills necessary to be a good programmer.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: