11/01/2005 12:11:29 PM Professional Perspectives Professional Perspectives

What are the prospects for programming?

Does programming have a future? This simple question has two simple answers. "Yes", there will al-ways be a need for people who can figure out how we can best use computers. "No", there will be less and less need for people who work at translating instructions people understand into instructions that computers understand.

There are a number of reasons why the programmer-as-translator faces increasingly bleak employment prospects. For many years, this kind of programmer was turned out in large numbers by our colleges and universities. And they found ready employment in all sizes and kinds of Canadian enterprises. Their job was to translate from system specification into correctly operating code.

It was a labor intensive process, as we were reminded when old programs had to be upgraded to meet year 2000 requirements. It was creative in much the same way that solving puzzles can be creative. The challenge was to fit the system as specified into the "box" determined by available processing power, storage capacity, and connectivity. Many toiled long hours to make it happen.

Automation has always been a threat to programming. First, the very labor intensive work of assembler programming was replaced by programming in higher level languages. Progress has continued and to-day it is possible to automatically go from specifications that people can understand to code the com-puter can execute. The technology is available, even if not yet widely used.

We've also got much more powerful "parts bins" of software components. Some of these parts are in the form of object oriented libraries which address the needs of specific domains. Some of the parts come from or depend on the COTS (common off the shelf) systems that we all know. Some of the parts are in the form of open source code that can be freely deployed.

The amount of unique code that must be developed for a system is going down, in many cases dramati-cally. There is still a need to adjust and integrate the parts, but this feels much less like programming and much more like scripting. It takes place at a higher, more abstract, level. It requires a keen appre-ciation for the intended role of the desired system. It's not your old programming job.

There will always be some continuing need for people to build new robust, reliable, efficient, and effective software parts. Rigor and discipline will be watchwords for those employed in building these new parts. The professionals undertaking this work will have to take responsibility for the entire life cycle of the parts that are being developed, from concept through to retirement.

Just using the latest new technology may not confer much business advantage, but finding new, crea-tive ways to exploit computer technology can yield large business benefits. Making it happen needs a practical visionary who understands the business and understands the technology. Some of them may even write code as a way to express their vision. But it's not your old programming job.

Coding will be almost incidental for most of the people who continue to work in computing. Knowing the technology is important. Understanding business needs and opportunities will be of increasing im-portance. Being able to connect business need or opportunity with technical capabilities will be key to future success in computing.

reprinted from

with permission

October 29, 2004