Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!ames!ncar!gatech!mcnc!decvax!ima!think!fad From: fad@think.COM (Franklin A Davis) Newsgroups: comp.software-eng Subject: Re: What exactly is a software engineer ? Keywords: degree requirements,job definitions Message-ID: <40386@think.UUCP> Date: 9 May 89 22:53:55 GMT References: <497@dekalb.UUCP> Sender: news@think.UUCP Reply-To: fad@think.com (Franklin A Davis) Organization: Thinking Machines Corporation Lines: 73 In article <497@dekalb.UUCP> brian@dekalb.UUCP (Brian Charlton) writes: > I am a student... I read that soft- >ware engineering as a sub-discipline under computer science; but >I also read in an another news group that software engineers >were considered actual engineers (like AE,EE,ME ....). >What are the actual degree requirements of software engineers and also >what are their job definitions ? I'll quote a definition by Richard Fairley from "Software Engineering Concepts:" Software engineering is the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed and modified on time and within cost estimates. Dr. Fairley was a professor of mine and chairman of the faculty at the late Wang Institute of Graduate Studies when I studied for my Masters of Software Engineering. He's now head of the MSE program at George Mason University. Having studied (and argued about) the details of SE for a year in school, and then working for nearly two, I feel I am just beginning to become a good engineer. In my five years of work before my graduate studies I think I was more a programmer than a true engineer. Almost everyone who programs computers for a living is now referred to as a "software engineer." I applaud the goal of having all programmers practice real engineering, but I'm afraid the use of "software engineer" as a job title is often inflated. Since there are only a few schools in the world so far that grant degrees in software engineering it would be impractical to have specific SE degree requirements for jobs. Fortunately the real world is often a good teacher, so people with CS degrees (or no degree at all) become proficient engineers with experience. My own working definition is that a software engineer is knowledgable and disciplined about all the tasks involved in creating a *finished product*, including specification, planning, design, writing test plans, coding, debugging, testing, documenting, and maintaining. The actual effort in writing code that just "works" is a small fraction of the total. Few CS departments devote more than a semester (if that!) to software engineering. I'm not sure the undergraduate level is a good time to concentrate on it -- the Wang Institute required at least 2 years' experience, and I think that was beneficial. But, as you'll probably hear over and over if you continue reading this group, anyone entering the field should be required to have some basic knowledge of the engineering aspects of software product development. Sadly, as I interview recent grads from excellent schools, I find this is rarely the case. --Franklin Some references: The Mythical Man-Month, F. Brooks, Addison-Wesley 1975. (READ THIS FIRST! It's fun.) Software Engineering Concepts, R. Fairley, McGraw Hill 1985. Software Engineering: A Practitioner's Approach, R. Pressman, McGraw Hill 1987. (He says, "A set of techniques, collectively called 'software engineering,' has evolved...[to] deal with software as an engineered product that requires planning, analysis, design, implementation, testing, and maintenance.") franklin a davis Thinking Machines Corp. Cambridge, MA 02142 617-876-1111 {ames, harvard, mit-eddie, uunet}!think!fad