Home >Backend Development >PHP Tutorial >The technical ideals of veteran programmers

The technical ideals of veteran programmers

WBOY
WBOYOriginal
2016-07-25 08:48:03837browse
When I was a child, my teacher asked me, what is your ideal? I said without thinking that I was a PHP engineer, so when I grew up, I became an engineer.
After working for so many years, I have been thinking about the meaning of the word engineer, and finally one day I suddenly realized that it is: using technology to improve the world.
So, in terms of software, what are the problems that need to be solved in the current world? There are some questions to think about:
Is the level of informatization in the entire world now high or low?
Are there enough programmers?
Is the productivity of the software industry too high or too low?
Are most software systems reliable?
I would like to share my understanding of these issues.
Although our lives have changed dramatically compared to ten years ago, for example, smart handheld devices have become very popular and wearable devices are also booming. Ten years ago, we used mobile phones to send and receive text messages or emails, and browse very simple and old-fashioned WAP pages. But now, most people's mobile phones have replaced computers and become an indispensable tool in daily life.
We use mobile phones to communicate, shop, enjoy movies and TV shows, read books, and play various games. Especially the rapidly developing mobile shopping and payment system allows us to buy our favorite items, order travel services and hotels, and call fast food on any occasion. , taxis, etc. Life is very beautiful. So, what is the level of informatization in the entire world?
I feel that it is just equivalent to the second grade of elementary school, and the level of informatization in the entire world is still seriously low. Counting from now on, 10 years ago, 10 years after, in these 20 years, personal information services are in a period of rapid development. This field is very eye-catching because it is closely related to everyone's life. However, there are other areas that are in great need of development, and that is the informatization of traditional industries.
Many traditional industries have implemented a certain degree of informatization before, but this informatization can only meet the basic requirements of their own operations. When it is connected with the trend of the entire society, it appears to be very backward and slow. For example, in the large system of online shopping, what ordinary users can see is the product display, price comparison, and ordering process, but the core link behind it is distribution and logistics.
When I was still in school, a teacher said this: The computer industry is very hot now and may be saturated. You don’t have to be engaged in this field of work. Looking back at this sentence now, I find it very interesting. It is really difficult for people to have the vision to see the future. When I joined Suning for training last year, Vice President Sun Weimin told me an example of a decision-making mistake that year. At the end of the 1990s, the company's statistics found that the annual sales volume of air conditioners across the country reached millions of units. It was scary. The industry may be saturated, and it is estimated that we need to find ways to expand other products. But now, the number of air conditioners nationwide is 700 million units. Even if there are no new additions at all, 70 million units will be sold every ten years. Why did you say this was saturated back then?
So when I look at the situation of programmers now, the supply is still in short supply, especially high-end programmers, who are very in demand. The background of this problem is that the informatization process of the whole society is accelerating, and the number of programmers in the past is far from keeping up with the demand.
So, how to solve this problem? On the one hand, we need to continue training to encourage more new people to come to this industry and continue to work seriously. There are also some other means that need to be considered.
I want to ask a question: Are there more people in the world who understand business or people who understand technology? Obviously, there are many more people who understand business. What is business? In fact, it is common sense in the industry and life experience.
For example, an experienced warehouse keeper may not have a high level of education and cannot understand the operating principles of the software, but he must be very familiar with the process of product outbound and inbound, including various approval processes and abnormal conditions. But programmers don't understand these. If we want to promote informatization in this field, we must find a combination point between the two. Programmers can learn business, and business personnel can also try to participate in the software development process. Currently, the former is more common, because programs Members are relatively young and learn things quickly. But in terms of overall social benefits, this is actually unfavorable, because programmers are a scarcer resource, and there are many traditional business personnel.
I have seen a question before: how to let business personnel better participate in the software development process. The fundamental solution to this problem is DSL (Domain Specific Language), and the core solution is the secondary development platform.
What are DSL and secondary development platforms? These two words sound very high-end, but in fact there are very commonly used things that fall into this category, such as Excel, which provides a variety of formulas, and VBA. Most people who use these things are not in the software industry. Excel is a very successful secondary development platform, and formulas and VBA can be considered DSL.
Many times these things are not intuitive enough. We can see some graphical programming languages, such as Scratch, which many primary school students now learn in interest classes. These things are relatively easy to learn. We can also do something similar. The abstraction allows business personnel to participate in graphical methods, such as process configuration and so on. Graphical things are best understood by non-technical people.
So, in order to promote the informatization of society, it is best to find ways to bring in business personnel from various industries to work together. The specific division of labor is roughly as follows: technical personnel and business personnel define DSL together, technical personnel are responsible for the implementation of the underlying platform of DSL, and business personnel are responsible for using it to build business models, business processes, and even business interfaces.
So, is the productivity of the software industry too high or too low? I think it's seriously low. What does it mean to be seriously low? If compared with the transformation of mechanical power, the current productivity level of the software industry is before the invention of the steam engine. In other words, productivity is far from being liberated. Most of the things we do will be mechanized in the future, and so many people will no longer be needed to do such repetitive work. Many people may be dissatisfied with this paragraph. Why is the work repeated? Can you tell me what I do that can be replaced by a machine?
Looking at it from another perspective, why do almost all laymen think software is expensive? Because labor costs are too high, they feel that making so many things shouldn't take so much time. Why is the contrast between the two sides so great?
I think the key point is that the abstraction level of most work is seriously insufficient. In addition, a large part of the efficiency loss is due to the imperfection of the programming platform or programming language, such as the web front-end.
From the first to the fourth generation of programming languages, each generation loses a certain amount of operating efficiency while greatly improving writing efficiency. With the development of hardware technology, software programming will inevitably become more and more extensive. The general trend is not to pay special attention to detail efficiency, as long as there is no order of magnitude performance loss.
So we can expect that more and more people will use some languages ​​or frameworks that are relatively inefficient, just to improve productivity per unit time. If you think about it from the perspective of bosses, you will also understand that improving the performance of the running machine is much cheaper than hiring a few more programmers. Therefore, judging from the overall trend, programmers who pursue detailed performance may be farther and farther away from their ideals, except in certain specific fields.
So, are most software systems reliable? Let me put it in another sentence: Dear programmer friends, if the quality of the house you live in is the same as the quality of the software you are working on, would you dare to live there? It feels like everyone is laughing. We all know what laughter means.
Then why is the quality of software systems not easily high? I think the main reason is that the process is not perfect. So why isn't it perfect? Needs change easily. Why is it easy to change? This is because both the programmers themselves and the demand side subconsciously believe that the things they make have low change costs.
Just think about it, why is no one building high buildings and changing the demand half way? Why is no one building the bridge and fixing half of the changes required? Even if the requirements are changed halfway through making clothes or halfway through getting a haircut, it will be considered unreasonable. But in the software field, this seems to have become a common phenomenon.
Because the implementation of the entire software system is virtual, invisible and intangible, and does not consume any materials, so from this perspective, it is of course easy to change. However, the architecture of a software system is actually no different from that of an entity. When making changes, many related factors must be considered. It is not just about looking at a small area in isolation. Of course, there will also be some changes that do not affect the overall situation. For example, if you're halfway through building a house, it's easier to change the color of the exterior walls than the size of the windows. If you want to make it too much, you may have to tear it down and start over.
I have seen many companies try to control quality by strengthening testing, but I personally feel that this method is not cost-effective and the results are not high. In order to respond well to demand changes, it is very important not to have the idea that the software will not change. Then, split, isolate, componentize, etc. from the architecture, and strive to achieve that even if it needs to be changed, it will only change. Changing the interior of a certain area will not affect other areas.
Many software companies, on the one hand, do not pay attention to the design and publicity of the architecture, which leads to many problems when making changes. Programmers cannot well understand the intention of the architecture. On the other hand, they ignore the control of the architecture throughout the process, thinking that the architecture is only the initial one. A static picture.
Any architectural solution requires a good control mechanism. No one who builds a building only cares about the design drawings and does not control the construction process. Architecture is actually strictly related to the construction process. Architecture is not a flat picture, but a three-dimensional thing that serves as the skeleton of the entire system project. If you can see the skeleton being gradually established and fleshed out during development, you will have a much greater grasp on the success of the entire system. This is the concept of architecture control during the development process. The specific implementation depends on different scenarios. .
So, future software development solutions will definitely develop in several directions:
High productivity, higher production efficiency per unit time, ordinary personnel can also participate
High controllability, the entire production process is more complete and reliable
Sometimes when you look at today’s children, you will feel that they are very happy, because when their generation grows up, they will not need to write programs like we do now. By then, programming has become a common skill that people are accustomed to. , just like people use Office software now, the so-called programming probably no longer requires typing code, but is graphical, just set a few parameters and it's done.
Receive LAMP Brothers original PHP tutorial CD/"Essential PHP in detail" for free. For details, please contact the official website customer service: http://www.lampbrother.net

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Email activationNext article:Email activation