The ultimate goal of software products is to meet user needs and meet people's needs. It is precisely to meet people's needs that the software industry is constantly moving forward. For example, the new Algorithm (MPEG-1, MPEG-2, MPEG-4, H.264 ,......) And so on were invented to meet different needs. However (External motivation for Industry Development) But it is not the only driving force behind the development of software technology, because it cannot explain why the industry Programming Language Software platforms and frameworks will emerge one after another, and some may even give people the feeling of "re-inventing the wheel. How is it necessary to judge the new wheel? This is related to the other three driving forces that we want to focus on. The reason for this is that it is more closely related to our daily work.
I think the other three driving forces of software technology development are simplification, reuse, and beautification.(Internal motivation for Industry Development). The key to the necessity of "New Wheel" is to check whether there is anything better than "old wheel" in the three dimensions of simplification, reuse, and beautification. Note that these three driving forces areProgramPersonnel, rather than end users of software products. Because the end user only cares about the features and user experience of the product, and does not care about the product development process.
Simplification is the core and effective way to deal with increasingly complex and large-scale software, because "complex problems are always solved in a simple way" (derived from Master Adams). The key to simplification is not "shoot your head", but we need to use our insights to find the key path to solve the problem and to simplify it. However, apart from the long-term accumulation in a certain technical direction, the acquisition of insights requires us to constantly focus on the problems we face, insights have therefore become a scarce resource in the industry, and fewer people can really simplify software design and implementation.
There are various forms of simplification in the industry, in addition to methodologies (such as domain-driven development, object-oriented programming, design patterns, and decoupling ), it also uses different forms and levels of abstraction (for example, C programming language for assembly language, C ++ programming language for C programming language, various software platforms and frameworks ). Interestingly, these forms bring more complexity on the road to simplification (the complexity is conservative ?).
The benefits of reuse are well known, which allows us to achieve higher development efficiency and higher quality products by avoiding "Rebuilding (identical) Wheels. The driving force of reuse has led to the emergence of various open-source software platforms and frameworks in the industry, and has also made software companies dedicated to building general software platforms and frameworks for their own products for a long time. For complex software, competing products are actually a battle between software platforms and frameworks.
The format of reuse is not only to build software platforms and frameworks, but also to "syntactic Sugar" of various programming languages.
Simplicity is a kind of beauty, but beauty lies not only in simplicity, but also in the internal structure andCodeAs a result, beautification has become another driving force for the development of software technology. I think the beauty of software is: 1) to maintain a certain degree of flexibility to adapt to future software function changes caused by code changes. This adaptability actually requires the rationality of the internal structure of the software. 2) code can serve as a carrier and bridge for smooth communication between programmers. This is a requirement for the code expression, and indirectly points out that the purpose of programming is not only to provide APIs or implement software functions. The inadequacy of the beautification work is an important reason why many software development teams are deeply immersed in quality dilemmas.
In reality, the progress of software technology is actually a comprehensive result of the three driving forces of simplification, reuse and beautification, because the three are not completely orthogonal. For example, the simplified results may also be beautified, And the beautifying results may also be simplified. Reuse also simplifies us. In any case, one of them is usually the dominant motive for technological development.
Understanding the three driving forces will help us look at the development of software technology more rationally. At the same time, the author also wants to imply that we should begin with simplifying, reusing, and beautifying software development, instead, you can't stay on the "software can be used" page"This "original requirement. Otherwise, our behavior is not in line with the "trend" of software technology development!
recommended reading
《True Meaning of Software Design"
Driving your "workplace Brown Movement"
This article is from Li Yun's blog. Please keep this source:Http://blog.csdn.net/hzliyun/article/details/8252245.