Journeys

Programming

Programming is the most intellectually stimulating activity that I have ever performed. It is not so much the making of things from nothing as it is the satisfaction that comes when I have created a thing of intellectual beauty. To me programming is a combination of art and science. And, in programming, technical competency goes hand in hand with technical currency.

So that you understand from whence I come I would like to state what I do: I write stand alone multi-threaded client/server systems; graphics software and effective user interfaces to complex scientific and engineering applications; real-time and embedded system software and firmware; and communications system software. I am fluent in six computer programming languages (C#, C, Ada, FORTRAN, COBOL, and Pascal). I program within Microsoft Windows, Unix, Linux, VxWorks, as well as others too old and long ago to mention.

What bothers me about programming today is the number of people who claim to be programmers but who are not. These wannabes claim to be programmers but when you look at a wannabe's abilities, they usually involve applications that are written in a macro language (such as VBA) and that are usually trivial and unfocused. We need a word to describe this class of people who are intelligent enough to pretend to program without actually programming. So let me define what I do in unambiguous terms. I am a professional production programmer who writes computer software for money paid by someone who will probably not use the software. Note that a professional production programmer is distinct from a research or hobbyist programmer.

I believe that programmers should be held accountable for their mistakes. I am beginning to believe that the only solution to this problem is the certification of programmers by a vendor-independent organization. A so-called professional organization has taken a stand against such certification. I believe that the arguments offered by that organization are specious and self serving. My question is simply "Doesn't the programmer who wrote the software that caused some type of catastrophe share the responsibility for the disaster?" It is for this reason that certification is required. Once such an organization is in place, organizations that do not wish to share the blame for a software based disaster can hire a certified professional. The certified professional should then use certified journeymen and certified apprentices to implement the software.

One of my favorite managers was not always a manager. In 1976, when I first met him, he was an expert FORTRAN programmer - more than expert - brilliant. About a year later, he told me that he was going to move into management. I expressed my disappointment and told him that within a year he would no longer be technically competent. Of course, he disagreed. He managed with a flair. He made it clear to the people who worked for him that they were the foremost of his concerns. He proved his commitment more than once and his reputation as a good manager grew. About a year after he became a manager, he called me. He was writing a simple FORTRAN program but couldn't recall how to reposition a file pointer to the beginning of the file without first closing and then reopening it. It was a simple thing to do in FORTRAN (the FORTRAN statement is REWIND). I reminded him of my prediction and suggested that it had come true. However, in light of his growing reputation as a great manager, I told him that I'd rather him be a good manager. There are far too few good managers.

Programming has not only kept me gainfully employed but it has also provided me with some of my most satisfying life-time experiences. But at the same time, programming skills in the United States are dismal. What caused what I consider the to be the dismal state of programming skills in the United States? I think there are a number of reasons. Academia is certainly one problem. I also believe that Microsoft , one of the leading vendors of software development tools, is another.

Our educational institutions are not teaching the ethics of programming well enough.

I would also like to share my thoughts on the Association for Computing Machinery .