From HTML novice to PHP, I felt that building a website in PHP was quite simple at first, but later I felt that the knowledge I learned was not enough. The website is far from a message board, as simple as logging in and registering.
Currently I don’t know much about these technologies:
Server operation and maintenance, website deployment, technical architecture
php advanced technology, scheduled tasks, queues (I have always used php as a "static" language, it will die if no one accesses it) composer docker Ionic phonegap
mysql transaction, advanced
Other databases nosql memcached redis mongodb
css3 html5 html5 new features html5 website angularjs framework React framework requirejs CommonJS
nodejs npm Grunt tool git github
Knowledge of e-commerce website system design, large concurrency, flash sale system design
Search technology, I need to solve my current sql word link '%$q%'
Linux php environment deployment and optimization. Linux lamp environment optimization, common web software environment configuration, installation
Design patterns, algorithms
The above is what I desperately want to learn.
I want to learn everything about web development, front-end and back-end. Some people say that if you feel that you have reached a bottleneck, it’s time to read a book. I hope the master can tell me and recommend some books. Both front-end and back-end, as well as practical basics are acceptable. Thanks!
From HTML novice to PHP, I felt that building a website in PHP was quite simple at first, but later I felt that the knowledge I learned was not enough. The website is far from a message board, as simple as logging in and registering.
Currently I don’t know much about these technologies:
Server operation and maintenance, website deployment, technical architecture
php advanced technology, scheduled tasks, queues (I have always used php as a "static" language, it will die if no one accesses it) composer docker Ionic phonegap
mysql transaction, advanced
Other databases nosql memcached redis mongodb
css3 html5 html5 new features html5 website angularjs framework React framework requirejs CommonJS
nodejs npm Grunt tool git github
Knowledge of e-commerce website system design, large concurrency, flash sale system design
Search technology, I need to solve my current sql word link '%$q%'
Linux php environment deployment and optimization. Linux lamp environment optimization, common web software environment configuration, installation
Design patterns, algorithms
The above is what I desperately want to learn.
I want to learn everything about web development, front-end and back-end. Some people say that if you feel that you have reached a bottleneck, it’s time to read a book. I hope the master can tell me and recommend some books. Both front-end and back-end, as well as practical basics are acceptable. Thanks!
The list you made is great and the knowledge is very complete, but I personally think that the bottleneck you are facing now cannot be solved by books. In other words, it is difficult to solve it with books alone.
For example, high concurrency, flash sales, architecture, these are often things that are not accessible to existing businesses. There are generally two purposes for learning: either to cope with interviews, or for future business development, so that you can top up when needed (knowledge reserve). Different purposes have different learning means and target levels. For example, if you are going for an interview, just have a certain understanding of the scenarios and common solutions. You don’t need to make up anything during the interview. Just say that you haven’t had the opportunity to contact the person but you know how to do it. That is a good answer. If it is for business development, and if the current company will develop to that level soon, then it has to be put into practice, and you can communicate with the boss. The boss may be worried.
But if your company is far away from any scene and you don’t plan to change jobs, then don’t waste your precious time and learn something else
Whether you are used to reading books, videos, or like me, you are used to learning from Google and StackOverflow, the only constant end point of learning is always practice. No matter what your purpose of learning is, always give yourself the opportunity to practice before you start. The company needs to communicate with the boss. The company does not need to start small projects on the side. If it is inconvenient, then stop learning to the extent of "understanding the problems and common solutions"
You already have a good knowledge base, so it shouldn’t be difficult to find a breakthrough based on the company’s current/future needs. Trying to learn based on the company’s development needs is the most efficient and profitable. Believe me, the boss will always like that the most. Employees who can jump up and say "I've seen this thing before and there are three options. I think option B is currently the most suitable for our company's situation. I can take the lead in making this happen"
In the above two points, I have been talking about scenes repeatedly. In fact, it is very similar to English. The core ability of English is not the tens of thousands of words, nor the advanced grammar, but the "sense of language", or in other words, from the scene The ability to relate to appropriate expressions and in turn understand the scene from other people's expressions.
Most of the books and videos, including online searches, can only solve the problem of "how", but I always think that "how" is almost the least important thing, at least for Internet technology, except for extreme scenarios, In 99% of cases, "how" is not a problem. Just find the most suitable class library, read the documentation, and call and debug it. The key to the question is always "when" and "what", and occasionally "why"
how: How to achieve something (such as how to support large concurrency), this is really not important
when: When is it necessary to introduce a solution to support concurrency? How many concurrent users can a common single-core 8G server support? How to monitor concurrency to confirm whether expansion is needed? How much concurrency can be improved by common concurrency optimizations? This determines to what extent the business needs to consider introducing corresponding solutions . Premature optimization is the first of all evils
what: What is the core problem of concurrency problem? For example, one direction is horizontal expansion/automatic expansion, the other direction is data consistency (transactions and distributed transactions) under high concurrency, and of course there is also single-machine concurrency optimization. If you understand it, you will find that stand-alone optimization is indeed important and fundamental, but most of the time it is far less effective than the first two. If you are ignorant and just rush to the word "high concurrency" and learn a lot of single-machine optimization things, you may not be able to use them in the end
why: Why does the company need this technology? Where is the intersection between business and technology? Does your company's business model determine that it needs to support a large number of concurrency to make profits? Is the company's business data too precious to be lost, so it needs powerful off-site disaster recovery? Or is it because the company's business cannot accept long downtimes, so it needs disaster recovery and flexibility and high availability? Of course, the slightly depressing reason "high-level executives like this technology" cannot be ruled out.
Taken together, the problems other than how are simply scene problems. It is really important to think about this. Only by thinking about this can your study be purposeful, organized, planned, and final. ResultsEffective Learning
Finally, the only book I recommend to those who hate reading books to study is the best study list. There are many important points that you need to learn/focus on that are not listed, "The Pragmatic Programmer", translated name "The Way of Programmer Training" is a bit vulgar, but it would be a pity to miss it
Attached is another answer "How can programmers practice their skills in combination with the projects they usually work on?"
When a programmer encounters a bottleneck, reading books or whatever is of no use. The best way is to change jobs
Go step by step, buy books, do project exercises, and be proficient in using at least two PHP frameworks
Start learning from the basics, PHP basics, HTML basics, find some small projects to look at, and then you can get in touch with frameworks, such as Codeigniter, which is easier for novices to understand. The key is to make something by yourself.
You can check out more PHP technology blogs:
http://blog.tanteng.me
《Brother Bird’s Linux Private Cooking》
githug - a small game for learning git using git
Similar ones include vimtutor
Read the technical blogs of several big companies and learn what front-line developers are doing, that’s about it
Tencent Lecture Hall
Tencent Full-Terminal AlloyTeam Team
Comment on Meituan Technology Team
Mogujie Technology Blog
《Dahua Design Patterns》
《Code Encyclopedia》
I know little about other aspects, please add more
First of all, don’t feel that you are too weak. Feeling that you have encountered a bottleneck means that you still realize that you are insufficient in some aspects, but don’t start learning blindly. My suggestion is:
It should be thereBreadthIt should be there. If you start from PHP, then you should have some understanding of Web, database, operation and maintenance, and architecture
Think about what you will do in the next five years. Will you always be a programmer? What position does a programmer occupy in a team?
After thinking about 2, you should have a continuous and deep understanding
Learn Linux scripts, learn full-stack frameworks such as symfony or yii, and become familiar with using cloud products for large-scale application scenarios.
What you have to think about when you reach the bottleneck is actually very simple, that is, don’t think about anything, do what you need to do in a down-to-earth manner, and accumulate more knowledge. The reason for the bottleneck is that you cannot meet the standards of Bofa. Improve your understanding of technology. If you have the opportunity, get exposed to a wider technology stack. Try not to use one language until you are old. However, this does not mean that you can use all languages or abandon PHP. To learn some ideas in other languages. Then when using some third-party technologies or frameworks, try to learn some underlying knowledge in depth without affecting the project process.