期望本科生的起薪都没有公司要…(The starting salary of undergraduates is expected to be lower than that of the company)
作者：看天问地 | 编辑：对白的算法屋
作者：看天问地 | 编辑：对白的算法屋
首先解释一下自己为什么不做初中开发，不是钱不够有有诱惑力，而是高工资下隐藏的是脑力劳动量巨大，加班巨多，要知道人的硬件机能是随着年纪增加而降低。说到编程里面的所谓的技术栈，我也接触过各种前段框架后端框架的真的很多。各种技术h5技术，css3技术，包括现在出的.net core ,webapi等。技术栈在不断的演化发展，公司对于你掌握的技术栈要求会越来越严格，也会越来越新，老的技术栈市场可能没有市场了（也许这是新程序员比老程序员有优势的地方吧，我卷不动了，也觉得技术栈卷的意义不高）。
Hello, I’m dialogue.
How many people have thought about how to go further in the career of < strong > programmers**** After working for more than a year, I summarized three insights < / strong >: first, don’t rely on Google for a long time to write code, don’t think the function is right, and take the initiative to remember some technical points; Second, write as much valuable code as possible, and write less simple and repetitive code; Third, take the initiative to learn new technologies and read new papers to increase their core competitiveness in the programmer circle.
In order to make you think more, let’s share the story of a programmer who has worked as a programmer for four years but lost his job this year < / strong >, < strong > it is expected that the starting salary of * * * * undergraduates is not as high as that of the company. There are indeed some problems of his own. Let’s listen to his experience together. The following is the original text.
Author: look at heaven and earth | editor: algorithm house of dialogue
Author: look at heaven and earth | editor: algorithm house of dialogue
In 2022, I lost my job completely< Strong > after interviewing more than 10 companies, no one offered < / strong >, so I reflected on myself.
First of all, to sum up the interview, < strong > the first point is that I really can’t express it. < / strong >, after more than ten years of technical career, I lack the opportunity to communicate. Second, my skills are really good. I have been a programmer for 4 years, a front-end programmer for 1 year and a programmer for 3 years c#, which sounds like I should be an experienced programmer. It should be very popular in the market. I was so naive at that time.
Why did it come to this point today< Strong > I have been a programmer for 4 years. During the interview, the salary I asked for decreased again and again < / strong >, from 9k-10k. From 8.5k-10k to 7-8k. This is in Guangzhou. 7-8k isn’t it just a novice who has just graduated from college. Why is there no enterprise willing to give this number? The more I interview, the less confidence I have. First of all, I have to deeply reflect on myself.
< strong > the reasons are as follows: first of all, I’m really good at cooking < / strong >. Don’t get a high salary just because you can get it in three years. If you don’t pursue technological progress, you may still get the same salary in ten years. Even devalue. In the past three years, I basically went fishing at work and didn’t have any tasks to exercise myself. I felt very good when I was in it. I didn’t realize that this was a huge crisis. I thought I met a good leader. I didn’t realize that strict leadership can urge your technical progress. The understanding of technology is not enough to complete the tasks of the company. But I was naive to follow this minimum standard. Writing code depends on Baidu. Just run right. Never think or actively memorize some technology. But that’s how I’ve been for the past three years. Sooner or later, a bastard programmer will be punished.
For the above question. In fact, I realized it three months after I joined my last company. At that time, I was wondering if I wanted to change jobs. Because the leader always arranges some functions I already know to do for me. Simply repeat the mechanical work to me. At that time, I still thought whether the leaders wanted to drive me away. But I stayed for some reason. But the leader still arranged such work for me, so I had the idea of slacking off. It’s not very positive. Then the leader never assigned me any valuable tasks. (there was a period of time before, some arranged tasks for me that I could learn a little.) slowly, I became a jerk. It’s better to forget the programming language than when you just learned it.
Now it seems that I should have left the company earlier, so as not to waste three years and people. Because that company is maintenance. Just fix bugs, and then the code left by the previous programmers is terrible. You can’t learn any design patterns from reading code. And you have to follow his writing to make the program run. I should have left after half a year’s work.
< strong > What’s more, their pursuit of technology only requires that they can complete their work tasks < / strong >. Then the leader arranges some simple tasks for you every day. Then you have only a simple level. In fact, the leaders see that I have made no progress, and they do arrange simple tasks for me. The vicious circle leads to the improvement of one’s own level. Moreover, there was my poor strategy, which required me at that time: for technology, as long as I can complete the task. Everything is task oriented. Now after looking back, I know how terrible it is. I should be market-oriented, and be guided by the technical requirements required by higher wages and the common technology stack in the market, so as to clarify the direction of my next job. I didn’t know until I found a job now that my original company’s technology stack was the narrowest technology stack in the market. If you come out of that company, your value will not increase but depreciate. (my personal composition is also very large. What I do in the company is the development task of leftover materials). In fact, I should change jobs more.
< strong > summarize the above Strong > first of all, if you find that it is bad for your development in a company, you should change jobs immediately. Otherwise, a lot of time will be wasted. Second, the requirements for their own technology should be guided by the market technology stack and the technical level with higher wage requirements. Third, the number of years engaged in technology can not determine your technical height, but the energy you pay determines your technical height and salary. I’ve been developing for three years and haven’t even received 7 or 8K from the company. Others have done development for a year, and he can reach 15K. So we have to work and contribute. You can’t deceive yourself.
The interview for more than 30 days taught me a deep lesson and got rid of all my unrealistic fantasies. Of course, there are many reasons for the failure of the interview and the social environment (epidemic). If you are not young, have worked for many years, and your development level is still very general (you won’t boast during the interview), you are likely to be unable to find your next company. I now realize that programmers are really a position with a high elimination rate. If technology is not good, it will be replaced by latecomers. Before I was 30, the 35 year old crisis came ahead of time. For programmers whose technology can’t be top, it’s better to prepare early. Programmers can’t work for a lifetime. The programmer profession is more of a winner take all pattern
Then I was 30. I found it a little hard to work. (I can’t sleep in the afternoon. I’m impetuous and confused. It’s difficult to concentrate on my work. I work for 10 minutes and rest for half an hour.) it’s true that the body in my 30s can’t keep up with me. If you add your average skills. In fact, there will not be much desire for technical excellence. In his 30s, he really can’t do grass-roots work (he needs brain flexibility and quick response, and doesn’t need much wisdom and skills, which is obviously more suitable for young people). Except for advanced intelligent architecture management, in fact, transformation should be considered, which can be implemented in the computer industry. At present, I plan to implement it. The main brain reaction is not as fast as before. I can’t do the mental work of mechanical repetition, and I want to do the work of dealing with people and break through myself.
< strong > the above is a summary of my four-year programming career < / strong >, will brothers see their shadow. Or will it be inspired. This case is true. I hope it can help you avoid similar mistakes and find your true positioning in the technology circle.
Thank you for your comments and praise, which also let me learn a lot (for example, 1. Spend a few months gnawing technical books before the interview. 2. Interview more companies for at least 20 starting points. 3. Summarize more technical principles when you get off work. 4. The routines of interviewing programmers in various companies vary greatly. 5. Programmer internal volume. 6. Exam teachers, civil servants, etc.)
Maybe everyone has his own way to go. At present, he has found an implementation job. The salary is about 9.5. (I’m quite satisfied. Don’t drive me at that time).
First of all, explain why you don’t do junior high school development. It’s not that you don’t have enough money. It’s that under the high salary, there is a huge amount of mental labor and a huge amount of overtime. You should know that people’s hardware function decreases with age. When it comes to the so-called technology stack in programming, I have also been in contact with various front-end frameworks, and there are really many back-end frameworks. Various technologies, H5 technologies and CSS3 technologies, including those now available Net core, webapi, etc. The technology stack is constantly evolving and developing. The company’s requirements for the technology stack you master will be more and more strict and new. There may be no market for the old technology stack market (maybe this is where new programmers have advantages over old programmers. I can’t move, and I don’t think the significance of technology stack volume is high).
In fact, I have reflected on the significance of these frameworks and new technologies. Once I was also a person who was loyal to expanding my own technology stack, so I was once an interview expert. (perhaps because I was young at that time) the fundamentals went one by one. The interviewer was stunned when he talked about his understanding of the application of the technology stack and the fancy stacking of various English nouns. But now looking back, how superficial was my understanding of the technology stack at that time. The technology stack is like a tool. Mastering the technology stack is good for the interview. Because a simple interview is difficult to investigate the real strength of programmers (internal skills, such as the ability to solve problems with tools, the ability to judge and analyze problems, and the ability to flexibly apply technical solutions.) Check whether you have relevant technology stacks and your understanding of relevant technology stacks.
The ability of programmers is divided into two parts: one is called engineer literacy (science literacy, the ability to decompose and solve problems is the same as that of engineers in other industries), and the other is called technical tools (various frameworks, languages and technical implementation schemes). Engineer accomplishment is like internal skill, and technical tools are like moves. For example, if a Sanda athlete doesn’t have absolute internal force training (explosiveness, reaction, physical resistance, leg strength, arm strength, tactical strategy training) but just learns martial arts routines (mantis boxing, Tiger Crane double hands, etc.), then he can’t beat a few people. Now the recruitment market is more investigating your technical tools, ignoring the engineer’s quality. We are not code farmers, not programmers, but software engineers. And because of the demand of the recruitment market, many programmers have invested in the vortex of the internal technology stack. My colleagues have relatively weak technical ability (people are OK and have rich social experience). The company almost yellowed a project because of the code he wrote (the later development director and boss went to the project site to change the code in person and barely saved it). The code he wrote did not have any in-depth thinking and understanding requirements for the problem. The number of words in the code is huge and difficult to maintain. After contacting him, he found a job in a week, and it was about 12K. I know that he usually studies all kinds of technology stacks in his chat with him, http://asp.net , web front section, etc. (his technology stack is very wide).
I have to admire that colleague. His social experience, insight into the job market and negotiation ability are really high. In fact, it reflects that the recruitment market has high requirements for technical tools. On the contrary, they do not pay much attention to the quality of engineers. When there is demand in the market, there will be suppliers. In fact, all the programmers around are working on the volume technology stack, volume framework, volume technology scheme and even design mode (deliberately use them) or working overtime to spell their familiarity with business logic.
Let me introduce my understanding of the framework and technical scheme. Frameworks and technical solutions are just tools. I even found that they copied each other (of course, you can also say that they wrote according to the commonly known specifications of the software agreement). Many frameworks and technical solutions are very similar (the most obvious ones are c# and Java). I once interviewed a job as an on-board software engineer. The technical interviewer told me that they basically used many design patterns in their projects. I have a little doubt about this. First of all, if he has stayed in the company for a long time, it is possible that he is familiar with the business. In addition to the general mode of the business, the mode mode is refined and encapsulated with design mode, so as to better maintain the code and expand the function. But this requires his special hard work. Second, if he doesn’t stay in the company for a long time, he doesn’t have a clear understanding and opinion on business problems. Then I suspect he designed patterns for the sake of design patterns. Put aside these two assumptions, first of all, their company makes medical hardware. The software used is more on-board software, which is probably a little more difficult than on-board development and a little simpler than MES. The overall difficulty will not be very high. Where will so many design patterns be used. Design patterns should be used in the right place. As far as I know about the work of programmers, if a design pattern is a panacea, it can make the software system tend to be orderly, and we can program gracefully with coffee. Why do so many online programmers complain about overtime, bug changes and all kinds of wrangling. (in short, it is immature and chaotic), indicating that most programmers in the industry have a general level of application and understanding of design patterns, and that design patterns themselves are not a good solution to software crisis.
To sum up, let’s use technical tools in specific problems and specific environments. Then everyone said that programmers need to keep learning. I agree, but what should we learn and what is the significance of learning? As mentioned above, most programmers are in the volume technology stack. But do these technology stacks really make sense? (I admit that he is really rich, but you may need to follow the technology stack like a star.) is the learning of these technology stacks really helpful to improve our ability to solve and analyze problems? (as mentioned above, I used to be quite happy and loyal to learning various technology stacks. I thought I was a senior programmer after learning it, but my experience in the game company gave me a hard blow. It was easy to get in the interview. However, after I got in, I found that my ability to solve problems, consider problems comprehensively and deal with changes in requirements was very poor. At that time, I felt that development was too painful and bugs would never be fixed It’s not over. This bug was fixed, and that bug came up again. The supervisor who recruited me said sarcastically, don’t you know game development? Why is this bird like? I was embarrassed at that time.) Isn’t the programmer concerned with data structures, algorithms, computer operating systems, and the basic computer theories behind him, such as linear algebra, combinatorial mathematics, advanced mathematics, probability theory and so on? Shouldn’t the things we roll be the things that maximize the interests of our life and life.
Because of my own cognition, I spent three years in volume, data structure algorithm, computer operating system, linear algebra, discrete mathematics, advanced mathematics, probability theory, database principle and software engineering. (I admit that I’m lazy in learning about the technology stack, but I’m not lazy as my friends in the comment area say) because I want to improve my internal skills. I don’t want to go in and be bullied by others. In fact, I haven’t been bullied by others in three years, and I can solve problems that can’t even be solved by leaders. I’m also on my own in the technical field I’ve been assigned. I’m a Baidu programmer. Don’t laugh at me. There is no deep excavation technology above, and the learning technology stack exists. But there are also special cases. First of all, our company has a lot of technology stacks. As long as we can c#, SQL server will do. There are not many technical tools. Then many times I will take solving problems as solving problems. Mathematics and some algorithms have given me great inspiration. That’s why I said that design patterns should not be used deliberately. Each phase has code for each phase. When you have a deep understanding of your business process and how much room there is for business process optimization, you are considering the design patterns. It’s like solving a math problem. Divided into 1 Describe the problem with a reasonable mathematical model. 2. Analyze problems. 3. Solve problems. The first step is very easy to be ignored by many people. But this is often a very critical step. Different problem description angles bring different difficulties to solve. For example, using calculus to calculate the area of a rectangle, and using elementary mathematics to calculate the area of a rectangle, obviously this problem is better solved by elementary mathematics. (or some problems can be solved only from the perspective of problem description) similarly, writing code is the same. It is very important to analyze and describe the business model and which data structure or API to use. The design pattern needs to be taken slowly, otherwise drawing a tiger will not turn into a dog. In three years, I have also solved many problems that leaders can’t solve. (the reason lies in the way of thinking. Many programmers may forget the mathematical knowledge they learned in college after typing too many codes. Knocking codes is not closely related to the original mathematical knowledge, resulting in some problems that can not be solved. My leader is like this. He will only stand from the perspective of programmers and business. If he can’t jump out, of course, it won’t work if he meets special problems that need to jump out of the perspective of programmers. This kind of problem is instead I’m good at) the problem I solve is the problem in a specific environment. The universality of the problem is very low and I rarely encounter it. Leadership skills are relatively stable and balanced. And the problems he can solve are universal. The cleverness is a little low, but it is reliable.
Let’s continue with the topic of Baidu programmers. After listening to this term, do you think it’s too low. Indeed low, problems are always Baidu. But he is also saving the memory space in your brain. I know there is an article called the external brain plan. In fact, I agree with him very much, that is, to put programming knowledge in different categories. Put it in Youdao cloud note. Or build your own file system and then index it. When we encounter a problem, we search the keyword of the problem. Baidu is just like the external brain. Store some static knowledge in every corner of the network. Our brain is responsible for organizing these static knowledge information into a solution to a problem. My own working method is probably like this for your reference and analysis: first of all, I don’t study specific technical problems. I won’t write a technical blog after finishing a project (it’s not good for you to learn), but I have a lot of research on mathematical structure algorithms, so my practice is to encounter technical knowledge Baidu that I don’t understand. Then when I encounter bad Baidu knowledge, I will do reasoning analysis and use proposition judgment and predicate judgment, such as whether it exists or all, lock the scope relationship, find his Baidu search keywords, or draw inferences directly without checking the self-evident meeting. Then analyze the business logic in the problem and scenario, put the static knowledge together into problem solutions, analyze the quality of each solution, and evaluate the solution with the highest cost performance. The evaluation angle of cost performance is: how can you work less and finish the work as quickly as possible? It’s too lazy. Then I will make a double offer. Summarize what kind of problems he has encountered before, so that he can quickly retrieve and call next time, or make it in the form of code template, and change it in case of similar problems.
Or every programmer works in a different way. A white cat and a black cat can catch mice. They don’t have to have a wide technology stack and a deep understanding of API and technology. To solve the problem. I can solve the problem with the least technical knowledge. (but in certain scenarios, specific companies) this can be achieved because of the improvement of data structure and mathematical skills. Because the conditions given by mathematical problems (which can be compared with static technical knowledge) are very few. Then you have to solve a problem (similar to solving work problems in work). A lot of this mathematical training will enable you to skillfully solve problems by using mathematical thinking (you can’t say the specific mathematical knowledge point, but more inspiration, and the positive effect of good thinking habits of problem-solving training) when you know little technical knowledge. Doing problems is like a drill to solve work problems. His thinking process is very similar, and even his skills in solving mathematical problems need to be higher. And this ability to solve problems can be extended to their own life, life. He may not make you promising, but if you use this ability in your life, you can feel the benefits he brings to you. This is also the reason why I am very supportive of learning technical internal skills.
In short, I will continue to improve my computer skills. Although it has been implemented, the same needs to solve problems, analyze problems and good thinking habits. It also reminds you that while rolling up the technology stack, you can also recall the knowledge of college mathematics, data structure and algorithm. They are very difficult and waste time, but they will gain a lot. It’s an exercise in the thinking process of solving work problems (I hope you don’t keep a bad balance like me)
Finally, you are welcome to pay attention to my wechat official account: duibainotes, which tracks the cutting edge of machine learning fields such as NLP, recommendation system and comparative learning. You will also share my entrepreneurial experiences and life insights on a daily basis. Students who want to further communicate can also discuss technical issues with me through official account and my wechat. Thank you!