Software development is far from a "scientific"

Source: Internet
Author: User

Many universities include software development-related majors in engineering, which gives people the illusion that software development is also an engineering discipline, just like civil engineering and power machinery.

However, this is fundamentally wrong. There are indeed scientific laws behind civil buildings and power machinery, while there is basically nothing behind software development, far from being a "scientific ".

Therefore, the practical significance of "Software Engineering" is far inferior to that of "civil engineering" and "Power Engineering ".


Each person may have different definitions of "science", but here we can make a simplified definition:

When there is a group of endless laws under certain conditions to support, the corresponding knowledge can be called science, and science itself can be embodied as a certainty.

For example, Newton's Law of mechanics cannot be violated at low speeds. It is an iron theory, and the knowledge based on this can become science.


From this perspective, we will find that in the software world, we cannot find the "Newton's Law of Mechanics" of the Software. Some are just a lot of noise, disputes, and uncertainty.


Object-oriented should be the most accepted analysis and design method, but even so Eric Raymond and Linus will continue to criticize it.


Eric Raymond talks about the modularization principle and the defects of the bonding layer and object-oriented Meng Yan


C ++ is useless


To put it simply: Eric Raymond thinks OO will lead to excessive layering. Linus thinks that object-oriented solves some small problems and they disagree with OO.

Can you find someone so critical to Newton's Law?


However, Eric Raymond's point of view is beyond your control. Unless you think that Eric Raymond and Linus have something wrong, you can criticize and disagree, but you cannot ignore their voice.

Their voice must be based on their experiences and represent specific reality, while reality itself represents rationality.


In addition to object orientation, there are more ideas and ideas, which leads to the world of software being numerous and uncertain. Most people in the industry suffer from nouns.

Let's take a look at the number of people who can precisely distinguish the differences between these words:

Framework, Architecture, Object Oriented Analysis and Design, Design Pattern, Design by Contract ), test Driven Development, Aspect Oriented Programming, Model Driven Architecture, and Component-Based Development ), agile Software Development, Meta programming, Service-oriented architecture, Feature-oriented programming ...... (Programming I don't know how many languages are there, but I thought, do you really need these languages in the world ?)


As long as these different methods (concepts or languages) exist, even if they conflict with each other, they must have a reasonable foundation. Here, we have no intention to analyze their advantages and disadvantages,

I just want to say: Where is the conclusion of software development? What should we determine based on? Is that suitable? Is it true that there are different opinions in the field of engineering?

If all of this can only be returned to the client, there will be endless disputes and software development will not be a science.


In such a situation, because anyone may be wrong, pragmatic programmers must choose to trust themselves more than others, so that they are afraid that others will come to the fore.

Believe in fact and logic-based analysis, even if it is wrong, it can become a nutrient for progress; believe in others, it will not make progress if it is wrong, it is also someone else's right, what do you mean.

Arrogant programmers can challenge the role of "Newton.


Mr. Yang Changji once said two sentences, which are particularly interesting and fit with the software development scenario. Therefore, he put it here as the end:

As far as the vanity is concerned, the mountains and rivers and the Earth have no choice but to embrace me.

In the past, there was no evidence, but only the current data.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.