It is craft, archeology, fire fighting, sociology, and a host of other pursuits. It is amateurish in some quarters, quasi-professional in others. It is as many different things as there are different people programming. Engineering vs. Science With only about 40 percent of software developers holding computer science degrees and practically none holding degrees in software engineering, we shouldn't be surprised to find people confused about the difference between software engineering and computer science. The distinction between science and engineering in software is the same as the distinction in any other field.
Scientists learn what is true, how to test hypotheses, and how to extend knowledge in their fields.
Engineers learn what is true, what is useful, and how to apply well-understood knowledge to solve practical problems. Scientists must keep up to date with the latest research. Engineers must be familiar with knowledge that has already proved to be reliable and effective. If you are doing science, you can afford to be narrow and specialized. If you are doing engineering, you need a broad understanding of all the factors that affect the product you are designing.