Let me talk about myself first. I graduated from a key undergraduate program (985, 211) with a major in computer science and above-average grades in school. After graduation, I was undoubtedly expected to become a programmer and joined Zhenai.com for almost a year. I got the offer at that time. I also considered a few questions: What kind of company is this company that I didn’t understand at all before? How is the technology climate? How about room for growth? Now that a year has passed, I look back and summarize what progress I have made this year. In fact, I still have a lot of feelings. I also hope to see more success stories of “poor masters”.
My favorite technologies are mainly java and php. In recent years, with the development of business, some businesses have begun to use c++. Generally speaking, there are quite a lot of great people in the company, and with the accumulation of more than ten years, as a newcomer, I did learn a lot after joining. However, after ten years of development, a lot of technical debt has also been accumulated. For example, the technical framework of the old system is outdated, the code is confusing, and even certain business details are no longer clear to anyone, etc. After newcomers join, they will basically be tricked several times~~I have been tricked anyway~~
The technical atmosphere of the company is still good. Basically every programmer maintains the spirit of thirst for knowledge about technology and can also express own different opinions. Once in a project, several programmers debated for a long time on how to optimize the writing of SQL with nested subqueries. Later, I looked up a lot of information and finally found that the two ways of writing are actually similar~~ But During the debate, my understanding of the underlying mysql has deepened a lot. Haha, it can be considered an unexpected gain!
A more pressing issue facing Zhenai now is to solve the "contradiction between the people's growing material and cultural needs and the backward social productivity". On the one hand, the company's business is developing rapidly. On the other hand, the company's existing technical system is not perfect enough. There is still a long way to go from the underlying DB to the entire technical architecture. Along the way, the skills of developers have been greatly improved. Referring to the rapid development of the Internet in recent years, which has promoted the technological development of the entire Internet industry, as our boss said: "For us technicians, what we are experiencing now is something we will never experience again in the future." A matter of chance".
As a fresh graduate who only knows the basics of Java and the basic use of the SSH framework, when I first joined, I didn’t even practice the basic mysql master/slave. Now, I have gone from a grounded shell programming to a high-level one. Hadoop, Spark, etc. can basically hold on, so I personally feel that this year's experience can be said to be a year of rebirth for me personally. Of course, after all, due to the limitations of the environment, what you see and feel will also have certain limitations. Such a self-evaluation, even if there is no suspicion of Yelang's arrogance, is still possible. So I would like to ask how everyone develops in Internet companies and how fast they are growing. We might as well discuss it together.
A true programmer who dares to face the bleak life and the dripping blood will definitely be able to make his own way in the wasteland of years full of weeds.
In fact, just listen to what others say, you have to make your own decision. In the face of others' doubts, denials, and ridicules, we only need to move forward firmly and show them. Action is the best proof. If you persist for one second longer, the future will be different.
Now let’s take a closer look at where the value of programmers lies. 1. Application Technology
A considerable part of programmers are doing application-level development. The software they make is used to solve problems in specific scenarios and bring convenience to users’ work and life.
Developing an application often uses high-level languages and frameworks, such as C# and .NET, such as C++ and Qt, such as J2EE, such as Ruby on Rails, such as Python and Django, such as Java and Android, such as Objective-C and Cocoa Touch, such as Java, PHP... too many to count.
Many people think that the threshold for application-level development technology is low. There is not much difference between young people and experienced seniors. The waves behind will beat the waves in front to death on the beach, so when the new leeks grow, the older ones will Gotta finish playing.
In fact, no, even from a purely technical perspective, your understanding and mastery of a language and framework will seriously affect development efficiency and product quality.
What kind of person will be easily replaced? Programmers who don’t ask for a deep understanding, seem to understand but don’t understand, who still can’t understand the essence of the technology they use after working for many years, and who still don’t understand and are at a loss when encountering problems. Such programmers are destined to be fast. Being squeezed out of his job by a large wave of young freshmen who are coming.
If you are deeply aware of the various characteristics of a language, if you have a unique understanding and rich practical experience of the mechanism of a framework and various application scenarios, then you are almost irreplaceable. You have become an expert on the language and framework, which is invaluable.
Your words may save several months of time for a project. Problems that others are unable to solve can be solved in minutes by you.
So, don’t pay attention to words such as “it can run”, “just complete the task”, “you don’t need to learn so much”, etc. After you use a technology to solve a practical problem and meet a certain need After that, keep digging in, learn more, go deeper, and over time, you will definitely become different.
If you don’t have time at work, then continue investing after get off work. Remember, your study and research are all for yourself, not for your boss or for the project. Your only product is yourself, and this product is worth polishing for a lifetime.
2. Highly Difficult Technologies
There are some technologies where the threshold is relatively high, such as assembly language, such as operating system kernel, such as drivers... Just because the threshold is high, the returns are also high.
For example, if you are familiar with the Windows kernel or Android kernel and are proficient in writing various drivers, then it is not a problem to find a job with a monthly salary of 50 to 60 K, or even 180 K. But it is scarce, so it maintains its value.
3. Algorithm
Most programmers actually don’t understand algorithms, and they just use the modules in the framework to build building blocks. If you understand the true meaning of algorithms, you will surpass 90% of programmers, and your importance and value will be immeasurable.
For example, you are proficient in image processing algorithms, for example, you are proficient in video encoding and decoding algorithms, for example, you are proficient in algorithms related to search recommendation, for example, you have made achievements in the field of pattern recognition... Let’s see who can stop your progress!
IV , Business
If you continue to accumulate in an industry, have a good understanding of the business, and have a deep accumulation, your value will be huge. If you don’t believe it, check out the job requirements on recruitment websites. 99% of them require relevant industry background.
Therefore, it is very important to choose an industry that is reliable and has good prospects. As long as this industry can continue to develop and advance, your accumulation will be valuable and you will continue to add value.
There are certain thresholds for businesses in specific fields, such as finance, electricity, e-commerce, lottery, archeology, medical care... In these industries, you are a programmer with a good business knowledge, even if the technology is not particularly good. , that is also of infinite value.
5. Product awareness and thinking
What exactly is product awareness? I think product awareness generally includes business awareness, user awareness, innovation awareness and team awareness.
——"Everyone is a Product Manager"
In the Internet era, product is king. Programmers who have product awareness and understand product thinking are the most popular people and are also the programmers who are best able to make good products.
Business awareness, in layman’s terms, means thinking about whether this product can be sold and whether it is a good product. This must be there, although programmers rarely have direct contact with the market.
However, whether a product is successful or not depends most of the time on market performance. If you can pay attention to the market, view technology implementation from the market's perspective, and accept the concept of "technology serves the market", then it will be easier for you to make a good product.
User awareness is the easiest to understand. It means that we should think about how to design this product from the user's perspective, because the user has the final say whether the product is good or not.
If you can also think from the user's perspective when implementing a product, and worry about whether a function meets the application scenario, whether it matches the user's behavioral characteristics, and whether it fits the user's usage habits, then congratulations, you have surpassed 90 % of programmers - most programmers implement products according to the requirements of product managers and UI designers.
Innovation is the source of human development, the driving force of social progress, and the core competitiveness of products. But the innovation mentioned here is not necessarily the kind of disruptive innovation. It may be to make many details that are not paid attention to better, maybe it is just to introduce another concept into this product, maybe it is like Haidilao's Employees also give users different feelings. These are all innovations.
Awareness of innovation is something a product manager must have, otherwise, he will never make progress and the product will never be good.
Awareness of innovation is also something that a good programmer must have, otherwise he will not be able to implement a product very well and will not be able to maximize the core competitiveness of the product.
Today is no longer an era where lone heroes fight alone. If we want to make a good product, most of the time we need a team.
Team awareness is essential. You are with a group of programmers, and you are also with product managers, UI designers, business analysts, project managers, etc. If you can integrate into the team and influence , Promote others to make effective efforts for a common goal, then programmers like you are invincible and a national treasure!
Having said so much, you still need to decide which direction you are suitable to work in. Make decisions.
You may know what you are suitable for at a glance, so there is no need to elaborate. Maybe you are a little confused, don’t worry, we all still have a lot of time, you can try it, and if you find it is not suitable, try again in another direction until you embark on the path that suits you.
A large company like Zhenai.com is very formal in all aspects. As long as you persist in working hard, you will definitely get ahead. I am both an Internet programmer. I have been working in the industry for less than a year. I have also sorted out my future development. This question of the original poster is very helpful to me. In the future, I will also start to travel in the ocean of the Internet, slowly get to know the big guys, and at the same time, a good The platform and team are also very important Programming requires you to face the computer all day long, but as long as you get used to it, I think this type of work still has a bright future. I have just stepped into this industry now, and I feel that there are so many things to learn. I will encounter many difficulties in the future. I don’t think I will stop in the face of difficulties. Let us encourage each other. I hope to communicate and learn more in the future. I think that in addition to the work arranged by the company, I should also study hard in private. The main thing about programming is to program more and practice more. The more I program, the more familiar I will become. In fact, if you want to make progress, you need to study frequently, especially for programmers. Learning is a must, because this technology updates quickly, forcing you to learn to master new technologies.