Job Recruitment Website - Job information - After 1, hours of coding, I failed to become a senior programmer.

After 1, hours of coding, I failed to become a senior programmer.

Malcolm Gladwell, editor of CSDN, once said in Outliers that it takes 1, hours of practice to really master something. Greg Bulmash, the author of this article, has more than 4 years of programming experience and has written 1, hours of code, but he failed to become a senior programmer. Why does the 1,-hour law fail? He shared some of his views. Maybe his experience can help you. Let's take a look.

original link:

this article is translated by CSDN, and the source should be indicated when reprinting.

translator | edited by Zhang Yuming | produced by Tu Min

| csdn (ID: csdnnews)

Malcolm Gladwell said in Outliers that it takes 1, hours of practice to really master something. In fact, 1 is just a rough number, and the meaning of this sentence has been oversimplified. I have been programming off and on for over 4 years. I may have written 1, hours of code, but I haven't even become an excellent programmer, let alone a master programmer.

I think there are several reasons. First of all, during these 1 hours, I mainly learned four different programming languages and some other auxiliary languages. When I switched from one language to another, I found that some of their concepts were interchangeable and some were completely different. Interestingly, concepts that are meaningless in this language may be used to construct it.

for example, JavaScript has no local linked list implementation, but if you search for "linked list" in the src directory of V8 GitHub library, you will find that 76 commit mentioned it. Even if they don't use the linked list of C in the language itself, they will use the linked list of C under the engine.

Every language has its own grammar and special realization methods, which must be learned, not just its concepts. Best practices in one language may not be the best for another. I never spend much time on compiling languages, and almost always use interpreted languages, such as BASIC, PHP, JavaScript and Python. I have studied C# and Java, and done Hello World with Rust, but it is very difficult for me to compile from the source code in Linux, so I usually just download the source code, follow the instructions in the tutorial, and then pray that the code can run.

in addition to learning these languages, I also learned the basic concepts of server technology and system architecture, not from the perspective of programming, but from the perspective of network administrators or system administrators. And whether it is to build a large website, create a vector diagram in Flash and render it into a bitmap, or learn to pass the certification of AWS solution architect assistant, I have done it many times. But I have forgotten a lot of things. I have learned the frameworks and libraries of these languages, such as JavaScript's React and JQuery and PHP's Laravel ..... and then I forgot a lot, because I learned them to complete a project, and then I didn't use them again.

Even if you have written 1, hours of code, it doesn't mean that you can easily switch between different languages. When you really switch, you will find that 1, hours is not so magical, because of another inevitable reason: memory decline. As I said, if I stop using a language, or even just stop using one of its functions for a while, I will forget it just like I forgot "Spanish in high school". I finished Spanish level 3 in high school and passed Spanish level 4 in college, and got an A. Now, I may only remember less than 1% of the content.

For example, I almost completely forgot how to use regular verbs to connect past tense, let alone irregular verbs. But because I have practiced enough before, I know my own shortcomings, so I may recover my previous knowledge faster than those who just started learning. But it may take months of intensive practice to fully recover.

ten years ago, I was proficient in PHP, worked in a customized MVC framework (created by others), used Doxygen to map the inheritance hierarchy of classes, and used JQuery to build front-end interactivity. But I stopped using PHP seven years ago and switched to Node. Now, it takes me 5 minutes and corrects some grammar mistakes before I can correctly write a Hello World in the PHP copy just mentioned.

in December last year, I established five React projects for the front-end library certification of freeCodeCamp, but after that, I haven't coded the React projects. After two months, when I began to prepare for the interview, I felt like a novice to React. If I see my own code, I can understand it quickly. But because many things are just auxiliary tools I prepared, I forgot all about them, so I need to go back to the document and start a new React project before I start working. Compared with a novice, I just walk faster.

that's the difference between a novice and a beginner. Ten thousand hours can make you a violin master. But if you change your instrument every 5 hours and want to be the protagonist of the whole symphony orchestra, you may not be better. So in order to strengthen and expand your skills, practice should be not only extensive, but also continuous.

what is the concept of 1 hours? It is to work 4 hours a week for five years and take a week off for two years (holidays, sick leave and vacations are all within these two weeks). You will find that some jobs require five years' experience within a three-year framework. Five years seems to be the standard time required to become an expert. Because of ignorance of the framework and this simplified standard, there will be logical contradictions, in a word.

how much working time does a professional developer spend on emails and meetings? How much time do you have to really code and think about coding problems? When I was writing a document at Microsoft, my manager said, in any case, you only spend about half of your day on actual production. The rest of the time will be spent on trivial things, such as answering emails, meeting, progress/status report, answering random questions on IM or chatting with others ...... < P > So I only spend 2% of my time writing code, because the other 8% of my time is writing documents and tutorials, which means that I only write one hour of code every day on average. I used to be a genius in debugging with the development tools in the browser, because I have rich experience in this field and often update the new version. However, although I knew all the shortcut keys of the development console by heart at that time, I basically forgot them after I left Microsoft for 7 years.

in fact, since I entered the developer relations department, I have spent 1-2% of my time writing code every day, and the rest of my time writing tutorials, making documents for conference lectures and webinars, formulating strategies for establishing and cultivating a developer community, formulating the best way to show new functions, and dealing with various people-product managers, internal engineers, external developers, product marketing managers, demand generation and social media managers, and lawyers.

the last thing to remember is that you won't spend ten thousand hours learning new things. If you are learning the violin, you may spend hundreds of hours learning some elementary works. Before you learn new things, you have mastered some elementary things, and in the process of repeated practice until perfection,

you learn a lot, and use what you have learned to learn new things. So most of these ten thousand hours are intensive.

in programming, it's like writing the same To Do single-page application many times. You can refer to the tutorial the first few times, but in the end you must be able to write it without any reference. It's like watching music and playing Ode to Joy slowly, then remembering how to play it, and then preparing to play it at the concert.

However, when you need to deliver a project before the deadline, how long do you have for intensive practice? In many companies, you will not be given time to expand your skills and strengthen your coding, and you need to use extra time to complete it. Some companies will give you 1% or 2% time to do independent projects, but few companies want you to spend these hours on simple exercises.

New frameworks, new best practices, new languages and new models are coming into being at an ever-increasing speed. In this case, just getting qualified results in new aspects will be as difficult as playing Ode to Joy with professional players.

you need to balance the time of reinforcement and exploration, especially when you code less than 5% every day. You must constantly strengthen yourself through practice and build up your psychomuscular memory until you can solve them in your sleep. The violin has not changed substantially for hundreds of years, but the programming is constantly changing. Being a master programmer in a specific language means sticking to it for a longer time. You have to do intensive exercises after work hours, complete tasks, try to be an excellent programmer, or jump to another company that can give you enough time to practice.

Even if you don't become a master programmer after 5 or 1 years, it doesn't matter, because it's harder to finish 1, hours well than it looks.