@Crossin Looking back at my student days, the biggest detour was the fear of taking a detour and the desire to avoid taking a detour. I am struggling with what language to learn, what direction to research, whether to work on a project or to work on an algorithm, for fear that a single misstep will lead to everlasting regret and that I will embark on a path of no return. It took me a long time to realize that it is better to find a point and stick to it than to worry about the choice. It is like climbing a mountain. You are at the foot of the mountain wondering which road to take. In fact, every road can lead to the top of the mountain, and no road is straight and flat. You hesitate to move forward because you are afraid of missing the scenery of the other road, but you don’t know that as long as you reach the top of the mountain, you can see all the mountains. If I have to share a lesson learned, it is to write as much code, read source code, and read documentation as possible. There are two phrases, one is "no effort is in vain" and the other is "different paths lead to the same destination". @Blueve Detours in the learning process are inevitable, but detours in learning methods can still be avoided. Gaining experience and wasting time are two different things after all. I am a completely self-taught person. Although I have entered a professional class now, I think my experience can still be shared with everyone who wants to learn programming by themselves. Of course, if the questioner wants to study for an informatics competition, then I think this answer is not suitable for you. You should choose a more systematic, more targeted, and more intense training method. 1. The earliest frustration for most people learning programming is the inexplicable "hot, hot, hot, hot, hot, hot, hot". Although the rhythm of basic education starts with the great C language, for someone who taught himself programming early on, C language as an introductory language can easily be discouraging (the quality of the teaching materials themselves is also a factor). So if you are self-study, you might as well learn a language that is easy to get started with and has simple rules to cultivate your sense of language and basic qualities. For example, with things like PHP and VB, you can quickly make something that can be seen and used, which is very fulfilling. With confidence, you will naturally want to improve yourself in depth. 2. When I was in middle school, I worked on a forum. Discuz! was popular at that time. I learned PHP to make fun interactive plug-ins. At that time, I felt that it was not easy to self-study a programming language. Concepts that seemed easy to those who knew how to program were not easy to impart to those who did not know how to program at all. At the beginning, I just read books by myself. I did not take notes in class, but I wrote down what I learned in a neat notebook until I understood the basic syntax and language features. You may not be like me, but as a rookie, you must have the motivation to read the basics. 3. Practice is the only criterion for testing truth. Practice is very important for beginners, but most of the practice in C language textbooks are about specific issues and knowledge questions. When facing a console program, after finishing it, you will not feel that it is interesting after a few days, so I think you must try to make something that can be used as much as possible. Learn PHP to make a login page, learn VB to imitate a Win calculator, learn Java to make a minesweeper, in short, it is very encouraging to make something that can be of a little interest to people other than you. In this regard, C language, which is not very friendly to beginners in making graphical interfaces, will not give you the sense of accomplishment of truly solving problems. 4. The initial practice was a patchwork, because the knowledge was not solid, but the problems that needed to be solved were so complex, so the code at that time was mainly about solving problems, rather than solving problems with good methods. Now looking back at the forum family and forum pet center that I wrote back then, they were indeed first-class in appearance, but the code behind them was really terrible. However, for beginners, being able to use existing knowledge to achieve the goal is already doing their best. At that time, programming was not meticulously crafted, just for the sake of realization, no matter how many ifs were nested within ifs, and even the variable name could be $if. However, I must admit that without that experience, I might not like programming so much. When someone uses your results, whether it is to give him suggestions or praises, it is a great feeling for a rookie who has not yet broken his shell. To be honest, as a beginner, daring to write code is a milestone. 5. History is very similar to human feelings. When you write a lot of code, you will naturally feel that it is not good-looking. In today's terms, those codes are not elegant at all. As a person with a lot of style, completing tasks is no longer a pursuit. When Ctrl+C/V becomes a necessary step in programming, you will naturally think: Can we not do this? This is an important process. You will want to improve the execution efficiency of your code, you will want to reduce the number of database queries, you will want to use lightweight code to achieve the desired functions... When you enter this stage, congratulations, the rookie has finally got started. These are three big pitfalls: algorithm optimization, database query optimization, and code reuse. You have to be willing to jump in and then slowly climb out. 5. It seems like I am praising PHP, but that is not the case. I just think it is a suitable entry-level language that can be used immediately. After entering the computer science major in college, I learned C language like my classmates. I had never been exposed to this language, but I accepted it faster and better than the beginners around me. Even concepts such as memory, data types, pointers, etc. that I had never been exposed to, I understood them more quickly than others. I think this is partly because of the improvement in learning ability brought by programming, and partly because of the confidence and motivation brought to me by the fact that I am not a rookie. I did a lot of extraordinary things at that time. When lectures and textbooks were all using VC, I stubbornly used VS2010 because I thought it had a good user experience. When the course design manual was still explaining the graphical interface according to Turbo C, I found a counterfeit graphics library EasyX that could be used in VS. In fact, people all pursue beauty, and teachers don’t like you to open DOSBOX and show him Turbo C that looks like shit. Making good use of and retrieving existing tools and resources is my biggest gain during this period. Of course, there is also a big pit here, user experience. I found out a few days ago that my younger classmates have all given up on Turbo C. 6. The learning process in school is like this: C -> C++ -> Java. C++ is completely different from C. As an object-oriented language, it brings us many new concepts. Although we were so shy when we first met, and no one could understand each other. When I was learning C++, I didn't really get excited. I just thought STL was very good and convenient, and it was much easier than C when I was doing questions on OJ. But then I saw a foreign book about physics engines, and I was very interested in it. I didn't finish the book, but I felt my superficiality after reading only part of it - it turns out that this is how classes are used. It was a long time later that I realized this was an advanced pitfall: design pattern. 7. After that, the course design of data structure required Java to be used for UI, but Java IDE has always performed poorly on my computer, and the various problems during debugging made me not like Java for window programming. So I thought of VB in junior high school, and then thought of its fellow student C# (please don’t ask how I think of it =.=), the refreshing feeling of dragging and dropping to make the interface... After my promotion, only one person in the class used Java to make the UI, and another person used MFC. This actually means that I am a lazy person, so I like to find better solutions. Existence has its value. In just 5 days, everyone can use C# to make a good-looking interface, while Java makes it very troublesome and ugly. This is not about advantages and disadvantages or taking shortcuts, but about productivity and efficiency. The people I train can start work in 5 days and do better than the people you train for a semester, then this is value. 8. In fact, the higher you stand along the way, the easier it is to be overthrown. When writing code in PHP feels primitive, things like frameworks will jump out at you and slap you in the face. When I started making WinForm programs and felt that the code mix was weird, I discovered that there was actually WPF. When you think Java is bloated and has poor performance, advanced Web technology will overturn your prejudice against Java. … People who learn programming need such a process of self-recognition and self-improvement. To be honest, I don't think this is actually a detour, it's all experience. These so-called detours are what you have to take once you set foot on this road, just like the design of IKEA's trails, which are designed for you to walk the entire way. Because this is a process, the detours in the learning process are valuable. As for the detours in learning methods that I mentioned before, most of them refer to detours in textbook selection and training methods. These detours can be avoided through the guidance of predecessors. I think that taking such detours is a waste of time. Time is so precious now, and we all need to be efficient. When everyone says that Mr. Tan’s book is not good, don’t choose this book. When everyone says that certain exercises are useless, don’t do them. Learning to choose, learning to discern, and learning to find a method that suits you is the most important thing. |
<<: WeX5 cross-terminal mobile development framework V3.1 official version
>>: HTTPS vulnerability exposes 1,500 iOS apps to security vulnerabilities
When I was a kid, I watched "Kung Fu" a...
"Intimate Sister" Lu Qin's 22 lesso...
For online marketers, consultation and transactio...
When brands become immune to entertaining and sen...
Recently, the topic **#Don't post 5 kinds of ...
There are actually many useful functions on WeCha...
February 21st marks the day when the Dragon raise...
Taking "Shidian Reading" as an example,...
Recently, the internationally renowned New Scient...
The first impression of Guizhou is that it is rel...
Now when we help you with the phone number, a com...
In daily life, we often use plastic wrap to wrap ...
In every manned space flight mission, female astr...