Opinion
Computing Applications Forum

Forum

Posted
  1. No Scientific Discipline Was Ever Built on a Myth
  2. Author

The dictionary defines a myth as an unproved assertion about history, politics, or religious belief used as justification for social action. Peter J. Denning’s "The Profession of IT" column ("The Field of Programmers Myths," July 2004) extended this idea to include unproved assertions about computer science.

Denning claimed the assumption "computer science equals programming" is a costly myth, especially when cited by Edsger Dijkstra and others as a universal (complete) foundation for teaching and doing research in CS. He proposed an adjustable "great principles library," including theory, abstraction, and design as foundations for computing. Other widely adopted mantras, like "computer science is algorithms and/or Turing machines," likewise turn out to be myths when advanced as universal paradigms of computation.

Principles adopted as paradigms for any discipline are difficult to dislodge, since believers reject any attempt to show a paradigm is a myth; their livelihood depends on the paradigm’s survival.

Other forms of knowledge (such as the philosophical assumptions of René Descartes and Immanuel Kant, the mathematical axioms of Gottlob Frege and David Hilbert, and the physical assertions of Isaac Newton and Albert Einstein) have likewise proved questionable when adopted as universal foundations for their disciplines. Political theories, too, like communism, capitalism, and democracy, are myths when adopted as universal explanatory assumptions. The same holds for religious tenets of Protestantism, Catholicism, Islam, Judaism, and Buddhism when adopted as universal beliefs.

Complete models of science, politics, or society widely approved by thinkers and planners as a basis for rationalist belief and accepted by followers as a basis for action are often myths with a costly or harmful effect on society.

Denning’s column was useful in discrediting the universality of programming, but alternative models (even a great-principles library) do not provide an alternative universal model of CS to replace it. Computing, like other scientific and political principles, would benefit by adding or revising older methods for teaching, research, and problem solving but are misleading in asserting universality as a foundation for belief and action.

We should avoid universality in defining goals for science, politics, or religion, focusing instead on diversity in proposing new foundations for making the world a better place and for understanding the role of human thought in society.

God’s assertion that humans not eat of the tree of knowledge suggests we should reject all forms of knowledge but could be narrowly interpreted as the avoidance of principles of universal knowledge that are in fact costly myths.

Peter Wegner
Providence, RI

Despite dramatic growth in the CS discipline over the decades, a CS degree is still issued after the same four years. A physician must complete eight years of college and four years of supervised practice before being considered competent. Many take additional years of specialized apprenticeship. Civil engineers must complete supervised work and an examination to be licensed. To take Peter J. Denning’s cure (July 2004), society would have to train and pay software engineers like doctors. Instead, we outsource software development in pursuit of cheaper labor. We might thus certify broad competence through an exam to demonstrate there is more to CS than programming.

A CS curriculum focusing too much on theory no longer creates employable practitioners in only four years. Without practitioners, jobs and eventually the whole intellectual pursuit of CS could migrate overseas.

Theory may be the tip of the wedge, but practice is its broad base. A computer scientist with no practical knowledge of programming would have difficulty working with the many trade-offs and constraints of the real world—and would not be a valuable practitioner. Toy problems do not suffice for learning the big libraries in commercial use. Larger and more practical assignments are needed. Larger projects also provide a brutally practical introduction to the need for competency in design.

Employers don’t want programmers. They want roboticists, graphics specialists, UI people, and systems engineers. They want people with specific competencies but don’t feel the need to train them. Colleges that can’t justify 10 years of training must either divide CS into subdisciplines or find quicker ways to teach programming so students can minor in CS and major in, say, mechanical engineering, art, cognitive psychology, or operations analysis. Better continuing professional education opportunities at colleges and universities would also be welcome.

Kurt Guntheroth
Seattle, WA

Whether or not CS equals programming, as discussed by Peter J. Denning (July 2004), what most IT shops and other commercial software development organizations practice is 98% programming, along with the kind of management needed for directing and motivating any group of people. One could explore the rise and fall of analysis and design activity over the past decades, but it is debatable whether, even where practiced, they would fall within CS and if they did whether they would truly be a separate activity from programming.

CS may be more than programming, but it is not less than programming. The number of software industry jobs that do not involve programming is tiny and shrinking, in part because virtually every educated person today is expected to know how to do some programming. So, if all "programming" jobs were sent overseas, there would simply be nothing left but a few corporate managers, mailroom staff, and stock brokers. And why should even they stay?

It is just not credible for Bill Gates to beg students to major in CS if they plan to live and work in the U.S. The idea that some elite level of computer scientists capable of innovation is somehow separable from core development activities and more resistant to being outsourced is a fantasy.

The problem is worse than Denning stated because programming itself is viewed as binary voodoo. Either a programmer can or cannot do the job, and once the job is done it’s done. Even Denning’s examples support this view. The idea that software can give correct results but still be written well or badly is almost totally lost.

There is some remnant of the idea that software can be written at higher or lower cost, but if there are no quality issues other than a binary judgment on correctness, then cost is the only factor left to be managed in a software project, and "management" consists of minimizing that cost; any bid over the minimum is viewed as a sign of greed or at best featherbedding.

A race to the bottom in software development may be abetted by outsourcing but is not caused by outsourcing. It stems instead from the poor impression most people, including most developers, have of programming, or CS, as a field.

What is needed is to rehabilitate this central and crucial activity with better science, practices, and management.

Joshua Stern
Los Angeles, CA

Peter J. Denning’s column (July 2004) is nothing more than a repackaging of the old problem of the lack of dichotomy between engineering and science in CS. Most universities have departments of CS but, in fact, teach software engineering. CS departments at some universities are even in the school of engineering. The real science gets short shrift, while programming and software design are the focus. Students get degrees in CS and never take a course in the theory of computing.

Have you ever met a real computer scientist? Alan Turing is one of the few who comes to mind. On the other hand, software engineers are common, even though in some states they can’t call themselves engineers. There are few jobs for real computer scientists outside of universities. As a result, the public believes that programming and software development is the heart of the science. Most CS students see no reason to take math courses, unless they are planning on jobs in scientific and/or mathematical software.

Universities must take the lead in establishing departments of CS, as well as software engineering. That would bring real science back to computing and elevate the craft of creating software to real engineering. Until that happens, I’m tired of reading about it.

David Marks
Spring House, PA

Author Responds:

Three of these responders see unresolved tensions pulling on the CS field and causing the problems we see. Stern sees tension between cheap, low-quality software and expensive, higher-quality software. Gutheroth see tension between theory and practice in the curriculum, diminishing the amount of time students get to prepare for the practical realities of the workplace. And Marks sees tension between software engineering and CS. But a solution, hinted at by Stern and Gutheroth, to carve CS into smaller pieces, is unlikely to resolve these tensions.

I’ve proposed a different direction. Rather than carving the field into smaller pieces, we need a unifying framework that naturally embraces all the pieces. I have proposed a great-principles framework to do this. The differences between some of the pieces (such as software engineering and computational science) are differences in practice but not in the fundamental principles of computing. Different communities of practice are certainly able to coexist within this universe.

Wegner raises a different question: Can any framework purporting to be universal and complete actually deliver? Programming, he says, cannot be a complete and universal framework for computing and hints that a great-principles framework may be no better. But with that suggestion he misreads my proposal. I don’t propose a great-principles framework to the exclusion of any other way of looking at computing. I propose it to cultivate a new identity for computing.

Our inherited, historical identity does not describe our field well. Despite the growth and accomplishment over the past 60 years, it is still widely regarded by professionals in other fields and by the public as immature; the perception is that we have not created much science and that there are no guiding principles beyond Moore’s Law.

These perceptions hurt our relationships with other fields and, most important, recruitment of new scientists and engineers into our discipline. (For more on the proposal, see cne.gmu.edu/pjd/GP.)

Peter J. Denning
Monterey, CA

Back to Top

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More