Comparing software engineering and related fields

From Academic Kids

The relationships between software engineering and the fields of programming, computer science, and traditional engineering have been debated for decades. Software engineering resembles all of these fields, but important distinctions exist.

Comparing programming

Both programmers and software engineers work on all sizes of projects: small and large.

Programmers emphasize the task of writing code to produce working software applications, independent of budget and schedule.

Software engineering tries to encompass software projects more completely, including budget and schedule; fits in a large business context with relationships to marketing, sales, production, installation, training, support, and operations; and methods to construct large applications that individual programmers cannot write alone.

Issue Software Engineering Programming
Scope Relates programming to the final application Emphasizes programming, independent of the application
Business context Collaborate with others in business Emphasizes individual work
Team size Individuals to large teams Emphasizes individuals
Number of Practitioners in U.S. 680,000 530,000

Comparing computer science

Many compare software engineering to computer science and information science like they compare traditional engineering to physics and chemistry.

About half of all software engineers earn computer science degrees. Yet on the job, practitioners do applied software engineering, which differs from doing theoretical computer science.

Issue Software Engineering Computer Science
Ideal Constructing software applications for real-world use for today Finding eternal truths about problems and algorithms for posterity
Results Working applications (like office suites and video games) that deliver value to users. Computational complexity, and correctness of algorithms (like Shell sort) and analysis of problems (like the traveling salesman problem)
Budgets and Schedules Projects (like upgrading an office suite) have fixed budgets and schedules Projects (like solving P=NP?) have open-ended budgets and schedules
Change Applications evolve as user needs and expectations evolve, and as SE technologies and practices evolve. When computer science problems are solved, the solution will never change
Additional Skills Domain knowledge Mathematics
Notable Educators and Researchers Barry Boehm, Fred Brooks, and David Parnas Edsger Dijkstra, Donald Knuth, and Alan Turing
Notable Practitioners Dan Bricklin, Steve McConnell Not applicable
Practitioners in U.S. 680,000 25,000
Practitioners in Rest of World 1,400,000? 50,000?

Comparing traditional engineering

Software engineers aspire to build low-cost, reliable, safe products; much like traditional engineers do. Software engineers borrow many metaphors and techniques from traditional engineering disciplines, including requirements analysis, quality control, and project management techniques. Traditional engineers also borrow many tools and practices from software engineers. Yet, there are also many differences between SE and TE.

In the U.S., there are about 10 times as many software engineers as computer engineers. The software engineering community is about 60% as large as the traditional engineering community.

Issue Software Engineering Traditional Engineering
Foundations Based on computer science, information science, and discrete math. Based on physics, chemistry, and calculus.
Cost Compilers and computers are cheap, so software engineering and consulting are often more than half of the cost of a project. Minor software engineering cost-overruns can adversely affect the total project cost. Construction and manufacturing costs are high, so traditional engineering may only be 15% of the cost of a project. Major engineering cost overruns may not affect the total project cost.
Replication Replication (copying CDs or downloading files) is trivial. Most development effort goes into building new (unproven) or changing old designs and adding features. Most development effort goes into replicating proven designs through manufacturing or construction.
Innovation Software engineers often apply new and untested elements in software projects. Traditional engineers often apply known and tested principles, and limit the untested innovations that goes into each product.
Duration Software engineers emphasize projects that will live for years or decades. Traditional engineers may solve long-ranged problems (bridges and dams) that endure for centuries.
Management Status Few software engineers manage anyone, so they are rarely viewed as managers, except by themselves. Many traditional engineers manage construction, manufacturing, or maintenance crews, so all engineers are widely viewed as managers.
Blame Software engineers must blame themselves for project problems. Traditional engineers can often blame construction, manufacturing, or maintenance crews for project problems.
Practitioners in U.S. 611,900 software engineers 1,157,020 total engineers
67,180 computer engineers
Age Software engineering is about 50 years old. Civil engineering is thousands of years old.
Title Regulations Software engineers are typically self-appointed. A computer science degree is common but not at all a formal requirement. In many jurisdictions it is illegal to call yourself an engineer without specific formal education and/or accreditation by governmental or engineering association bodies.
Analysis Methodology Methods for formally verifying correctness are developed in computer science, but they are rarely used by software engineers. The issue remains controversial. Traditional engineering disciplines are typically based on a closed system theory and can in theory prove formal correctness of a design.
This can be limited in practice e.g. by lack of computing power or input data.
Synthesis Methodology SE struggles to synthesize (build to order) a result according to requirements. TE has been refined over ages to provide exactly this, which is embodied in the closed system theories of traditional engineering fields
Research during Projects Software engineering is often busy with researching the unknown (e.g. to derive an algorithm) right in the middle of a project. Traditional engineering separates this activities. A project is supposed to apply research results in known or new clever ways to build the desired result.
Codified Best Practice Software engineering has just recently started to codify and teach best practice in the form of design patterns. Thousands of years of best practice experience handed over from generation to generation via a field's literature, standards, rules and regulations.

Academic Kids Menu

  • Art and Cultures
    • Art (
    • Architecture (
    • Cultures (
    • Music (
    • Musical Instruments (
  • Biographies (
  • Clipart (
  • Geography (
    • Countries of the World (
    • Maps (
    • Flags (
    • Continents (
  • History (
    • Ancient Civilizations (
    • Industrial Revolution (
    • Middle Ages (
    • Prehistory (
    • Renaissance (
    • Timelines (
    • United States (
    • Wars (
    • World History (
  • Human Body (
  • Mathematics (
  • Reference (
  • Science (
    • Animals (
    • Aviation (
    • Dinosaurs (
    • Earth (
    • Inventions (
    • Physical Science (
    • Plants (
    • Scientists (
  • Social Studies (
    • Anthropology (
    • Economics (
    • Government (
    • Religion (
    • Holidays (
  • Space and Astronomy
    • Solar System (
    • Planets (
  • Sports (
  • Timelines (
  • Weather (
  • US States (


  • Home Page (
  • Contact Us (

  • Clip Art (
Personal tools