Is computer science a profession?

g ' ~ o address the issue of com| p u t e r science as a profession, J L w e need to consider the following questions: Who is a professional? What are the characteristics of a profession? Is it in our interest to be considered a profession made up of professionals? In considering what constitutes a "professional," in the broadest sense, we can consider anyone who is recognized as an expert in some activity and who is paid to do that activity to be a professional. This definition would separate out the novices (inexperienced beginners) and amateurs (those who engage in an activity for the love of it, rather than to get paid for it). Thus, we have professional athletes, professional actors, professional plumbers, and even professional programmers. However, being at a professional level of expertise for a given activity does not make that activity itself a profession. We can identify someone as a professional football player, but we do not call football a profession. Similarly, systems engineering does not have to be a profession for someone to be referred to as a professional systems engineer. It is instructive to consider occupations that are designated as professions, such as medicine, law, teaching, or accounting, to determine what they all have in common. Clearly, they all involve specialized education and expertise, they all require an academic diploma, they all have a certification process needed to become a practitioner, and they all serve a dependent public. Looking more closely at these professions, we see that they also have strong codes of ethics and self-regulatory mechanisms for enforcing those codes. In order for the codes to have been developed in the first place, there had to be general agreement among the practitioners about what was the right thing to do in their practice. We can say that over time there evolved within each of these professions a shared set of goals and values that became the basis for their codes of ethics. Putting all of these ideas together, then, we can say that a profession is actually a "moral community" with shared values and goals made up of practitioners of a given skill, serving a dependent public with self-regulatory standards established by the group and instantiated in a code of conduct or ethics with expulsion procedures for violations. If we deconstruct this definition in light of computer science we discover that we are evolving toward becoming a profession, but we are not there yet. This is not surprising, considering that computer science as a discipline is only about 50 years old. We can certainly recognize that the practice of computer science requires specialized education and expertise, that we serve a dependent public, and that, through membership in "professional" societies, we are governed to some extent by codes of ethics. Where computer science falls short as a profession, however, is that we have not yet become a "moral community" with a shared set of goals and values. Traditionally, the practice of computer science has been idealized as highly individualistic. The stereotypical computer science practitioner was a "lone ranger" type of individual who would go off to his (!) cubicle and hack code brilliantly, often creating code that could not be understood or maintained by other people. Other perceptions of the computer science practitioner include: