THE FALL AND RISE OF THE PROGRAMMER
by BERNARD A HODSON
What is a programmer? My definition is someone who is in full control of the computer being worked upon. With that definition do programmers still exist? Many people call themselves by that title but they are, in reality, only technology clerks. My son, who graduated recently in computer engineering, said that many people took that program for the potential rewards. When the IT market collapsed many quit the program, sacrificing one or two years of their investment, to seek lucre elsewhere. Those that stayed kept on because it was fun and enjoyable, and were ready for the rebirth of the IT market when it occurred. Is there still a worthwhile career in programming?
Programmers working with main frames are still needed, although the market is limited. There is, however, an interesting and growing career prospect as a programmer with microcontrollers, provided you get away from reliance on Windows and break the hide bound way of doing things, as taught by many Universities with staff whose knowledge became obsolescent years ago.
Robin Bloor, President of a UK 'Think Tank' said, in an award winning report called 'The Gene Machine' that "The sad legacy of the von Neumann approach is fragmentation, and we have lived with this legacy for decades". I agree with him. This von Neumann legacy has led to operating systems with huge amounts of waste, packages such as spreadsheets by the dozen, and security problems galore. In the early days programmers were 'kingpins' but Windows and other similar operating systems have killed their initiative and downgraded them to technology clerks.
Anyone who uses Windows or similar operating systems is not, by my definition, a programmer, whether or not they use Java, C or other programming language.. In doing so, they are being forced to use interfaces, graphics, video and the like developed by others, they are not in full control. People who use packages, such as for data base and spreadsheets mainly follow rules, filling in the blanks and, if they do it right their application will run, they are form fillers, not programmers. I consider myself to be both a systems analyst and a programmer, and I do not use Windows, nor do I intend to. Windows is just a traffic policeman giving out 'frustration' tickets if you do not follow the rules. Why should I load up my computer with a huge amount of stuff I can't control and never need to use, the curse of operating systems.
Fortunately the microcomputer PC of business represents only a few percent of the total number of computers installed. By huge percentage margins microcontroller chips dominate the market, being used for smart cards and embedded systems (your car probably has 30 such chips embedded). But there is a desperate need for innovative programmers in this huge market. Why? Many of the managers of microcontroller applications are in many cases still following the outdated von Neumann legacy, building useless operating systems and bloated language structures such as Java instead of taking control of the computer with assembler language.
The smallest full (rather than the usual subset) Java run system on the market for microcontrollers is 50k bytes, more than ten times what it needs to be. (my own microcontroller work shows you can build a Java run system in about 5k bytes, but it is ridiculous to use any standard language on microcontrollers). Let me illustrate with a recent request for quotation (RFP) sent out by a Gulf oil country for development of a national identity smart card to include biometrics, licenses, health, passport, electronic purse and other applications, along with a countrywide encryption system using personal keys.
When I read the RFP I knew there was not a company in the world that could answer the RFP honestly, the technology most are using is cluttered with languages and operating systems. Eighteen companies bid, with quotes between $5M and $18M, which only showed that bidders were groping in the dark. National identity cards are a growing market and that is just one of the many promising microcontroller areas for programmers to enter, provided you are innovative and not bound by traditional approaches.
One other aspect of working with microcontrollers is that a majority of the companies working with embedded systems and smart cards are small, you won't get lost in the crowd, and their staff are not as hidebound as those working for Visa, Barclays, Gemplus RBC and other large companies.
If you really are interested in being a programmer then first of all make sure you know an assembler language, preferably with microcontrollers but that is not overly important. Get away from the software mess created by followers of von Neumann, with its clumsy and inefficient operating systems and languages and be innovative. An innovative group from the University of Ottawa recently built a robot submarine using microcontrollers. They were the first 'rookie' team to make the finals of a major competition in San Diego, against competition such as MIT and Cornell. Follow the much more preferable Turing Universal Machine approach. Read about this approach in detail in the Gene Machine (contact is Robin Bloor) which outlines Turing's career and approach , or a paper I have on my web site genetix.ca entitled A New Kind of Computing, which develops a Turing-like machine architecture in software.
Hodson is an Ottawa based consultant who founded what is believed to be Canada's second University Computer Science Department. He can be reached at firstname.lastname@example.org.