People In Computer Science
Randy PauschCaitlin Kelleher
Nicholas Negroponte
Mary Lou Jepson
(just interesting folks I find when surfing)
Why Software Engineering?
Some History
There are many kinds of computing degree programs. Here is a list of the more common ones.
- Computer Science
- Computer Engineering
- Information Systems
- Information Technology
- Software Engineering
Each has a different focus or perspective.
Early on - 60s, 70s, and into the 80s - you generally saw
- Computer Science
- Electrical Engineering
- Information Systems
During the 90s, we began to see programs in
- Computer Engineering
- Software Engineering
Definitions of Software Engineering
From Wikipedia:
... discipline of designing, creating, and maintaining software by applying technologies and practices from computer science, project management, engineering, application domains and other fields.
From Computing Curricula 2005:
... the discipline of developing and maintaining software systems that behave reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that customers have defined for them.
Using the term "Software Engineer"
There are problems with using the word “engineer” because in many places the use of the word is regulated by law.
Many times it is used as a job title by anyone who does software development.
Brief Look at Computing and Software Development
Computer programs are very complex creations often containing millions of lines of source code, developed over a period of many years, and worked on by hundreds or or even thousands of developers.
Safety-Critical Systems are becoming more prominent. These are systems where errors can cause injury or even death.
Computers are everywhere, in all sorts of devices, generally invisible to the users. This trend is known as Ubiquitous Computing or Pervasive Computing.
According to Frederick Brooks, Jr. in The Mythical Man-Month, when speaking of computer programming:
“First, one must perform perfectly. The computer resembles the magic of legend… If one character, one pause, of the incantation is not strictly in proper form, the magic doesn’t work. Human beings are not accustomed to being perfect, and few areas of human activities demand it. Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.”
How is Software Engineering Different From Computer Science?
According to Software Engineering 2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering
“(software engineering) seeks to integrate the principles of mathematics and computer science with the engineering practices developed to produce tangible, physical artifacts. Drawing on computing and mathematics as foundations, software engineering seeks to develop systematic models and reliable techniques for producing high-quality software;”
Famous Software Failures
To appreciate the importance of software engineering, we have to talk about software failures, things that have gone wrong in the past, and problems that still exist. How else can we improve than by looking at our mistakes? A place to start might be the Software Engineering Code of Ethics and Professional Practice or someone's site containing a list of Software Engineering Proverbs.
In the mid-to-late 80s, serious design errors in a radiation therapy machined called the Therac-25, compounded by users not understanding data entry procedures, caused several patients to receive massive overdoses of radiation. Several patients died. Read the IEEE Computer article An Investigation of the Therac-25 Accicents.
In a similar, more recent incident at the National Cancer Institute in the country of Panama, patients were again given massive overdoses of radiation. And once again, many died. Actually, the death toll in Panama was much greater than with the Therac-25. Read the article at Baseline.com titled Why Quality Matters.
The IEEE Spectrum, Sep 05 issue has a good article called Why Software Fails. I think that you have to register to see articles on their site. Or you can google for it.
Wired.com has an article on History's Worst Software Bugs. At least one of the items mentioned (the one discussing a Soviet gas pipeline) appears to be a myth.
Now on to more uplifting material...
What are my career prospects?
According to a Money Magazine report, Software Engineering is the top job in the country. The detailed article discusses the 50 Best Jobs in America.
Check out career profiles of software engineers at Graduating Engineer and Computer Careers Online.
According to the Bureau of Labor Statistcs, "Computer software engineers are projected to be one of the fastest-growing occupations from 2004 to 2014." If you are concerned about the effect of offshoring on your career prospects, consider this quote from a report done by the ACM Job Migration Task Force:
One might wonder whether IT is still a good career choice for students and workers in countries that offshore software and IT services work. Despite all the publicity in the United States about jobs being lost to India and China, the size of the IT employment market in the United States today is higher than it was at the height of the dot-com boom.
You really should read the report to appreciate and understand the global job market. While there is no guarantee that your job won't be outsourced some day, none of us have that guarentee. However, good safeguards for your career are to continually advance your skills and to be very good at what you do.