For a long time, programmers have had a seemingly reasonable argument in terms of the scope of learning knowledge.
As long as you are proficient in one programming language
In fact, this sentence is okay if you don’t go to extremes. However, in real life, many people misinterpret and one-sidedly understand this sentence. Let’s put it simply: if you lie down, please reflect on it silently.
In today's era, the so-called mastery of a subject is not as simple as you think. Let’s take PHP as an example:
Proficient in PHP, to what extent? Is it just that the grammar is very familiar? Do you know all PHP functions by heart?
We see many PHP beginners:
1. Don’t learn js (only know DOM operations and not There will be no difference. I thought ECMAScript is a new language, and I have never heard of CommonJS, babel, webpack, etc.)
2. I don’t know the database (only adding, deleting, modifying, and checking will make no difference)
3. Not learning Linux (there is no difference between being able to turn on and off the computer or not),
4. Not learning design patterns
5. Not learning other auxiliary back-end languages ( Think PHP is omnipotent)
6. Don’t understand http protocol at all (think PHP can only do web pages)
7. Don’t know redis or memcached at all (everything is done directly by PHP Call mysql)
8. Distribution is not possible (it is considered that the website can be run on one machine)
Recommended courses : php advanced Roadmap: A must-see advanced route course for PHP novices to masters
If you are unfortunate enough to get shot. So let me ask you, if you think you are proficient in PHP. So the question is, where is the mastery? What can you do with PHP? I believe that if you don't know any of the above and are very resistant to learning relevant knowledge (it doesn't matter if you don't resist), and think that you only need to be proficient in PHP syntax. You should be out.
My point of view is: The so-called mastery of one subject. It does not mean to be proficient in a certain language or even grammar, but to be proficient in the development routine of a certain field. In order to master this routine, in addition to being familiar with the language used to implement this routine, there are too many things to master. Some students may say, then I won’t learn PHP and switch to Java.
Then think about it for yourself, to make a good website, even if you don’t use Java, you still have to learn databases, JS, Linux, design patterns, and xxxxxx (omitting 10,000 words here).
So where does the so-called "proficient in only one subject" come from?
I will use my old body to tell you (take the field of web sites as an example, do not cover everything with just one point):
long long long long ago. At that time, the Internet was underdeveloped, mobile phones were still brick Nokia 3310s, the amount of corporate data was very small, and various technologies were very immature. At that time we were developing a website for small and medium-sized enterprises. Indeed, you only need to understand the syntax of a certain language and add, delete, modify and query access or mysql or sqlserver.
By the way, don’t ask me my age.