I am a non-major college graduate, and I learned PHP+js by myself to enter the industry. This year is my 5th year, and I have worked for 2 companies. The first one I stayed for 3 years, and now this one has been for 2 years. The first company learned and accumulated the basic skills of WEB development front-end and back-end in the lnmp environment, and learned python. and JAVA. JAVA was only used in some tasks in a project, and now only vague memories remain.
In the past two years after changing jobs, my planned learning route was interrupted. I have been led by the company's business. I have learned Lua and Openresty successively. These small scripts are okay, but the terrible thing is that I took over the company in the past six months. Search service, the backend uses C/C++ to maintain the ES index. I learned a little bit about C/C++, and I couldn't learn ES search engine well. I was exhausted at work. I wanted to leave my job at one time, but I just considered that leaving my job casually would bring a bad resume to me.
People like me are totally nondescript, knowing everything but not being proficient in anything (at least what I learned is only used in stacking business logic). In other words, set a big goal for yourself and become a back-end full-stack programmer. You need to learn all these, but you are not proficient enough yet. . .
I am a non-major college graduate, and I learned PHP+js by myself to enter the industry. This year is my 5th year, and I have worked for 2 companies. The first one I stayed for 3 years, and now this one has been for 2 years. The first company learned and accumulated the basic skills of WEB development front-end and back-end in the lnmp environment, and learned python. and JAVA. JAVA was only used in some tasks in a project, and now only vague memories remain.
In the past two years after changing jobs, my planned learning route was interrupted. I have been led by the company's business. I have learned Lua and Openresty successively. These small scripts are okay, but the terrible thing is that I took over the company in the past six months. Search service, the backend uses C/C++ to maintain the ES index. I learned a little bit about C/C++, and I couldn't learn ES search engine well. I was exhausted at work. I wanted to leave my job at one time, but I just considered that leaving my job casually would bring a bad resume to me.
People like me are totally nondescript, knowing everything but not being proficient in anything (at least what I learned is only used in stacking business logic). In other words, set a big goal for yourself and become a back-end full-stack programmer. You need to learn all these, but you are not proficient enough yet. . .
I also come from a wild background, and my skills are based on where the company's business goes. I wander between various frameworks, and I am exhausted and miserable. I accidentally saw this column by Xiao Jingmo on Zhihu, and I deeply felt that I I don’t have a strong foundation. Now I have taken basic courses from some famous schools on Coursera and have completed all the Python
courses. I am now catching up on basic knowledge such as compilation principles and algorithms. The obvious improvement is that I can now build my own wheels, although it is still very clumsy. .
The questioner can realize that his own problems are much better than many coders who are living in confusion. I think the following points are very important for programmers regardless of their majors:
English (required)
Basics (various frameworks and wheels are flying all over the sky, but in fact everything remains the same)
Programming for Google/StackOverflow (that is, use the wheel first to work on it, freeing up time to improve skills)
Stay hungry, Stay foolish.
Take care of yourself
The above, let’s encourage each other~
Personally, I feel that the question is a bit too impetuous, and it has led to a big misunderstanding. I feel that learning a language well or mastering it is the only way for a programmer?
My personal suggestion is not to think about the problem like this, otherwise you may be a programmer all your life
Everything depends on the essence. What is the value of programmers?
It is the ability to solve problems, so language, architecture, etc. are only auxiliary tools for solving problems. You must also consider the problem from a broader and more comprehensive perspective, so that your ideas can be broadened.
For example: Don’t search just because the company says you want to search. First consider why you want to search, the company’s current situation, staffing, follow-up maintenance, etc., and then consider technical solutions. For example, are there any other solutions besides ES? Or is the intervention of a high-end plan too early and causing a huge workload? Is it possible to use the existing solutions in the technology stack, such as xunsearch, which seems a bit low, and then investigate new things when encountering performance bottlenecks? Since they are already in production, there may be enough time to study ES and step on it at the same time. Searching pitfalls, I found that I am more focused when researching and selecting products
In addition, I personally think that the development route of programmers should be broad first and then deep. You will only go deep when the system needs to be deep. This depends on the development and positioning of your company.
But for the most part, the "widening" step is enough, because the current situation determines that there are not so many companies and so many systems that require a very in-depth study of the language itself, more often to solve system problems or technical problems, and more Sometimes the bottleneck lies in ideas rather than language.
Since everyone has different understanding of broadness and depth, the above are personal suggestions for reference only.
Perhaps you should take supplementary courses.
For example:
http://study.163.com/curricul...
Don’t go too in-depth, you can choose to understand the system.
Then determine the direction based on your choice.
I can understand your mood, and you must have a goal, otherwise it will only broaden your horizons and lack depth of accumulation.
Give me some personal suggestions
1. In-depth learning of a certain language, from the language level to the framework, from From writing business to writing basic frameworks.
2. Understand various environments, such as PHP’s nginx, appache, you must be at least proficient
3. Be familiar with language-related technologies, such as redis, concurrency, optimization, etc.
Actually, the summary is just one sentence. People’s time and energy are limited. Being able to do one thing well and learning a language is enough.
It doesn’t matter if you have a major or not, schools can’t teach you about work at all.
You can never finish learning technology. Nowadays, work guides you to learn a lot, which is normal. If any job can be carried out according to one's own study plan, it is simply impossible. Moreover, technology updates very quickly, and you might not be able to catch on after you learn it.
The essence of programming is to better serve people. If you simply consider what you have learned, what you can firmly master, and what level of salary you can achieve to measure yourself, it is not accurate at all. Generally speaking, it doesn’t matter in the early stage. It’s okay to change a job, change a language or technology, and learn more. However, we must deeply understand the nature of this work, accumulate experience, and apply what we have learned. If you have changed multiple jobs, you feel like you have to learn it all over again every time, and it is basically a superficial introduction. This can only mean that you have not learned much and need to summarize it carefully.
My idea is to find something that interests you to learn and specialize in it. After learning the basics, learn optimization, learn software development processes, learn team management, and go deep into all aspects of software development.
Really, you have reached the time when you need system knowledge (professional knowledge).
It is not obvious that system knowledge can help you solve problems without specific details, but it is very helpful for managing projects, managing your own knowledge system, and looking at problems from a macro perspective.
In addition, let’s listen to the full-stack first. Every true full-stack has at least one particularly refined professional aspect. Because the language is the same, you will get good results if you do a little research on related businesses; and all aspects are Those who only know a little bit about it are not considered to be full-stack engineers. The nicest ones are called engineer assistants, but the worst ones are actually handymen.
It is recommended that if you are determined to be a full-stack, you should first determine a specialization point, and focus on specialization first and then expand. One bite won't make you fat.
Also, don’t be constrained by the company’s business. The company does not need to be responsible for your future. What you need to study yourself is not necessarily related to the task assigned to you by the company. Make full use of your spare time. After you become proficient in a certain skill, you will have the right to choose a task that is more suitable for your abilities.
As a newbie in the industry, I can’t help you in any way, so I can give you some encouragement~
As the saying goes, there is no need to overwhelm the body with too many skills. There will come a time when you will feel that the "skin" you learned earlier was not in vain.
Programmers must have both breadth and depth. It is recommended that you find your own interests, study them in depth, and encourage each other.
First of all, you need to have a goal, as mentioned above, a generalist or a specialist? You need to think carefully.
Who said resigning will lead to a bad resume? If you feel that you want to be a specialist, study a technology to the end, and master a language, then the company's development prospects will conflict with your life plan, and you will resign and leave with a haoranzhengqi of. On the other hand, if you choose to be a generalist and want to start a business, then you will have no complaints if your work experience happens to be consistent with your goals. (To make a digression, I know a PHP expert who has been working for 5 years. During the bottleneck period of 5 years, he has been "unfixed" and changed jobs basically every three months. He is still employed by employers who can use it. He said that the company does not Just leave when it suits you. We are in this age, and we still feel uncomfortable working in a company that has different values and world views from our own. Are we still the same people in the 60s and 70s?)
On the road of life, God will not give you just one choice, He will give you multiple choices. As for which one you choose, it is your own path. Think carefully before setting off and stick to it! Cheers to the topic owner~
The so-called "many skills but not too much stress" also means doing it within the scope of your energy. Owner, I think you can resign.
God rewards those who work hard, and the more you accumulate, the more you gain
Comprehensive and precise, simple and clean, come on! ! !
Thank you all for your guidance, many of the replies are very informative!