Software development is a wonderful industry.
You can say that it is complicated, but at the same time, there are people who can develop software as long as they receive some training.
You can also say that it is simple, but according to statistics, more than half of the world's software projects will end with failures.
The most representative view that emphasizes software complexity comes from the Mythical man-month:
BrooksComplexity is the fundamental property of software, not accidental.
The emphasis on software simplicity is common in some domesticMISDevelopment companies and outsourcing companies:
Most of the time, they will increase the weight of the demand analysis (Business Analysis) very high, while the design encoding location is very low.
This kind of myth is not hard to break, but before that, we need to examine the characteristics of software.
Software itself is a kind of Fixed Thinking. It must have both the characteristics of thinking and the characteristics of things that the thinking carries.
This is a bit difficult to understand:
Thinking is composed of concepts and logic. Therefore, software must be composed of concepts and logic.---This is the characteristic of thinking.
When thinking is combined with mathematics, thinking has the characteristics of mathematics. When thinking is combined with business logic, thinking has the characteristics of business logic.---This is the characteristic of things carried by thinking.
In this article, we can understand:
- Anyone can think, so as long as it is not a neurology patient, you can do software (good or bad for the time being), of course you have to crossProgramming Language.
- The complexity of thinking mainly depends onHow manyAndDepthTwo dimensions. Corresponding to software,DepthIt depends on what the thinking carries.How manyIt depends on the scale. For example: GraphicsAlgorithmThe depth is deeper than the workflow;100Ten thousand lines of project management software and10What is the main difference between the ten thousand lines of project management software.
Many times, many people talk about excessive attention when talking about simplicity or complexity."Depth"Ignore"How many.
For example, graphic algorithms,TTSAlgorithms, performance optimization, and reliability optimization are rarely considered simple. However, even for large-scale project management software, many people still think it is relatively simple.---Because this can be simply pieced togetherProgramPersonnel's work.
From the results, this recognition is disastrous.
Typical Example: a group of peopleCodeNo one dares to do it. When it is not difficult to repair, you can only pray that there should be no problems.
Just as if the city walls are strong enough, the city can only be attacked by human life in ancient times. The Spam code that involves commercial interests can only be filled in by month. At this time, the spam code is like a black hole, consuming manpower and consuming profit space.
The ending can be described as: programmers have no hope, and the company has no future.
This is the inevitable result of putting the business analysis too high and the design code too low.
So, "I think the software on Scale (tentative2010 thousand rows) is simple. "It seems reasonable, but in fact it is very dangerous.