Source: innos mobile Internet Innovation Club Article address: Click to open the link
Although there are only four of his articles, it seems to me that they are the essence of what we have read. Here I will only repost one of them to help readers!
"A few days ago, I posted a log about my thoughts on instructor Yang's blog, Huawei training, and communication with my employees, which attracted the attention and sharing of many colleagues and friends, thank you. Some students sent an email and asked a few questions about the direction and learning, because the content of the question is quite common and they plan to write an article, you can also discuss and share your views.
1. Software relies on eating young meals, which are Chinese characteristics
1. If I have eaten pork, I have never seen a pig run. The software is not just code writing.
Let's take a look at the industry data: in the software industry, the productivity of the industrial team is only 1000 lines of code/year, of course, this is a unit of people. Many college students write code in their homework and exams at a rate of over 1000 million lines/year. I just mentioned the small project I completed in one hour, there are also nearly 200 lines of code. According to this order of magnitude, 1000 lines of code only work a day.
You don't have to be surprised or doubt that the above data is a real situation (see The Mythical man-month). Why is there such a big contrast? Because we are talking about programs and software, we have to look at the gap between our daily work and the real production of the software industry.
What our students do on weekdays is called a program. It is complete and can be run on the system platform developed by the author. However, such things have not yet reached the practical, commercial, and industrial heights. There are two ways to turn programs into more useful, but more cost-effective products.
One is to turn programs into programming products, which can be run, tested, repaired, and extended by anyone. It can run on multiple operating system platforms for multiple sets of data. This requires that the program be written in a universally accepted style, especially the input range and form should be widely applied to a variety of reasonable basic algorithms, followed by a thorough test of the program, to ensure its robustness and reliability, this means that a detailed test case library must be prepared, run, and documented (the testing factor is not taken into account in most programming ), used to detect the input edge values and ranges. Finally, we need to complete the documentation so that everyone can use, fix, and expand. (I have seen many students write programs and do not do well with comments, including me ).
The other is to turn a program into a component unit in a programming system. It is required to be a set of programs that can collaborate with each other in functions, have a standard format, and can be used to assemble and build the entire system. This requires the program to meet certain requirements, so that the input and output are syntactically consistent with the precisely defined interface, at the same time, the program should also comply with the previously set resource restrictions-memory space, input and output devices, computer time, and so on. Finally, the test problem is that the program must be tested with any combination that can be imagined together with other component units, and the testing routine will become wider and wider as the combination increases, in addition, unexpected interactions produce many imperceptible bugs, and testing is a very time-consuming process.
In fact, the real production required by the software industry is a combination of the above two types, namely, programming system products. empirical data shows that the cost of such results is nine times that of the initial program, however, it is the only product that is truly useful and the goal of most System Development and Project R & D.
In the previous log, it was written that Chinese Contemporary College Students generally do not meet the needs of society. In the software industry, what they do in schools is at the lowest level-that is, the implementation of programs, even the requirements for program implementation are far from the actual requirements of social enterprises. In the eyes of everyone, it is rare to meet the following requirements:
1) The Code of a single function subfunction cannot exceed 50 rows, the number of parameters cannot exceed 7, and the depth of program nesting cannot exceed 7 layers;
2) The Circle complexity must be less than 15, and the modification or expansion of the program cannot increase the original circle complexity;
3) the code is not written, the document goes first, and the comments must be written in a fixed unified paradigm;
4) Various programming style specifications: relational computation must have Constants on the left and variables on the right. Complex computation expressions are not allowed. If necessary, parentheses are added instead of priorities, the devil's number must be replaced by a macro definition;
5) local variables must be initially defined to prevent unnecessary memory operations and memory operations from considering exception handling;
......
There are many other requirements that can be listed, and these are only the content that should be remembered and paid attention to before the new employee joins the company, in the course of work, there are also function Weight Evaluation, test case writing (not limited to testers, R & D personnel also need to do their own test cases), cyclic iterative agile development, and so on, the requirements and links that cannot be met in various schools are common in the company.
2. Only in China can we hear the conclusion that "software depends on eating young meals". What we say most is not industry experts, but students and outsiders who do not know the truth.
I did a small survey a few days ago and asked how many people think that "software depends on eating young meals". As a result, nearly 80% of them raised their hands. Most people think that software relies on young people because they think that software is designed to write code, write code all night, and write code with desperate efforts.
From the perspective of software industry output, the above shows that coding and writing programs are only the bottom-layer and most basic work in the software industry. From the perspective of nature, the software is actually using computer simulation of human computing and logic capabilities, so as to quickly obtain and display the results of thinking in various forms. All software activities include a fundamental task-building a complex conceptual structure that constitutes an abstract software entity, and a secondary task-using programming languages to express these abstract entities, map space and time constraints to machine languages.
As mentioned in the previous log, the complete software design involves three steps: requirement analysis, system design, and coding implementation. The corresponding positions are system analysts, software architects, and programmers. Comparing software design to war, programmers are like small soldiers, implementing secondary tasks in software, and implementing fundamental tasks, it is in the hands of system analysts, software architects, project managers, and generals.
System analysts, software architects, and project managers are senior programmers, or all of them are classified as software engineers, just as marshal and General have to go through this process first, the transformation in this process is not reachable overnight. The most lacking in China is software engineers with over 10 years of experience. Lei Jun, Chairman of Kingsoft Software, said: "In India, including in the United States, the project manager I met was 30 or 40 years old, they are 'getting older and value', and some people even have over 20 years of industry experience." As a matter of fact, software and hardware are the old and more valuable. Of course, this refers to the high-level form of programmers, not programmers.
However, it is not necessarily that every soldier can develop above. It is not enough to rely on some hands and feet to fight for this thing. Just as programmers are immersed in learning new development tools and researching program code, while sweating and staying up late to write code, I am panic about my career direction after the age of 30, but I do not know how to gradually improve my vision, thinking and experience.
The previous log also discussed the importance of management and Psychological knowledge to R & D personnel. Its role to software practitioners is more obvious, which is determined by the fundamental task of software, it is also the angle and capability required to solve the inherent property difficulties of software-complexity, consistency, variability and invisibility. The higher the software development, the higher the requirement on the comprehensive quality of the practitioners, and the more valuable the practitioners are.
A few days ago, I heard from my friends that the application-layer software has no prospects. because of its low technical threshold, I could not grasp the core competitiveness. I thought about it later, not being uncompetitive, only application layer software is oriented to customer needs. Its core competitiveness lies not in technical implementation, but in requirement analysis and psychological grasp.
Let's give two simple examples. For example, in the recent hot mini games-Plants vs. Zombies and Angry Birds, the market value of the two has already exceeded the $1 billion mark. From a technical point of view alone, it is not difficult to achieve it. However, if there is a slight psychological knowledge base, we will find that the two have a distinct common feature, that is, using a comparison technique, two unrelated things are forcibly associated in some way (plants and botnets, birds, and green pig). The game model also involves the creation of motivations and capabilities at different levels, further deepen players' preferences and even fanatics. The success of these two games relies not on technical advantages, but on the GRASP and Application of Psychological knowledge. Such thinking and achievements cannot be achieved by writing code and using tools alone.
The charm of software lies in its creativity, non-repetition, and pure thinking activities, but its difficulties are also the necessity for pursuing perfection, and the complexity of setting goals and thinking logic by others, the solution to these problems is not only stored in a specific book, but involves management, psychology, logic, philosophy, and other aspects of knowledge, it happens that Chinese education separates software from this kind of knowledge in two opposite ways, and it is no wonder that there will be such a disruptive form of Chinese software industry.
As a matter of fact, many enterprises, experts, and practitioners have realized that (such as Huawei software training has been conducting management training for a considerable amount of time ), baidu or Google searched for the phrase "software relies on eating young meals", and basically all came out with a negative argument. The most widely circulated comments are students and layers, who do not mention them. However, students are future employees in the industry, can the Chinese Software Industry stay in a vicious circle?
It should also be said that this is a normal thing. People tend to trust the opinions of people around them when they are uncertain. The knowledge in the school cannot provide a wider perspective. The students cannot understand it clearly, and it is no wonder that they will listen to the wind or rain.
II. Introduction to software learning and recommendation books
After thinking about the learning efficiency and programming language learning skills, I decided to start with the Recommendation book. After all, the descriptions in many books are more systematic, it is inevitable that I write logs or face-to-face descriptions are concise and missing.
First, let's talk about efficient learning, that is, Charles harnell's (1) and (2) of the 24 most amazing lessons in the world. This is a successful book, we talk about how to be human, and then how to do things. To sum up, we define the four steps of desire, Understanding Information, concentration, and practice. "Learning" is one of the ways to do things, it is also included in the scope described in this book.
Next, you can try to read some management books, such as Peter Drucker's "effective managers", Stephen Covey's "Seven Habits of efficient people", and "important things first". Some school girls asked me about the timing skills, and their principles and methods are in the knowledge of management.
In the past, people had a wrong perception that management is the knowledge required by leaders. In fact, as druke said: "Everyone is their own manager." management is the primary research of management, or we have to "cultivate ourselves together" to manage ourselves ".
Let's talk about software learning. Here we will talk about C, Java, and MATLAB. It is intended for beginners or students who already have some basics.
C has the advantage of direct operations on pointers or memory space, and is suitable for underlying drivers and hardware-related operations, the recommended book is "high quality programming guide-C ++/C Language", which is a designated learning material for Huawei training. This book is suitable for students who have learned C language and want to further deepen their understanding and application of C. For those who want to learn more deeply, Baidu, Google, or csdn, there are still a lot of experience posts from their predecessors on the Internet, I will not list them one by one.
Java is mainly used for application layer and user-oriented software development. For example, Android applications are written in Java. The recommended book is Java core technology. it is still a designated teaching material for Huawei training.
MATLAB is not easy to say, because the function is indeed too powerful, especially suitable for those who need to do data processing and signal analysis. For communication engineering students, this can be considered the most close to a professional programming language, the author's level is limited, so I will not barely explain it here. For details, please refer to the experience posts of practitioners on the Internet.
What I have to say in a book is The Mythical man-month mentioned earlier. It does not involve programming in a specific language, but is about thinking about the software industry, it is a must-read book for the soldiers to evolve into generals and marshals. Some items may not be understood in the early stage, but with the accumulation of practical experience, the value of this book will become more and more apparent, which is a general feeling of practitioners who have read this book.
Of course, no matter what kind of knowledge, it is not used for reading, but for thinking and using, just like the high-data Optical Recording formula without practice. Is it difficult to get a high score even in the exam? As for programming skills, in addition to what is mentioned in the book, the key has to go back to practice to understand that there are projects, projects, exercises, and theoretical practices, it is difficult to improve the theory and knowledge of empty talk.
Another thing to note is that there is no score for the actual requirement, or if there is only 0 or full score, the full score is obtained when the customer needs to be satisfied. If there is a problem, the score is 0. You can make up for it, however, if there is no bargaining place, it is better to keep your job. If it is worse, it is better to make a fine. If it is more difficult to make a mistake, it is more difficult to take care of your responsibilities. Especially when it comes to software, you cannot have any casual thoughts, otherwise, the University has low requirements for students, and it is no good result to easily lower self-requirements.
3. Do not select directions with ease. There is no industry that requires no effort or bright future.
1. both hardware and software repairs in communication engineering are both an advantage and a challenge
There seems to be a saying among students: "reading communication is inferior to software, computer, and electrical ."
At present, there is a huge trend in different disciplines. No matter the software or hardware, the essence is to achieve a specific requirement through its unique method, while communication is one of the requirements that can be achieved by software and hardware.
Taking software as an example, we have also mentioned the fundamental and secondary tasks of software. In the undergraduate phase, the focus is on the implementation of secondary tasks, even if the graduate stage is divided into different directions, students in the soft school or computer also have security, operating system, graphics, image recognition, and many other options. They do not necessarily know the communication knowledge of every software, to implement the fundamental task of software, the proficiency of code writing alone cannot be satisfied. Therefore, from the perspective of specialization, communication students have their unique advantages in implementing this demand. The hardware is similar.
The reason for the above remark should be the deviation between the teaching content and the practical schedule. Communication needs can be achieved through both hardware and software. When the teaching time is the same, the teaching time of communication needs to be dispersed in the professional knowledge of software, hardware and communication, this also leads to a wide and not refined congenital defect. This is an advantage of extensive implementation methods and in-depth professional orientation, but it also requires communication students to take the initiative to find their own direction for further exploration. The advantages and challenges coexist. If you rely on passive acceptance of school knowledge, you may not be either of them at the end.
In addition, I have also mentioned my training experience at Huawei. Few simple programs can be completed. There are many students in communication, software, and computer fields. It is not uncommon to learn how to write software and electronics without understanding circuit design. The school is only responsible for leading the door, and practice depends on the individual.
2. Do not select the direction with difficulty. you may be interested in moving forward. Your interest comes from understanding and understanding about practice.
I once said that hardware is more difficult than software, because the hardware engineers have a long forming cycle due to factors such as noise, frequency band, distortion, and temperature stability, in contrast, it is faster to get started with software. You need to consider the time and space constraints. However, the more you want to focus on your vision and thinking, senior Software Engineers need not only technical skills.
In fact, I don't recommend the differences between software and hardware from the perspective of difficulty. This is just like asking which one is simple for playing basketball or table tennis. Basketball requires higher physical strength, while Table Tennis requires faster response and speed. However, if we continue to make a comparison, we will find that the rules are different, the required skills are different, and the training methods are also different. The more incomparable, the more practical, the lower the wage, the proportion of the number of employees, and the career life. Looking at an industry from these superficial information, or even taking it as a consideration of future direction, isn't it appropriate?
Or from the perspective of economics, the necessary labor time determines the value, and the relationship between supply and demand affects the value fluctuation. Whether working or starting a business, the essence is to export your knowledge and abilities to the society. The more difficult you will be, the more irreplaceable you will be, and the higher you will gain. On the contrary, the easier it is to work, such as looking at the door and cleaning, the more you will understand.
There is another type of person called "a good person is better than a happy person". It seems to outsiders that it is not difficult to work hard. In fact, the efforts and difficulties behind them are beyond the imagination of ordinary people, however, they are happy with this, and even more pressure can be turned into motivation. They seem to be able to work very hard.
When talking about the choice, I have read a passage like this: "The road is always going. Instead of waiting around a fork in the road, it is better to select one of the roads at will and take a few steps first, if you feel something is wrong, you should look back and change the road. If you feel the right way, don't envy other scenery and stick to it." I believe you have heard a lot about the trial and error methods, but it is difficult to get a definite result if you just try it on your own. There is no good or bad direction, but there is a fit or not, and these, only you have tried to really know.
The student also asked questions about network management, which seems to be related to Cisco Certified Network engineers, but I do not know much about it. I also want to ask some people to talk about their opinions.
4. Research or employment? Are you still on your own way to listen to your parents?
1. Personal Experience-Beware of suggestions from good people, and good intentions will also do bad things
I am not a good student in the traditional definition. The highest attendance rate in college is the number of physical education classes. Because of my dislike of exam-oriented education in China, I decided to find a job after my graduation.
Perhaps like most college students, this decision has aroused family worries. Therefore, my parents have mobilized friends and family to persuade me that, in the face of fierce competition in society, a graduate diploma is advantageous.
In the face of these complaints, I usually ask a few questions with courtesy, for example, "Have you read graduate students?" Are there many graduate students around you? "Do you know the detailed requirements for graduate recruitment, the most common answer is "no", "Not much", and "not understanding". The answer is usually "what everyone says ".
This situation lasted until one day, that is, when my cousin and sister-in-law arrived at home. My brother and sister-in-law are the classmates of the Harbin Institute of Technology who are studying optical fiber. My brother can't take the test. He graduated from an undergraduate course and went to work. Then he went on to study again. I would like to say that I have never been an ordinary person. I have achieved excellent performance during my school period, and I have been well-rounded. Before my graduation, I signed a ticket to jdsu (currently one of the world's largest fiber parts suppliers and one of the giants in the optical communication field ), the annual salary is 0.2 million. It was this story that changed my parents' opinion: "I think it is better for boys to come out and work early, and your brother's salary is higher than mine now ." Since then, my parents have all said that they have finished their undergraduate job.
When I mention this, it is by no means that I will not study at work after my graduation from an undergraduate course. The remarks made by my nephew are one-sided and will be further analyzed and described later. What I want to express here is to be careful with the opinions of people with good intentions, because their opinions may be heard, rather than the opinions they have actually experienced and confirmed. Good intentions may also do bad things, I have also seen a log called "harm, love name" a while ago. As I said here, what I personally see and hear is not suitable for everyone. However, it is certain that these people will not be bored to harm you, even though they may disagree, or there may be errors at all. After all, it is a good-hearted and smiling thank you, then, take its essence to get its dregs.
Simply put, it is to listen to the opinions of most people, discuss with a few people, and then make their own decisions.
2. Views on the differences between research and employment
A few days ago, I discussed the advantages of postgraduate students over employment. The results were academic and academic qualifications. Therefore, graduate students who want to join state-owned enterprises, state-owned enterprises, universities, or those who want to contribute to the academic field are required. However, from an economic point of view, the job advantage after graduation is greater. Compared with the three years of graduate students, the job can accumulate a lot of income, work experience, and connections during this period, I have even upgraded my position.
However, pay attention to the stress, environment, and capability issues. Let's talk about stress first. There is little pressure during the study period, and no one will force you to learn and do it. The key is self-conscious. There is a lot of pressure on employment because the rice bowl is there and there is no food if you don't work. For the environment, the academic questions mentioned above are closer to the academic field. If you have followed a good teacher, you can get in touch with many cutting-edge things and broaden your horizons; employment is more closely related to projects, and the jobs involved are classified by the upper layer, focusing more on the work at hand. If you want to have a higher and broader perspective, you need to take the initiative to understand. In terms of ability, there will also be some project practices when graduate students are more comfortable. In employment, compared with undergraduates of the same comfort level, they naturally have an advantage, it is best to make preparations First to improve your achievements and project experience. Otherwise, you can pick up the company with any capital.
No matter which path you choose, you need to determine what is most important to you, and clarify the purpose. both research and employment are ways to turn around. The second is attitude. No matter which way you take it, it is right to take a positive attitude. The more you take the initiative, the more difficult it will be, the more passive it will be, all kinds of questions you don't expect will come to you. The more busy you are now, the easier it will be in the future.
5. I would like to thank the students, Yang Jianguo, and electronic engineering album for their encouragement and encouragement. I want to change from now on, start from myself, and start from my side.
A few times ago, I posted a log, attracting the attention and sharing of many colleagues and friends. I have left my views and suggestions. I would like to thank you.
I have recommended my article in the subscription message sent by e-engineering album a few days ago. Jack Yang and Mike, the website analyst of e-engineering album, also wrote a message to my blog, I never thought it would attract the attention of all parties. I was surprised by the snacks, and it was inevitable that I had a bit of happiness in my mind.
Mike ridiculed me and said it was not as mature and comprehensive as I was. Teacher Yang also suggested that I sing K and relax myself. I would like to thank the two teachers for their affirmation, encouragement and suggestions. I should do my best to do everything at hand.
In fact, I also want to live a simple life. I will go to the food market on weekdays, cook a meal for my family, and enjoy a pleasant evening with Friends of the three or five friends, or write and write poems and Yin words in the study alone. It's just what we need to face in reality. "When I was a child, happiness was a simple thing; when I grew up, simplicity was a happy thing." To live a simple life, you have to make yourself easy first, in order not to fold the waist for a big fight, can be at the mercy of others.
Oh, it's far away. After talking back to Mr. Yang's blog, he roughly blamed the poor foundation of college students on the impetuous nature of the people. Later, I also saw a junior electronic students reply to a log, the poor foundation is caused by the environment. It cannot be all blamed on the students.
The last time I forgot to say that both of them are actually rational, but they are not specific, because I made the same mistake, that is, the "Basic attribution error" that the psychologist Li Rose said ". The so-called "Basic attribution error" means that people often attribute others' behaviors to internal traits such as personality or attitude, while ignoring the importance of their situations. Basic attribution errors are often manifested in deviations between actors and observers. When people act as evaluators to attribute others' behaviors, they tend to be internal attributions. When people act as self-evaluators to attribute their own behaviors, they tend to be external attributions, that is, the observer overestimated the personal traits and the actors overestimated the role of situational factors.
Objective questions have been raised all the time, and we have all realized that to change the status quo, we must first find out the root cause of the problem. We will mention this above to let everyone know, in addition to realizing the seriousness of the reality, the solution also needs to create such an environment and make some substantial changes.
Some of my friends worried that I was afraid that writing articles would attract a lot of attention. After that, everyone forgot and went back to the original state. Therefore, when I received the innos Club Chairman before the departure of my senior year, I hope that, on this platform, I can learn the truth from the perspective of individuals, groups, and organizations, with a higher and broader vision, we can recognize the needs of society as early as possible and prepare for the future.
This is not because I feel that I have a high character and need to serve you with all my heart. It's just that my past experiences have made me understand that the power of a person is very limited, the overall level determines the individual height. When I was training at Huawei, it was hard for many people to see a program that was easily completed by myself. I do not deny that there was a bit of dark joy. But more, it was worried and worried, this is because my colleagues and hard-working partners have gone further. Some people complain about the poor environment and the wrong situation, you must know that the big environment is composed of countless small groups of ourselves and our people. "Hello everyone is really good." the meaning behind this sentence is not just an advertisement word.
We also call on everyone and friends to share their abilities and opinions with others, not only for the sake of our people, we also want to create a better, more open, and more conducive development environment for ourselves.
Perhaps such an appeal is a little weak. Some people may say that they are very busy. Maybe you are still watching, but the road is always going, and the problem should always be solved, if you need such a person to take the lead, let me be the one who will take the lead, change from now on, start from oneself, start from the side.
In the words of Obama, "Yes we can !" "