Recently I wrote the graduation thesis, what I want to think about it, and something is also mixed. Although I haven't graduated yet, some ideas are too idealized or too naive, but I always feel that since I have the idea or write it, even if it is not used to use it.
One of the problems that have been thinking recently is that the software is developing? What is the most important thing for software development? Is it technology? Perhaps because I am scientifically management, many things will not be seen from the perspective of technology.
Search online, I found that people think that the most important person is really a lot. Many people complain that the company's managers do not understand technology, causing technical staff to have no position in the company. There are also many people who think that China's software companies are not competitive internationally, why is China's software industry that is not going, the key is that China has no core technology. As for the software company, it seems to be considerable. The first standard when recruiting employees is technology. The so-called work experience is to see the technique of the employer. Is it skilled in the technique. Is it possible to work after recruit? Training. Now the company's complaints about computer professional college students are mainly college students into the game. It is not good to play the foundation. It is too floating. What technology is learning, but what technology is not fine, the simplest development technology is not equal, and the bottom is Still technology. In this way, everyone is quite important to the technology, why is China's software industry still not?
After all, I am a student in the school, so I am not qualified to say where the real cause of China's software industry is not in, even if there is no qualification to evaluate the Chinese software industry is still a boom or not. However, for technology, I think technology is really important. Because software development is originally a fair technical content, any company that does not pay attention to technology will not develop. And look at the world, the most widely used technologies are basically all the first-class IT big companies. The programmers under the management of the boss do not understand the skills of the program are quite pitiful, and the day is as good as the year, but the technical level has risen, but the salary is also poor, even if I get more, I can only use it to buy some expensive The health products are supplemented with physical strength, and remaining is still poor. The programmer is so excited, the company is still losing, it seems that the boss who doesn't understand the technology is fierce!
So I found such a problem: technology is very important, everyone is not to pay attention to technology, and everyone is also very hard to work, why is the technology of the Chinese software industry? It seems that software development is not a so easy question, and technology is never a silver bomb developed. Of course, "people" said that there is no silver bomb that has not been completely solved by software development. But I think at least the copper bomb that eases all kinds of problems! Just, I am afraid technology can't play this role.
Let me talk about what is the most important issue in software development. I don't want to pull what social problems, the nation is inferior, because this is not a big meaning. I just think that the Chinese software industry seems to pull the technology from the original supreme temple, so everyone can look at the problem.
First of all, why do those technical geniuses can't save China's software companies? I think the software company is a strong technical nature, but in the final analysis is the company, and should solve the problem from the perspective of management. While management, it is also necessary to take into account the special rate of the industry. If a manager does not grasp if a manager is in its own potential, he is not a qualified manager. From this perspective, it does not understand the manager who speaks in the foregoing!
China's software practitioners are too highlighted: the programmer does not pursue and learn new technologies, doing physical and mental exhaustion; software companies expect to bring some technical genius to make the company's work efficiency can have immediate improvement. The more you must return, the more you pursue technology, your technology is slower, even stagnant. The reason is very simple, and I have to eat a bit. Software development is a product production, you must first adjust market management and production management or even otherwise issues, you can appreciate the cost of technology. If you only treat technology as a life-saving straw, as long as the high-tech person, other don't care, the result is of course not ideal. For example, the current programmer works great, work overtime every day, of course, the reason is that some black heart bosses deliberately shorten the project's completion time in order to extract the programmer, but the development efficiency is a major reason. . The development efficiency is mainly due to the large number of power of the programmer, but was wasted on the error, but wasting on the old code, this experienced programmer should have a deep understanding. . So how to solve this problem? Take existing programmers to recruit better programmers? Doing so even if there is an effect is also minimal, because better programmers also make mistakes. Moreover, there are many time, the high-tech programmers are not enough to defeat, and the more decent skills are easier, and the two high-level programmers may be out of the level and other programmers. The code that caused the written code is too deep. I don't know how to affect communication. I have seen a high-level C programmer online because of the content of the Boost library in the code, the company has to ask him to see him High saving. Third, high-level programmers' techniques may not use or use it in the project. Of course, this is not to say high-level programmers, the key is that this problem is not solved by technology. To reduce programmers, the time to waste (of course, it is impossible), can be implemented in two ways, one is to reduce the incidence of errors, and the other is to improve the inclination efficiency. To do this, you must strengthen your needs, analysis, design, and testing, and ensure the quality of the code. In other words, it is to do software projects.
Here I don't want to explore the software engineering is too broad, and now many companies do not have a good implementation of software engineering, and then discuss the topics of what social problems and the topic of national inferior roots. However, a perfect software engineering company may have no capacity to implement, is there no ability to do with some small software engineering practices? Take the programmer, can you write a test case before writing a code? Can you reimport your code at any time until you "implement and only once"? Can you perform a complete test to ensure that the code is no problem? It is not difficult to do this, I believe that the first line of programmers have the ability to do, but if there is this consciousness, it is difficult to say, after all, these things are very locking, and there is no technical discussion, but these dirty lives It is most effective to improve development efficiency, far more effective than those so-called technologies. So I think if you want to be a qualified programmer, the most critical is not how much technology do you have, but you don't have a fool to do this seems to have a dirty trouble.
Also for the software company, can you give programmers a scientific and reasonable period? To extract the programmer slowly, once the programmer is squeezed by you, you will not be squee. Programmers are also people, long-term continuous work will reduce programmers and response speeds, and will also increase the error rate. The management scholars have done research. When a mental worker has the highest efficiency, he began to work within three to five hours, and one day can only work eight hours (three to five hours in the afternoon), work 5 to six Day, you can build a maximum efficiency of workers. If you have been working overtime for a long time, the programmer's work in the weekly work is very likely not to work only 40 hours a week. This is a thing that accompanying the lady and the soldier, let alone the programmer itself wants to squeeze a lot of time to learn new technology. There is also a recruitment for programmers (because of habits, I will collect all developers as programmers). I think the programmer can be divided into four: unqualified programmers, ordinary programmers, excellent programmers and tip programmers, these four people account for 35%, 40%, 20% respectively 5% (data is to make trouble, but it feels similar to the true situation). Unqualified programmers have no technical skills, no learning ability, three do not work consciousness, this person should be opened as soon as possible. The quantity of the tip of the tip is very small. It is a baby. As long as it is raised, it will never run, but the vast majority will have a Lord before going to school. As for the other two, you should consider it. The current company wants to find excellent programmers. When recruiting only considerations, there are two or three years of experience in the project, and the graduates of the school, and indecent graduates are mainly concentrated in the school. The company's Xiang Yan's thirst can understand, but I think this is another kind of researry to make the technology on the management. From the perspective of managing psychology, organizational behavior and human resource management, a team should have a certain composition structure, which should be composed of a certain proportion of excellent talents and more relatively poor, and qualified personnel should be generally 1: 2, such a team is often the most harmonious and the highest efficiency. Because excellent programmers are more arrogant, their technology makes them vulnerable to other programmers in ordinary programmers, which is a satisfaction, and this satisfaction will make them More powerful work work. The ordinary programmers are relatively inferior to outstanding programmers, but they can work with excellent programmers in such a team, they will actively learn from outstanding programmers and bear some outstanding programmers do not want to do. A low technical content. The foregoing discussed, which is most important to the project with a low technical content. Therefore, in such a team, team members will be more harmonious, and team efficiency will be higher. For example, the national team is all the elites of the hundred miles, but it can only be a temporary patchwork team, only to participate in some short-term training, play some short-term games. If a team has to have a long-term ability to fight, it can only be three, four elites lead a group of unknown hunt clubs. Therefore, companies should not only stare at the students of the school or work experience in the recruitment workers, but the number of people should be left to people who have graduated or work experience in ordinary schools. Of course, you must never make unqualified people.
Then, as thinking according to the current company, what is the excellent programmer who experienced the graduation work experienced? I don't talk about the problem of rising costs. Excellent programmers want to stand out in the crowd, but because the competitors are too strong, this idea can only be empty for most people, which is undoubtedly a blow to the famous college graduates. Moreover, the graduates of the famous school have been smooth, and they stand in the top of the crowd. They are not as opposed to the failure of the college entrance examination, and their anti-strike capability is relatively weak. And everyone is a famous school, no one is notiety. When you do a project, you will also grab high-tech work. If you are divided into the low-tech work, you will be unhappy, and this low-tech live is really a waste of excellent programmers. . Even if there is a few people who are willing to take on the low-tech dirty lives, it is also easy to think that it is taking a grade hug and suffering. And these people are extremely smart. Once they are hooked, the consequences are unimaginable, and they will naturally be scattered. And you don't expect to warn them to hear with expelation, because they can not find new jobs with their talent. I believe that many managers have the experience of catastrophe. In the absence of a bad effect. Unless you have enough more excellent people to press them, they will be very perfect. Microsoft has such an ability, what about other companies? Some companies will say that they can use it immediately, and it is necessary to improve efficiency for companies. Then I can tell you unless you are recruited a genius in genius, you may have an immediate effect. Otherwise, no matter whether you recruit it just to make up for the lack of people, it is still desirable that new people can change to the company, and you should not violate the rate management of human resources. Besides, I just want to change the work efficiency of the entire company by tricking a few technologies, and there is no one childish, "people" said that software development is simply increased, and the efficiency cannot be improved. In short, it is certain that the technology cannot form a good team.
Of course, if the outstanding programmers in the entire team don't work, the strength of the entire team will fall, and the power of outstanding programmers is too small, and it is easy to generate a positive impact on ordinary programmers, and it is easy to crowded with ordinary programmers. Therefore, the proportion of 1: 2 is best.
The last topic is still back to technology. Core technology is really important for the competitiveness of enterprises. Then, the Indian software industry is much stronger than us. Are their software companies have their core technologies? This question is not qualified to answer my qualifications, but it can be seen from some people's posts. The Indian write code level is not very good. It can be seen that Indian technology is not much better than us. Why is the people's software industry so developed? I think the most important thing is to manage! This question is here to hit this.
Said so much, then how do you improve your company's technology? After all, there is any core technology that companies' own core technology. For this problem, I can't answer the specific answer. After all, I am just a student at school. But if your programmer can keep the normal schedule, if your project does not need to always be a low-level error, if your team can get along with you and work efficiently, you will Ability to implement further software engineering. Of course, your company is quite mature in software engineering. When you use an outgoing technology development project, you have been invested in technology research.
So I think our software practitioners, whether the programmer or the project manager or the boss, should think about this problem. What is software development? What is the most important thing in software development? Is it technique? Still something else more important? Do you have any help from your own?