Recently, many friends sent messages to me on the official account asking me how to learn a back-end language well. How can I advance? How to promote quickly in the company? How did you learn as a backend?

In fact, I have been working for more than 4 years, but if you count junior internship and senior work, it is about 5 years. You may find that after 3 years of work, you may feel like you can’t learn anything after 5 years. On the surface, you know a lot of things, but if you go deeper, you can’t answer them and you can’t find any relevant knowledge points in your mind. Here are some of the most common questions asked by my friends (not by words) :

- I work for 1 year, 3 years, 5 years and then I don't know what I want to do. - Don't know what book/video/document you want to read? - I find that SOMETIMES I am not as good as new employees in the company (less experienced than me). - What's more, after working for three or four years, you feel inferior to others and want to give up and change careers?Copy the code

To be honest, AT the beginning of 21 years, I wanted to sort out my study route and reading list, which was shelved due to changing my job. Since writing recently, I’ve often been asked by friends of mine who are back-end developers: “What videos, documents, books do I need to see? How do I chart my career path?” . So I grew up with their own: learned knowledge, read books, and documents, video rarely watch.

Study schedule

This is one of the most frequently asked questions, mainly because I did PHP language development long ago. To show you my study time after graduation:

I get up at 7:00, wash up at 7:30, buy breakfast and go to the bus station while eating. I arrive at the bus station at 7:45, and wait for the bus. If I am lucky, I will get on the bus directly, but not in the next train. I will arrive at the company at 8:50, pick up water, turn on the computer and start working and writing codes at 12:00. I will read books and watch videos during nap time (knocking codes affects colleagues' rest). Stay in the company to continue learning, reading, hands-on implementation (the company has air conditioning more comfortable) at 20:00 home, buy rice, students blow water, reading, pressing the road 22:00 wash, read, watch teaching video at 2:00 the next day end study and sleepCopy the code

Because of work, I give up playing games (LOL, crossfire) and devote all my time to improving my skills. The technology is not good, the job is difficult to find, graduated is no longer a child, but a man with responsibility, have the ability to bear.

In the past few years, I worked as A PHP developer for 2 years and achieved senior RESEARCH and development. In 3 years, I began to undertake a series of work such as interview and project responsibility. Share my PHP learning path:

PS: Now we have moved to Lua/Go language for high performance projects

Primary advanced stage one

  • Basic Html+Css syntax, use of open source UI components, etc.
  • Mastered the basic PHP syntax, grammar, format, array function sugar, upload, download, cookie | session configuration principle, the namespace
  • Good command of mysql syntax; Write native SQL and know the order in which SQL is executed
  • To understand object-oriented | aspect oriented programming ideas; (Many older frameworks are process-oriented)
  • Understand redis | memcached basic commands and the difference between both
  • Understand using PHP framework, Laravel | ThinkPHP
  • Learn to use some basic Linux commands

Learning documents: PHP official documentation in English + rookie tutorial in Chinese

I highly recommend beginners to read more official documents, the most native and can exercise English ability; It basically covers all the syntax knowledge system of PHP. My tutor at that time only recommended the official documentation manual and gave a PHP study PDF. My own approach is: after reading it, I will write my own small project to use; That is to do it.

Thinkphp framework is used too much in China (my tutor recommended me to learn at university), so I try to choose ThinkPHP framework to get started. Laravel is not recommended for getting started because of too much syntax sugar, too many third-party libraries, and some other powerful components that are difficult for beginners. Personally, I think Laravel is a little bloated. Try to use the framework to complete your own personal blog system.

Intermediate advanced stage 2

PHP advanced

  • Master common design pattern concepts and code specifications
  • Master PHP common extension implementation principle and use
  • Master the principle and use of PHP reflection
  • Familiar with regular expressions
  • Learn debug breakpoint debugging and log query errors
  • Understand phP-FPM concepts and procedures, and learn how to tune it
  • Familiar with HTTP and TCP/IP protocols
  • Familiar with composer installation of third-party libraries, and can write a class library
  • Learn how to write chat features using SWool + PHP
  • Learn to use only one of the interface capture tools Fiddler, Charles and Whistle

Mysql advanced

  • Master mysqlNative command writingDo not rely too much on tools to create table modification field operations
  • Learn to use slow_log to view slow logs,explainKey analysis SQL performance, know how to adjust SQL statements, to achieve the optimal
  • Understand the syntax and implementation principles of mysql transactions (atomicity, isolation, consistency, persistence)
  • Understand the mysqlPessimistic locking,Optimistic locking,Row locks,Table locks
  • Master the index,The index classification(Primary key, Unique, Level 2, full text, combination),Back to the table,Indexes cover,An index pushdown,Leftmost matching principle
  • Familiar with mysqlConfiguration items, how to configureMaster-slave synchronizationandThe clusterThe principle of

Redis advanced

  • Master redis data structure application scenarios
  • masterThe message queue,Release subscription,The pipe,streamuse
  • Understand redisThe transaction,AOF,RDBPrinciples and Mechanisms
  • Understand redisA master-slave mode,The guard mode,The cluster,Distributed cache

Linux advanced

  • Learn to deploy a complete LAMP environment and run your own blog system
  • Master common text analysis tools:awk,wc,grep,sed,sortUniq, etc
  • Learn to writeshellThe script
  • Command for viewing resource processes:ps,top, netstat,df -h, free-h, and so on
  • Understand the meaning of nginx configuration items, know what each item is used for

Advanced advanced Stage three

PHP advanced

  • Ability to quickly develop projects and solve problems, able to lead small teams to develop projects (Ability to manage)
  • masterHigh concurrency,High availability,A high performance
  • Master the principle of nGINx load balancing,DNS round-robin, L4, L7;Forward agent,The reverse proxy, nginx high availability
  • Be familiar with usingMultiple processesProject programming
  • Be familiar withsocketProgramming, understandingMultiplexing technology(select, poll, epoll); Understand IO model principles
  • Be familiar withswoolFrameworks in new projects can use Swool as the lead
  • Master message queue usage:kafka,rabbitmq,rocketmqOne that can handle billions of messages, knows how to monitor message queues, handle exceptions, and can asynchronously decouple project functionality from message queues
  • Be familiar withelasticsearchSearch engine, and can be applied to projects
  • Be familiar withelkLog collection system overall process and context
  • Try writing PHP extensions in C
  • Learn another language if you have enough energy:Java, Golang, Python, Lua, Big dataThey need to know something about them or be able to use them

Mysql advanced

  • The index tuning, large table performance analysis
  • masterDepots tableMethod: horizontal and vertical
  • Master master and slave cluster configuration, know how to solve the problem of master/slave delay
  • Implementation of indexes,The transaction isolationHave a certain understanding of the mechanism of
  • Understand the mysqlDirty read,Phantom read,Unrepeatable read
  • Familiar with mysql triggers, views, and stored procedures
  • Familiar with open source mysql middleware and Ali’scanalIncremental data synchronization

Redis advanced

  • Proficient in RedisPipeline technology,The transactionProcessing,A distributed lock,The message queue
  • Master some uncool instructions:bitmap(bitmap),pub/sub(Publish and subscribe),GeohashImplementation principle,Stream(Message queue MQ)
  • masterredis+luaRealize atomic operation and script reuse function
  • Master the redisCluster deployment,Sentry mode implementationYou know what it is
  • To understandAOF(Append Only File)The logandRDB snapshotImplementation principle and algorithm
  • Try seeing RedisThe source code(Unfortunately, I didn’t finish it.)

Here is my redis article:

  • Hash application scenario analysis practice
  • The interviewer makes fun of me. You don’t even know that? The bitmap
  • Ops made fun of me. You didn’t know that? Redis information in detail
  • Redis publishing subscription: I think it should be the simplest and most popular article on the whole web.
  • Back-end programmers must: Redis-Lua guarantees atomic operations in concurrent cases
  • Interviewer: Tell me about your understanding of GeoHash and how to implement nearby people?

Linux advanced

  • Nginx configuration:Configure HTTPS,Load balancing,Forward agent,The reverse proxy; The most important thingopenrestyThe configuration of the nginx + lua
  • mastervimEditor commands and shortcuts, crontab timer
  • Be familiar withFile management,Access configuration,User configuration,Hard and soft links
  • Remember the common commands: cat, more, lsof, tail, less, etc
  • Understand compilation principles, Makefiles, processes, and signals
  • Be familiar withrpcConfiguration and deployment of

PHP books

“Deep Dive into PHP Object-oriented, Patterns and Practices”

Third edition: Douban score 8.2

Matt Zandstra has been developing Internet applications for more than 10 years and is currently an engineer at Yahoo! I bought this book less than a year after graduation, and I have read it for more than five times. As a whole, I feel that the content is delicate and basically cyclical and gradual. The content is mainly divided into four parts: object-oriented, design pattern, enterprise pattern and best practice; Object orientation and design patterns may be a little better, but the rest is a little less satisfying. But in general, if you want to know more, it is worth buying, after all, it is not very expensive.

PS: It’s a little dated for 21 years.

Mysql books

High Performance mysql

Third edition: Douban score 9.3

This book was purchased in September 2016. The content is too thin and thick. As you read, you get deeper and deeper, and you end up feeling like a DBA. It covers a wide range of knowledge and has been my comrade-in-arms for more than two years. Worth recommending

Mysql database Development, Optimization, Management and Maintenance

Second edition: Douban score 7.6

This book was recommended to me by a colleague 10 months after MY graduation; The first half of this section covers the basics, while the second half will dive into the underlying implementation. After reading this book, I feel that my knowledge of mysql has increased a lot, views, triggers, stored procedures, etc. It took me through the world, so to speak.

PS: But this book is really too thick to carry. I usually read when TAKING the subway, but this book is so heavy. And it feels a little old-fashioned.

How mysql works – Understanding mysql at its Roots

Douban scored 9.4

I bought this book in early 2021. At that time, I only read a few chapters in the Gold Digger booklet. I felt that the author really designed the chapter order of this book carefully (because I don’t like reading electronic books), so I didn’t buy the booklet. However, I went to JINGdong to buy the book a month after I knew the author published it. Two thirds of the way through.

The author writes in a way that leads from the existing scenario to the design of the solution, gradually uncovering the details of mysql implementation in a circular manner. It’s a delicate way to do it. The author will tell you: “What does mysql look like? What’s the problem? How to Solve a problem, step by step to explain its principle, is a good book. And I also learned a lot of knowledge points in this book, many places are suddenly enlightened feeling.

Redis books

Design and Implementation of Redis

Douban scored 8.6 points

I bought this book in the first half of 2017. It should be the first redis-related book I bought, but unfortunately, I lost it when I went out to play without finishing reading it. For those who like to figure out the principle of Redis, there is also the relevant source code analysis; It is relatively easy to understand.

Redis Deep Adventure – Core Principles and Application Practice

It scored 8.4 on Douban

I bought this book in August 2020. What’s interesting is that I found it in the Nuggets Booklet, but I don’t like electronic edition, so I went to JINGdong to search and bought it. The author is Qian Wenpin, whose name is the same as the book. Close to 250 pages of data. I have looked at both sides, and the overall feeling is that the original intention of the author is not to write the design and bottom layer of Redis, but to tell you the application through the actual situation.

So much so that many developers thought the book was bad, vulgar, and even rubbish; But radish cabbage each has his love, although most of the text is shallow, but the main content is ok.

Nginx + Lua books

Nginx+Lua Development

Douban scored 4.6

I bought this book in February 2020, because I already had the nginx+ Lua foundation, and when I bought it, it was nearly 600 pages.

A lot of people ridicule this book, saying that copy the document pages, depth is not enough, more no actual combat, too basic things. To tell the truth, I did have such a feeling after reading it, mainly because it was very expensive. The basic lua nginx tutorial will take you through some of the principles and library usage of Nginx + Lua.

OpenResty Best Practices

OpenResty Best Practices Book Markdown Documentation

This site has been built over the years, from lua basics to advanced to OpenResty configurations to lua’s advanced class libraries and nginx_Lua usage modules. Recommend learning

Pyton books

Python Programming from Beginning to Practice

Douban score 9.1

This book was purchased in October 2018 in A certain east, I spent some time to read this book about two times; It is not recommended to buy python for those who have basic knowledge of python. Getting started with Python is a relatively simple language. This book is a good introduction to development for starters, but it’s a bit behind the curve for the python family.

Python Basics (3rd Edition)

Douban scored 8.2

I didn’t buy the book, but borrowed it from my colleague. It was a pity that I didn’t finish reading it, because it was a basic tutorial, so I didn’t have much desire to read it. Just seems too boring 🤣 😂 😄; It couldn’t be used for actual combat projects, so I gave up reading it.

Linux books

Unix Network Programming – Volume 2, Interprocess Communication (Chinese version)

Second edition: Douban score 9.3

Look at the score, look at the comments, many of the ZA will not say, as the back-end development of these or must know the knowledge; If you want to improve your capabilities and learn more about Unix networks, this is a great book to read. Although published in 2010, the overall thinking of programming is pretty much the same.

“Birdbrother’s Linux Private Dish Foundation Learning chapter”

Fourth edition: Douban score 8.4

If you want to know more about Linux, check it out! A book that even white people can read.

Go Language Books

So far, I haven’t bought any books related to Go. Most of them are read and learned on websites:

The Go language tutorial | novice tutorial entry level”

The Go language from entry to practical teaching video |”

Go Resources 英 文版

Advanced Programming in Go

Chinese Version of Go Language Bible

Document a bit doha, predecessors summarize, posterity enjoy the shade; We are all standing on the shoulders of giants to learn, I have not finished learning, basic entry and combat to see the end. At present, the company has encapsulated its own framework with GO, which has been applied to the project.

algorithm

Diagram of algorithms

It scored 8.4 on Douban

Anyway I think I as a white, or very easy to accept; However, I vaguely remember the embarrassing fact that the instance was written in Python code, which was very confusing at that time.

For those who want to get ahead, check out this book: Invincible:

Algorithms (4th Edition)

Douban scored 9.4

Good book I really need not say again, read a little, too dry goods. Personally, I think it is a little friendlier than Introduction to Algorithms, focusing on practical ability.

Network protocol

Illustrated HTTP

Douban scored 8.1

This book gives a comprehensive and systematic introduction to the HTTP protocol, from shallow to deep, which is perfect for beginners. The explanation is lively and easy to understand. The book also has some illustrated cases, so if you like, you can start to read them and expand your knowledge.

The Definitive GUIDE to HTTP

Douban scored 8.6 points

I haven’t finished the book yet. It’s too thick and boring and easy to fall asleep; But it will give you a thorough understanding of HTTP. Just read one of the books above. I chose Illustrated HTTP because it’s thinner.

TCP/IP Volume 1: Protocols

Douban score 9.2

This book has nothing to say, we see douban ratings and reviews know, want to enter dachang, this book you do not read, absolutely lost.

TCP/IP Volume 2: Implementation

Douban score 9.1

😂 books thick I can’t breathe, this book is a complete and detailed introduction to the TCP/IP protocol is how to achieve, really can not be detailed in detail, want to in-depth understanding of the TCP/IP implementation principle, please buy a look, I can not guarantee that you look at falling asleep.

Other books

Docker Container Technology in 5 Minutes a day

Douban scored 8.5

I vaguely remember in 2018, when I was still working in my old employer, the new colleague forced me to learn Docker together. At first, I resisted. In the later group sharing meeting, they were sharing Docker, and I started to learn docker on and off. Looking at rookie tutorial, and then see colleagues to buy this book, skeleton clear, concise length for my small white.

Deep Distributed Caching: From Principle to Practice

Douban score 7.0

I read this book in 2019 in order to expand my knowledge. No matter how others evaluate, the starting point is not the same, each take what he needs; Have like small partner can try!

Some books I have left behind in Zhengzhou and Shanghai (I practiced in Zhengzhou, went to Shanghai when I graduated, and then moved to Guangdong). I don’t like reading e-books, so I seldom recommend e-books. What I watched most in the video was teacher Han Shunping’s PHP from beginner to master, Java from beginner to master and so on. Part of the books are still in the company, now at home home isolation work:

These are on my desk, and some are at the bottom of my box 😂 😂 😂 :

Here’s a picture OF me looking at a colleague’s book:

Problem solving

How to get out of the confusion period

To be honest, as a developer for more than four years, I can’t be self-deprecating, but I can talk about how I got out of the one year, three years of confusion and confusion:

At that time, just one year after graduation, I went to attend a technical lecture by chance. As an auditor, most of the participants were HUAWEI PHP developers, Tencent technology leaders and Ali Java leaders. But after the lecture, I couldn’t help thinking. Because compared with them, I like what all can’t, very small, know too little, I can’t communicate with them at all, just sit in a corner, with various techniques is said rookie in the company, after that time, I am a bit depressed all day, don’t know what to do, and always wanted to do something, has been paralyzed during, also want to give up a career change. I mean I went into a period of confusion, and here’s how I came out of it (from a conversation with an Ali mogul) :

  • Adjust their mental balance, always tell yourself that you are still young and can learn, after all, I only graduated one year
  • When we are in a confused period, do not know what to do, and even do not know how to do career planning; Don’t do anything, stay where you are, keep doing what you’re supposed to do, and you’ll be different after a while, okay
  • We must be able to tolerate loneliness. Learning programming and improving technical ability is an iterative process and a lonely process
  • When career planning is not clear, follow the original route to continue to move forward is
  • Self-abasement comes from the psychological function, the skill level is just a moment, the road is still long, continue to work hard is; After all, no one is born a computer giant

Learning style

In my opinion, what books, documents and videos you read is not so important. What is important is the absorption and understanding of knowledge when you watch them. You’ll find yourself surrounded by people who take a long time to learn a document or book that someone else has only read once, while someone else is getting to grips with it. You will also notice that you and other people express and analyze the same knowledge point very differently. Then you will envy others in your heart, why others can do everything, I can’t? Over time, you will become inferior and have no confidence.

All of which you can discover with your own efforts:

  • The person follows the person different: must know the person follows the person affirmation to have difference, otherwise how can have common undergraduate course and 211, 985 school distinction, I all accept fate
  • Learn differently: Others learn not just by looking, but by thinking through code cases and problems as they look
  • The depth of learning is different: others will look at the source code when you rest, and then walk through the implementation principle
  • Move your little hands, not your tricks; The ancients have told us
  • Most important: to learn to give, not just pay back without action. Spend a lot of practice researching and implementing features

For example, I learned Lua to do the project: only three days

Promotion promotion

Everyone do not panic, I have had such an embarrassing situation, promotion is not to jin let you promotion, to know that before the two is not only RMB gap, but also the recognition of your technology. Here’s how I did it:

  • Daily requirements development, do more requirements, more important functional modules
  • If new technology is helpful to project performance, I will practice in the local test environment, and then talk to the leader. If it can be used online, it will be a bonus
  • The technology you introduced must have an impact on the project, such as rabbitMQ message queuing to solve the asynchronous decoupling of billions of data, swool+ PHP to do microservices; For example, the introduction of go language, Lua language to do high-performance Web projects, improve concurrency performance
  • Learn to communicate and share your skills

This is my own experience of some, perhaps only a partial word. This is just a part of the list. Keep in mind that it is difficult to improve yourself and improve yourself by writing down your needs every day. It is necessary to constantly accept new challenges so as to benefit your own development.

conclusion

A good memory is better than a bad pen. Powerful bosses don’t simply read a document, a video or a book. They grow by referring to actual situations in real projects.

Well, I am a mu, original is not easy, encourage the author to create a better article, please a three even praise!!