Home > Article > Backend Development > Why is it so hard to become a programmer?
Some people say that every engineer who looks like a normal person is actually a sociopath who has endured, been depressed, and been traumatized on the way to learning program development.
In the process of learning program development, I often see "talks about joys and sorrows" on the Internet, and I also hear engineers friends around me who have a bright future share their learning process. I always feel that the same story is repeated with different people. , like a wolf's cry, echoed one after another from the distance.
I recently read Erik Trautman's article "Why Learning to Code is So Damn Hard" in the Viking Code School blog. The article divided the process of learning to code into four stages and explained the two The key factors that affect the formation of each stage are "data density" and "knowledge breadth", which are finally gathered into this picture:
This article is very interesting and very consistent with the "bitter history of engineers" I have heard, so I decided to publish this The four stages are introduced to you. I hope that before entering this road of no return, program beginners should keep their eyes open, plan carefully, clearly understand what is waiting for you ahead, and be fully mentally prepared!
Next, I will introduce the four stages that Erik Trautman must go through from just starting to write programs to becoming an engineer:
If you want to become an engineer, please be prepared for this necessary journey
First Suppose your ultimate goal of learning to write programs is to make a living in this industry - to work in a related field or start your own business. Whether you are fully prepared can be seen from your confidence (Confidence) and ability (Capability) distribution chart:
As you acquire more and more knowledge and skills, your self-confidence will increase and decrease accordingly, and finally you will reach the "Job Ready" point where you are capable and confident. Before Job Ready, it can be divided into four stages:
The first stage: hand in hand and heart to heart honeymoon period
Friends who have just started to enter the program development world always have lofty dreams and ambitions. You can’t blame them. After all, on the one hand, when we were young, we heard a lot of rumors such as "writing programs is difficult" and "computer science is difficult", which scared many people into studying social sciences from the beginning (...no offense to social science professionals) ; On the other hand, the "Everybody Write Programs" movement is so successful. There are many tools and learning platforms on the market that make program development easy to understand and easy to get started, such as online platforms such as Codecademy, Treehouse, and Code School, or It is programming language tools such as MIT's Scratch language and Google's Blockly that have successfully created the illusion that everyone can write programs and make a living from this profession.
Suddenly our problem is no longer "difficulty", but "sky-high expectations" and "earth-big dreams".
The most important thing is that the tools and platforms mentioned above are really useful, leading beginners with no program development experience to understand variables, conditional statements, and program syntax step by step. When you pass all the way and learn the basic logic and syntax of a programming language, you will have a great sense of accomplishment and a great increase in self-confidence. You will begin to feel like "So I can do it too" and "That's all I can do when writing programs". Basically I feel that I am not far away from being an "engineer".
This stage will be full of joy and sense of accomplishment. With the help of various online tools and online teaching, you will enjoy the sense of dominance of giving instructions with your fingertips and having the computer execute them accurately. You will admire the magic and power of programming language. From Hello World to simple loops, your sense of accomplishment increases every time you complete an exercise. At this time, many people will think that they have fallen in love with computer science (and feel that computer science also loves them). In the "honeymoon period" when your abilities have improved and your self-confidence has greatly increased. At this time, you may feel that the world is really beautiful and your life will probably flourish from now on, but I have to tell you cruelly:
This journey has just begun.
Second Stage: The Cliff of Confusion
Just like most couples/newlyweds, the honeymoon period will end, and you will slowly discover that "falling in love is not that simple."
As the difficulty of the homework increases (the key point is that the length of the program code will also increase), program error warnings will appear frequently, and debugging will begin. And often the biggest challenge is – when an error occurs, you have no idea what it is or what questions to ask. Your learning progress begins to stagnate at this stage, as if you suddenly hit a cliff halfway through the road and have no way to go. You begin to feel confused about your previous knowledge and lose your confidence.
Usually this stage will happen after you complete the basic online teaching. Take making a personal website (Portfolio Website) as an example. The W3 School platform provides a series of program teaching related to web page production such as HTML, CSS, JavaScript, etc., allowing beginners to learn syntax and functions unit by unit. Each unit also has The example demonstrates usage, it seems so simple! After learning everything, you are ready to build your own website, open the text editor,..., and then it gets stuck after writing only two lines.
Perhaps relying on Google searches can help you complete the basic structure of the website, but when you want to realize your own creativity and add personalized design, the answers and demonstrations on the Internet are always different from what you have in mind. , so the program code cannot be copied entirely. However, the program code that is pieced together seems feasible, but in fact it is far from it! But I still don’t know where to start debugging. I may have invested most of my time in the program code but it is still “decreasing but not increasing”, and there is no progress at all.
This is a particularly frustrating stage that must be passed. If you want to become a Programmer, you must go through this level, bravely jump off the cliff, and force yourself to spread your wings and fly high (of course, the number of chicks who fall to death at this stage is very large).
But even if you eliminate countless bugs and finally complete a few small projects, don’t be too happy, the road ahead is still very long and more challenging! For those who want to enter this industry, the "cliff of confusion" is usually the turning point when you decide whether to enter this industry wholeheartedly. When you invest all your time and energy in writing programs, you will enter the most frustrating stage. The third stage of cold.
You may be curious, why are there so many differences between the closely connected first phase (honeymoon phase) and second phase (cliff of confusion)? If you are also going through the above two stages, you need to know that the reason for the stage transition has nothing to do with you. It is not entirely because you are stupider than others or do not work harder than others, but because of the change in "resource density" reason.
Factor 1: Resource Density
As mentioned in the first stage, when you start learning to write programs with zero experience and zero foundation, there are countless resources and tools around you waiting for you to use. Go to Google and search for "Learn to Code" and you will find a lot of programming learning platforms, teaching texts, teaching videos, and even experience talks, which will make you feel extremely kind and warm. It is called the "honeymoon period of holding hands and connecting hearts." Well deserved.
However, by the second stage, the number of these teaching resources will be greatly reduced. Any program learner who has just left the beginners can confirm that my statement is true. The obstacles that beginners encounter at the beginning are all "general common problems", which will be noted in teaching materials and textbooks. Later, due to the difficulty of the homework and personal needs, the problems gradually become more complicated. You have to start from Stack Overflow or some programmers. Check out the blog for clues to solve the problem. Until the problem you encounter has become so difficult that you can't find any clues on the Internet, you will enter the next stage.
The third stage: the sandbar of despair
To understand the key to entering the third stage, you need to understand another important factor that affects the changes in each stage: breadth of knowledge.
Factor 2: Scope of Knowledge
"Scope of Knowledge" is the range of knowledge fields you need to get through each stage. At the beginning, the knowledge you need to absorb is very concentrated. No matter which programming language you use or what the function is, you must first learn variable types, declaration syntax, loops and conditional judgments, etc. At this time, just ask an engineer to teach you. You are all the same, because these are the "important things to know".
However, after learning the basic skills, the areas of knowledge you need will suddenly expand a lot, such as starting to learn object-oriented or focusing on the efficiency of algorithm. You will need a solid computer science background to cope with it, and every application needs It can involve more changes... Believe me, this is not something that a few MOOC courses can save you.
In this period, the almighty Google will only throw you more things you don’t understand, and there will be no relevant clues at all! The worst part is that you have no idea what you don’t know. (You don’t know what you don’t know.). As a result, the feeling of powerlessness that "you can never finish learning, and the more you learn, the less you understand" came overwhelming, and entered the third and most difficult stage - "the sandbank of despair".
As the name suggests, this stage is like crossing a desert. It is a very long and lonely journey, leaving you with a sense of despair that you don’t know how many years or months it will take to get out of it. In the endless desert, I couldn't figure out the east, west, north, and south at all. After searching for information for a long time, I found nothing. I was also misled by mirages (wrong information or seemingly feasible solutions) from time to time, which made me feel disheartened and dizzy. In this There are even countless promising young people who have died of exposure, thirst, or despair.
But as long as you endure in the sandbank of despair, you will feel much more comfortable next time! After accumulating enough experience, program errors will be greatly reduced, and when you reach a certain level of knowledge, you will be able to accurately judge the direction of the problem and get to the core. As a result, your work efficiency will be improved, and your breadth of knowledge will gradually focus. When you finally walk out of this desert with exhaustion all over your body, you have entered the final stage.
The fourth stage: post-traumatic recovery period
After successfully crossing the desert on the bodies of tens of millions of people, your self-confidence begins to rise, and your Google skills can also be said to be at the level of a god. By this time, Hacker News news and super hard MOOC courses are no problem. You have also chosen a certain programming language and framework to specialize in, and you have the ability to create applications that can operate normally.
But there is always a vague uneasiness deep in your heart. You think the program can be "used" but in fact the code is messy. Under the title of engineer, you actually stumbled into this field by mistake, although you seem to have everything to get the job. Conditions, but you are always afraid that the interviewer will discover your weak computer knowledge... You are going through a "post-traumatic recovery period."
After flying over the cliff of confusion and crossing the sandbank of despair, you should have learned what you should learn and done what you should do, becoming a veritable engineer. However, you always feel that your qualifications are mediocre and your foundation is unstable. Although you have successfully built My confidence has improved with each project, but I always lament that there is still a big gap between myself and the "professional engineer" in my mind... These are all caused by "Impostor Syndrome"!
During this post-traumatic recovery period, you may often doubt yourself, but as long as you continue to work hard along with this wave of efficiency improvement and confidence recovery, when your ability and self-confidence reach a certain level... Congratulations: You Are Job Ready!
Receive LAMP Brothers original PHP tutorial CD/"Essential PHP in detail" for free. For details, please contact the official website customer service: http://www.lampbrother.net
|