Just recently, a classmate from Coding Girls asked this question:
The daily development of the current company has been separated from the hard mode, which means there is no pressure to write business daily. , the code quality is also OK, but it will be fine after writing the business. How should this be improved?
In fact, I have raised such a question when I have been working for more than a year. I don’t know if anyone has ever had the same trouble, that is, how to improve yourself after you can handle your current job? This problem has nothing to do with gender and can happen to anyone. So I still want to write based on my own experience. If there are any similarities, it is completely normal.
This is the PHP community, we are talking based on PHP. I believe that for many people who have just started to come into contact with PHP, or even those who have just started to come into contact with code, 70% of them come into contact with the framework first. like me. Laravel is an extremely excellent framework. The best thing about it is that it can make a female student who can't even write SQL fall in love with coding. Many out-of-the-box tools and various technical tutorial posts eliminate the need for us to write our own graduation projects based on in-depth study of their principles, write out our own confidence and sense of presence in the code world, and start from now on. Step into the door of the world of code.
So you start to work with just learned how to use the framework and some scattered and understandable knowledge learned in school. After working, you suddenly find that your understanding of the framework is not deep enough, so you start to read various documents from scratch:
● PHP’s documentation, and understand the use of each function.
● Composer document, start tossing various trendy packages. (Related video recommendations: PHP Composer Video Tutorial)
Laravel’s documentation, how to use ORM to write complex SQL, what the hell is inversion of control? (Related video recommendations: The latest five Laravel video tutorial recommendations in 2019)
● Redis’ documentation , learn it, it is easy to start optimization such as scheduled task queue caching. (Recommended course: redis video tutorial)
● Vue documentation, maybe you feel that just mastering a little front-end knowledge is not enough, so you start tossing again. (Related video recommendations: The latest 5 vue.js video tutorial selections in 2019)
Even as the company’s business develops, you will start to follow your team to contact some interesting topics for you. There are still very advanced technologies, such as microservices, distribution, read-write separation, master-slave backup, etc. You even started to try to write open source projects, but you have been reluctant to release them.
Slowly you start to feel that you are becoming awesome, because you can quickly complete the requirements of your product classmates. Even if your test classmates raise bugs, it is because you did not read the requirements document carefully or you accidentally wrote the wrong one. caused by symbols. Work becomes less and less difficult, so you start to feel dissatisfied. At this time, if the company fails to give you more challenges, you will start to think about changing jobs.
But generally, the challenge of changing jobs is nothing more than changing the working environment, organization, changing the framework, or taking care of another language. When you adapt to all this, you will start to feel bored again. There is no challenge and at the same time you are not interested in it. The repetitive and tiring overtime work creates boredom, and eventually you start not wanting to write code even on weekends. Maybe you can change things to pass the time, such as learning a musical instrument, falling in love, raising a cat, achieving some Flags ~~
Is this really good? You start asking yourself this. Even if you can do many things, there are still many things you cannot do. You start to feel like you are more than you are, you start to panic, you start to feel confused and at a loss. So you start asking people around you, what should I do? But when someone suggests changing careers and changing jobs to you, you don't want to do that. Is it because you love it or because you don’t know what else to do? Anyway~ I hope the following content can bring some answers to you who have the same doubts.
What question do you have?
● Is the quality of your code really OK? How do you measure the quality of your code? What can be done to ensure the robustness of the interface? Do you know how many requests and concurrency the interface you wrote can withstand? You can handle millions of data, but what about tens of millions or even petabytes?
● Is daily business writing stress-free? Have you ever counted the average number of defects reported to you every time you write a functional test? Do you know how many people are using the feature you wrote? Is the function you wrote easy for others to use? In production, has the function you wrote ever generated "impossible" dirty data?
●For example, one day the system suddenly crashed for more than ten minutes, and the CTO and several technical team leaders came forward to solve the problem. Have you ever tried to understand why it collapsed? How to solve it? To what extent do you understand? (For example, if you have slow SQL, how to solve the problem of system blockage caused by slow SQL? How does slow SQL occur? How to avoid slow SQL in daily life? How to find out that it is slow SQL based on the crash?)
● Read the framework document Is it enough to be familiar with it? Why is Laravel’s framework designed this way? Why do we all say it’s good? How is it different from other frameworks? Have you ever looked through the underlying code?
● What kind of algorithms are used behind PHP functions to ensure their efficient operation? Have you ever understood it?
When you get out of hard mode, is it because things are easy or because you put yourself in easy mode?
Extend more questions based on the random questions raised above, and you can list a lot of content you need to learn.
● Can you really optimize MySQL? What is the principle of optimization? Why do some SQL statements have the same logic but such huge differences in performance? How does the framework connect to the database and how are transactions handled? Why does adding an index make queries faster? How to make better use of indexes? How does order by work?
● Do you really know how to use Nginx? In addition to using simple deployment projects, do you know how to set up a reverse proxy to achieve load balancing? How to deal with cross-domain and caching issues?
● Are you proficient in Linux? Are all commands used? What should I do if there are a large number of uninterruptible processes and zombie processes in the Linux system? How to quickly analyze where the system CPU bottleneck is? How does Linux memory work? What is the process of process switching? How many ideas are there for optimizing disk I/O performance? How to use tcpdump and Wireshark to analyze network traffic? How to mitigate performance degradation caused by DDoS attacks? The service throughput has dropped significantly. How to analyze it?
I won’t list them in detail next, such as basic job skills such as Web protocol, Redis, etc., internal skills and mental methods of data structures, algorithms, design patterns, etc.~ If you really don’t know what skills you lack If you need to supplement, take a look at the recruitment resume of your favorite company for your favorite position~
Ask questions and know your own gaps. The next step is to find ways to fill them yourself. Do you know the answer to the above question? Do you have the urge to copy and paste Baidu answers at this moment? If so, then go find the answer!
In this era of resource sharing, the cost of learning can be said to be almost zero. Almost every question you can ask has been asked and answered by someone. If you need a more systematic and in-depth understanding, there are a lot of books, videos, courses, and online resources. Once you buy it, go check it out and don’t waste the money you earned from working overtime. Anyway, I have never seen powerful people say that they don’t read books.
● In the era of paying for knowledge, all major communities now have more or less tutorials on operating related skills
● Geeks and MOOCs also have many good courses that provide an in-depth understanding of the underlying principles
●● Think To supplement relevant knowledge, what books should you read? If you really can’t find anyone to recommend you, just go to Zhihu and write something. To be wise is to apply what you have learned. If you read a knowledge point and write down your understanding. If you can understand it yourself and others can understand it, and you can explain it to people who don't understand, then you really understand it. ! Again, I have never seen a great person who didn’t share his knowledge and insights. So, after reading the book and taking the video course, please be sure to force yourself to write something. Notes on knowledge points, thoughts after reading, etc.~
A person can go fast, but a group of people can go further. From my personal experience, my technical growth is inseparable from the help of people in my circle. Because of my idol An Zhengchao, I came to Laravel China and met the webmaster Summer, and then got to know more people in the community. Through repeated exchanges and discussions, I learned about my own shortcomings and practiced diligently. I also knew who could answer my questions, who was willing to discuss with me, and who would work with me to supervise each other and grow together. Along the way, I am very grateful to the people who have accompanied me, the people who have patiently helped me, and the people who are willing to spend their time to give me advice.
Listing a large number of learning resources here may not guarantee that they will be useful to you. What's more, learning itself also carries labels such as persistence, self-discipline, and methods to divide us into three, six, and nine categories in a very realistic way~ There are still many things to learn. For programmers, the speed of updating knowledge is what makes us... Always unexpected. As the saying goes, the road is long and long. No matter how many years you have worked, always thinking about how to improve yourself is a required course in life. You can’t do it if you don’t want to!
If you need it, you can leave a message below the post, and I or the enthusiastic classmates in the community will share with you the courses and books we have learned that may be useful to you. For example, what are some Internet-related books worth reading~ The community itself is a large circle, so make good use of it!
In addition, the growth of a programmer must not only include technology, but also the workplace, management, social circle, etc. ~ If you have the opportunity, write another "Career Chapter"! (Because I’m not qualified yet~)
The author of this article: JokerLinly, thank you!
Recommended related articles:
"As an excellent PHP engineer, have you mastered all these Linux commands? 》