Table of Contents
Reply content:
Home Backend Development PHP Tutorial python - What should I do if I am a programmer with a PHP background and feel flustered after working in various languages ​​for 5 years?

python - What should I do if I am a programmer with a PHP background and feel flustered after working in various languages ​​for 5 years?

Oct 22, 2016 am 12:14 AM
c++ php python

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. . .

Reply content:

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:

  1. English (required)

  2. Basics (various frameworks and wheels are flying all over the sky, but in fact everything remains the same)

  3. Programming for Google/StackOverflow (that is, use the wheel first to work on it, freeing up time to improve skills)

  4. Stay hungry, Stay foolish.

  5. 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.

  1. First of all, you need to have a goal, as mentioned above, a generalist or a specialist? You need to think carefully.

  2. 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?)

  3. 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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Golang vs. C  : Code Examples and Performance Analysis Golang vs. C : Code Examples and Performance Analysis Apr 15, 2025 am 12:03 AM

Golang is suitable for rapid development and concurrent programming, while C is more suitable for projects that require extreme performance and underlying control. 1) Golang's concurrency model simplifies concurrency programming through goroutine and channel. 2) C's template programming provides generic code and performance optimization. 3) Golang's garbage collection is convenient but may affect performance. C's memory management is complex but the control is fine.

PHP: Handling Databases and Server-Side Logic PHP: Handling Databases and Server-Side Logic Apr 15, 2025 am 12:15 AM

PHP uses MySQLi and PDO extensions to interact in database operations and server-side logic processing, and processes server-side logic through functions such as session management. 1) Use MySQLi or PDO to connect to the database and execute SQL queries. 2) Handle HTTP requests and user status through session management and other functions. 3) Use transactions to ensure the atomicity of database operations. 4) Prevent SQL injection, use exception handling and closing connections for debugging. 5) Optimize performance through indexing and cache, write highly readable code and perform error handling.

PHP and Python: Code Examples and Comparison PHP and Python: Code Examples and Comparison Apr 15, 2025 am 12:07 AM

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

Detailed explanation of docker principle Detailed explanation of docker principle Apr 14, 2025 pm 11:57 PM

Docker uses Linux kernel features to provide an efficient and isolated application running environment. Its working principle is as follows: 1. The mirror is used as a read-only template, which contains everything you need to run the application; 2. The Union File System (UnionFS) stacks multiple file systems, only storing the differences, saving space and speeding up; 3. The daemon manages the mirrors and containers, and the client uses them for interaction; 4. Namespaces and cgroups implement container isolation and resource limitations; 5. Multiple network modes support container interconnection. Only by understanding these core concepts can you better utilize Docker.

PHP's Purpose: Building Dynamic Websites PHP's Purpose: Building Dynamic Websites Apr 15, 2025 am 12:18 AM

PHP is used to build dynamic websites, and its core functions include: 1. Generate dynamic content and generate web pages in real time by connecting with the database; 2. Process user interaction and form submissions, verify inputs and respond to operations; 3. Manage sessions and user authentication to provide a personalized experience; 4. Optimize performance and follow best practices to improve website efficiency and security.

How is the GPU support for PyTorch on CentOS How is the GPU support for PyTorch on CentOS Apr 14, 2025 pm 06:48 PM

Enable PyTorch GPU acceleration on CentOS system requires the installation of CUDA, cuDNN and GPU versions of PyTorch. The following steps will guide you through the process: CUDA and cuDNN installation determine CUDA version compatibility: Use the nvidia-smi command to view the CUDA version supported by your NVIDIA graphics card. For example, your MX450 graphics card may support CUDA11.1 or higher. Download and install CUDAToolkit: Visit the official website of NVIDIACUDAToolkit and download and install the corresponding version according to the highest CUDA version supported by your graphics card. Install cuDNN library:

Python vs. JavaScript: Community, Libraries, and Resources Python vs. JavaScript: Community, Libraries, and Resources Apr 15, 2025 am 12:16 AM

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.

How to install nginx in centos How to install nginx in centos Apr 14, 2025 pm 08:06 PM

CentOS Installing Nginx requires following the following steps: Installing dependencies such as development tools, pcre-devel, and openssl-devel. Download the Nginx source code package, unzip it and compile and install it, and specify the installation path as /usr/local/nginx. Create Nginx users and user groups and set permissions. Modify the configuration file nginx.conf, and configure the listening port and domain name/IP address. Start the Nginx service. Common errors need to be paid attention to, such as dependency issues, port conflicts, and configuration file errors. Performance optimization needs to be adjusted according to the specific situation, such as turning on cache and adjusting the number of worker processes.

See all articles