New Year's tips for beginners in programming

New Year's tips for beginners in programming

[[161291]]

1. When will I be able to finish learning all these things?

Nowadays, new IT technologies are changing with each passing day. As for commonly used programming languages, there are c/c++, assembly, java, c#, Python, etc.; operating system platforms include unix/linux and windows series; development tools include VC, VisualStudio2008, Eclipse, NetBeans, etc.; under each major platform, there are many directions: such as network, database, script, HTML, dynamic website, game development, etc.; some people are still learning Dreamweaver to make web pages, Flash to make animations, Photoshop to make art, 3DMax to make 3D animations... Yes, we want to learn everything. We want to stuff all the knowledge into our stomachs. Whatever we see, we want to learn!

I read a book about VC today, Java tomorrow, and C# the day after tomorrow. I keep doing this and that! I saw others making web pages. I became interested. Okay, I learned HTML language. I also make web pages. I heard that making web pages requires the "three musketeers of web pages", so I also wanted to learn Dreamweaver and Flash. Later, I began to know about JSP, PHP, and ASP.NET for making dynamic websites. I also wanted to learn, learn, learn, learn...

This is a common problem for almost all college students. However, this is not a bad thing, it can even be said to be a good thing. It shows that you have a strong desire for knowledge! It is better than those who have no passion in life and spend all day picking up girls, surfing the Internet, playing games, and just messing around.

But if you want to learn this today and that tomorrow, you will always be outside the door of technology. Many people have experienced or are experiencing such a depressed day: always feel that there are "too many things" to learn, but human energy is limited, there is always a feeling that you can never learn enough, so you are very anxious and worried all day long, not knowing which one to learn first, picking up this book for a while, picking up that book for a while, tossing for a few months, and suddenly find that you have learned nothing...

If you don't study for a few years in each major direction, it is difficult to learn anything. But the most fundamental things in programming are the same. So we must grasp the fundamentals when learning. As the saying goes: Mastering one principle can help you understand a hundred miles.

Learning programming is like learning martial arts. If you learn the inner strength well, other skills will be easy to master. Haven’t you seen that Zhang Wuji in "The Heaven Sword and Dragon Saber" practiced the "Nine Yang Magic Skill" for 8 years, and practiced the "Great Shift of the Universe" in just 12 hours?

Who among martial artists doesn't want to become famous in the "jianghu" and become a hero admired by everyone? The reason why heroes can become "heroes" is of course because of their unique skills. Di Yun's "Shenzhao Divine Art", Jin Shiyi's "Qiao Beiming Internal Power Heart Method" that combines good and evil, Zhang Wuji's "Nine Yang Magic Art", Duan Yu's "Six Meridians Divine Sword", Linghu Chong's "Dugu Nine Swords", wow, there are too many...

The ancients went through a lot of hardships to find these "martial arts secrets". Compared with the ancients, we, the younger generation, are so lucky. Go to the bookstore, and you will be dazzled by all kinds of mental skills, swordsmanship, and boxing techniques... What will you choose? Today, practice a few moves of the "Six Meridians Divine Sword", tomorrow learn a few moves of the "Eighteen Palms of the Dragon", and the day after tomorrow practice "hidden weapon". When will this end? You say that you know all kinds of martial arts, but "the form is similar but the spirit is not similar", you don't know the key points, and you are not hot enough. As soon as you get on the stage, you are knocked down by others. Which software company dares to hire a programmer who claims to know any programming language, but can only write "helloworld!" in each language? It would be strange if you are not kicked out.

2. Is it more promising to study ** or **?

After reading the above, some students are already annoyed. "I know, I know. More than one so-called 'senior' like you has told me that 'it doesn't matter what you learn, the idea is the most important'. But you are just talking nonsense. The reality is that there are many technologies to learn. For example, for Web development, there are many directions such as JSP, PHP, ASP.NET, etc. I have to choose one! Which one is promising? I must choose a promising one. If I choose the wrong one, it will be troublesome."

In fact, the words like "Which one is more promising to study" are meaningless, because the difference in the future between "choosing JSP or PHP" is not as big as the difference in the future between "choosing English or Japanese", and there is no problem of "choosing the wrong direction", because they are all interconnected, and you cannot guarantee that you will be engaged in the direction you studied after graduation, and you cannot guarantee that you can live on what you have learned for the rest of your life. For example, when I was in college, I was always studying Delphi language, but when I graduated from campus recruitment, I still won the first place in the Java position exam, and after working, I mastered Java language after simple learning, and later wrote three books on Java language; for another example, I have been using Java for more than two years after graduation. Later, the company wanted to make a set of products based on .NET. I only took a week to get familiar with the .NET system and C# syntax, and then started development.

However, as mentioned above, "There are many directions for Web development, such as JSP, PHP, ASP.NET, etc. I have to choose one!" This question is very practical, because only by learning one can you go deep into this direction, and only by mastering this direction can you think of "mastering everything" in the future. Therefore, my suggestion is to continue to learn the language taught in school, and don't ask stupid questions like "Does this language have a future?" Try not to learn a so-called "promising" new language, because if you learn a new language, you will spend a lot of energy on the language and grammar itself, which will delay the actual programming. If you learn a language that you have already learned, at least you don't need to learn the grammar itself or be familiar with the development tools itself. You just need to study how to use this language to develop useful programs. For example, most students have learned C language (some schools directly offer C++ courses, but the procedural programming part of C++ is still C language), so we opened the course "C language can also do great things" to allow students to focus on applying what they have learned rather than learning a "promising" new language. This is also a reflection of this idea.

Let me give you a few examples. I developed the "Computer Professional Career Development Assessment System" of Rupeng.com using PHP, but I had never written a PHP program before. However, I had written JSP and ASP programs before. Because the principles of writing website programs are the same, only the syntax is different, so I only spent a few hours getting familiar with the tools used to develop PHP and quickly browsed the PHP syntax, and then developed this assessment system in half a day. Imagine a person who learns JSP today, ASP tomorrow, PHP the day after tomorrow, and sighs to the sky the day after tomorrow, "Which one is more promising to learn?" Can he learn a new language in half a day?

I had a classmate in college. He saw that I was good at Delphi and had written many programs. He said he also wanted to learn software development and asked me to teach him Delphi. However, our major had already started a PowerBuilder course the semester before, so I suggested that he continue to study PowerBuilder in depth and use PowerBuilder to write something with practical value, rather than writing HelloWorld programs like in class. At that time, Delphi was still a popular programming language in its heyday, while PowerBuilder had a relatively small market share. He said he didn't want to continue learning PowerBuilder because PowerBuilder had no future. I told him the principle of "one thing leads to a hundred things, start with what you are most familiar with", and then he studied PowerBuilder in depth. By the time he graduated, he could already write very complex programs with PowerBuilder and also learned to write Web programs with PowerBuilder. Not long after graduation, he was asked by the company to write programs with Delphi. It took him less than a week to learn Delphi, and then he wrote a system that met the company's requirements. At that time, he called me to tell me the good news. A while ago, I heard that he had begun to guide some new employees to develop a medium-sized enterprise-level system with Java. It can be said that his success is due to the principle of "know one thing and you will know everything; start with what you are most familiar with."

To sum up, don't worry about "which language is good for employment and has a future", because those "good employment and promising" are all paper tigers. Try not to learn a new language, start with the language you are most familiar with, study it in depth, and you will be a popular person that employers will fight for after you become a native speaker.

3. What kind of talents are needed in enterprises?

This depends on the requirements of the employer. You haven't graduated yet, and you don't know what kind of position you will face in the future. Therefore, it is recommended that you do not focus on one subject during school. You should study all courses well, learn professional courses well, cultivate your own "inner skills", and then enter a large company. Then the large company will naturally arrange a talent training plan for you, and learning in a working environment will be more purposeful.

1. What is the easiest thing to learn?

With the continuous introduction of rapid development tools, software development is becoming easier and easier, and the threshold for entering software development is getting lower and lower. Many people, under the deception of IDE tools, can enter the field of so-called "programmers" in ten days at the fastest and half a month at the slowest. This is a happy thing for IDE providers, but it is an invisible blow to software. Due to the prevalence of rapid tools, many people regard development as a piece of cake, especially many college students, who think that the content taught now is outdated once they leave school, and they have an invisible mentality of seeking learning.

In the future, software development will gradually become polarized. On the one hand, more and more people will engage in simple repetitive development, and the difficulty of this part of development will gradually decrease; on the other hand, the development of the core part will become more and more complicated, and the knowledge content involved in this part will gradually increase. Therefore, for students who hope to engage in software development in the future, you need to study hard. The things you learn in school will be useful. As long as you lay a solid foundation now, you will have good opportunities in the field of software in the future. Don't blindly give up the opportunity to learn.

2. Is there any quick solution?

There is a kind of moth called "Monarch Moth". The larvae of the monarch moth spend their time in a cocoon with an extremely narrow entrance. When its life is about to take a qualitative leap, this narrow passage destined by nature undoubtedly becomes the gate of hell for it. Its delicate body must try its best to break out of the cocoon. Too many larvae die of exhaustion while rushing out, unfortunately becoming the tragic sacrifice of the word "flying".

Some people, with compassion, tried to make the life path of the larva wider. They took scissors and cut the hole in the cocoon bigger. In this way, the larva in the cocoon didn't have to exert much effort and could easily get out of the cage. However, all the moths that saw the light of day because of rescue were not real "monarch butterflies". They could not fly anyway, and could only crawl clumsily on the ground with their cumbersome wings that had lost their flying function.

It turns out that the narrow cocoon hole is the key to helping the wings of the monarch moth larvae grow. At the moment of crossing, blood can be smoothly delivered to the tissues of the moth wings through strong squeezing. Only when the wings are filled with blood can the monarch moth flap its wings and fly. If the cocoon hole is artificially enlarged, the wings will lose the opportunity to be filled with blood, and the monarch moth born will never be able to fly.

No one can give the monarch butterfly a pair of wings to fly. It is not afraid to go through the narrow and dark tunnel alone, and does not expect a pair of compassionate hands to send cheap aid. It casts its flesh and blood into a brave and fearless arrowhead, carrying the whistling wind and the dream that will never fall, and strives to penetrate the many obstacles set by fate, and shoots towards the vast and beautiful sky without hesitation...

The quickest way to make a monarch butterfly master is to help it cut open its cocoon; the quickest way for a person to learn a technology is not to learn those "useless" things, but to directly tell him the final conclusion and operation methods. However, many things can only be understood through exploration and learning. Many people look up information, read books, and seek verification in the process of delving into a technical problem. In this process, they not only exercise their ability to think about problems, but also consolidate their basic knowledge. The most important thing is that they gain a lot of unexpected new things in the process of exploration. Many friends often learn a lot of new things inadvertently when delving into a problem.

The "quick way" to go up the mountain is to take the cable car directly, but you will see less scenery along the way than those climbers. So would you rather be a person who masters the "quick way" or would you rather have the opportunity to see the scenery along the way?

3. The secret of success

Socrates, a great philosopher in ancient Greece, had profound thoughts, quick thinking, caring for all living beings and being humble. Many young people came to learn from him and listen to his teachings, hoping to become as wise as their teacher. Many of them were extremely talented, and there were many talented people in the class. Everyone hoped that they could stand out and become the successor of Socrates. Once Socrates said to his students: "Today we will only learn the simplest and easiest thing. Everyone should swing their arms forward as far as possible, and then swing them back as far as possible." Socrates demonstrated it once and said: "From today on, do 300 times a day. Can everyone do it?" The students all laughed. What is so difficult to do with such a simple thing?

The next day, Socrates asked his students, "Who swung his arms 300 times yesterday? Those who did it, please raise your hands!" Dozens of students raised their hands, without missing a single one. Socrates nodded. A week later, Socrates asked the same question again, and more than half of the students raised their hands. A month later, Socrates asked the students, "Which students persisted?" Ninety percent of the students raised their hands proudly.

A year later, Socrates asked everyone again: "Please tell me, which students still persist in the simplest hand-shaking action?" At this time, only one student in the entire classroom raised his hand. This student was Plato, who later became another great philosopher in ancient Greece.

If Plato's story is too far away, then let me tell you a story that is happening right in front of us.

In an English class, the teacher brought 300 sentences from the college entrance examination and promised that if you can memorize them thoroughly, your college entrance examination scores will definitely improve. Most students thought that the teacher was just trying to coax them, but as a student, he was under pressure to improve his grades and kept the teacher's words in mind. After returning home, he regarded these 300 sentences as treasures, translated them into Chinese first, and then into English. He found that almost every sentence had errors to varying degrees, such as tense, word, or structure. He organized this knowledge in a notebook and focused on memorizing it. In the following month, he seemed to have taken stimulants and recited and memorized these 300 sentences desperately. After spending mornings and nights, he finally achieved fruitful results. He could memorize these 300 sentences word for word. From then on, these 300 English sentences became his unique skill, which quickly improved his English scores. This person is Yu Minhong, the head of New Oriental, the current aircraft carrier for overseas study training.

A classmate from Rupeng.com asked me, "Is there any quick way to learn computer science?" I want to say that the best quick way is "persistence." Everything learned by other quick methods is too easy. "The easier it is to get something, the less valuable it is" is a value law that will never change. The more powerful the martial arts, the harder it is to practice and the longer it takes. Many people quit midway.

Persistence is the easiest thing, because everyone can do it; persistence is the most difficult thing, after all, few people can persist. Those who persist are successful people.

The last sentence: Don't build a high platform with floating sand, practice from the difficult part, use from the easy part! There is no quick success, only persistence!

Don't make the same mistake that most people make:

  • I downloaded a hard drive of video tutorials and electronic materials, but I hardly ever watched them. Even if I did, I just glanced at them without paying any attention, let alone practicing code with the teacher.
  • Downloading without watching is a waste of hard disk and bandwidth
  • Just watching without practicing is a waste of time and youth!
  • Don’t just download without reading, don’t just read without practicing!

Misconception 1. C/C++ is too old and outdated and is rarely used. Java, C#, etc. are popular now.

Answer: Don't think that something is outdated. COBOL has an OO version, and there are also FORTRAN and LISP, which are very old languages, but they are still widely used. Teacher Yang Zhongke often reminds us that "all languages ​​are paper tigers, and one language can be used in all languages." The school has already opened C/C++ courses, and if you want to continue to learn programming in depth, then continue to use the language you have learned to learn, and don't learn a new language. After you become familiar with C/C++, looking back, I believe you can also "learn a new language in half a day" like Teacher Yang Zhongke.

Misconception 2: Getting started should start with OO and develop the habit of thinking in an OO way.

Question: Beginners who start to play with Java, C++, etc. are prone to misunderstanding that OO = Java, C++... All programming languages ​​are fundamentally process-oriented, and Java, C++, etc. are also process-oriented languages ​​that support object-oriented features. Process-oriented means if...else..., while, for, etc. Are there no such statements in Java, C++, etc.?

The essence of procedural languages ​​(or structured methods) will not disappear, and it is impossible to get rid of statements and function calls in OO. Structured methods still need to be promoted. OO methods are not so easy to learn (being proficient in the syntax of OO language does not mean that you understand OO), but you can experience the structured methods by writing a program of a thousand lines. I mean writing something practical, such as trying to implement some data structures and algorithms by yourself, writing a few small games, etc. Writing a Helloworld of a thousand lines is equivalent to not writing anything.

I think methods are learned through practice, not just by reading books. The code of procedural languages ​​is generally concise. The ultimate goal of programming is to solve problems, to calculate, to obtain information. Don't be confused by OO, design patterns, etc.

Misconception 3: After working with procedural languages ​​for a long time, it is difficult to switch to OO thinking mode

Answer: I never thought deeply about this reason before, but after a long time, I found that I just put data and methods together. It looks convenient, but there are many unreasonable things. It needs the guidance of OO theory, and it still takes time to understand. I believe that many people who use OO language just add code to the framework and call it back and forth, treating humans as data and operation packagers.

I personally think that only after working with procedural methods for more than ten years and coding 100,000 lines of code, will one have a fixed mindset and find it difficult to get used to looking at the system from an OO perspective. However, I still think this change is much easier than changing a person's bad habits. OO methods cannot be mastered by learning Java, C++, etc. It requires practice and time. Procedural languages ​​are also easy to cultivate a person's rigorous attitude towards work. For example, when writing code in assembly, C, etc., there is no namespace, no large number of class libraries, no templates, no exceptions, and you have to spend a lot of time to deal with some details, such as being wary of array index out of bounds, dangling pointers, wild pointers, etc. Please don't think it's troublesome, this is a computer, and the underlying layer is like this.

Misconception 4. Don’t use C. Look at how I easily wrote a beautiful graphical interface using Java, VC, etc.

This article is for beginners, and can also be read by some impetuous people. Beginners in programming should focus on data structures and algorithms, and try to learn more about the underlying things, such as digital logic, operating systems, compiler principles, computer composition, architecture, computer networks, and other basic knowledge. What's so great about writing a GUI and dragging a few controls? If you can drag a few controls, then a person who hasn't even graduated from junior high school can also drag controls. What's the difference between you and him? Do you know what window messages are? When you write an interface, do you put ease of use first or beauty first? Is your GUI program easy to modify? For example, if I want to add a button and remove a listbox, will you go crazy with the modification? Have you written large sections of code in OnClick, doing things like "remove non-digital characters from edit1.text, search for xxx, convert it to hexadecimal, and then copy it to edit2.text"?

It is better to find paper books and read them honestly when studying. Think about how many e-books you have accumulated and how many of them you have read.

If you don't understand the bottom line, you can only float above others. If others move aside, you will fall down.

Beginners in programming start to learn about IDE, GUI, Network, etc. How can they not be impetuous? It is better to calm down and study the basics. I guarantee that you will find them useful in your lifetime (haha, I can't do anything if you change your career). Don't watch others learn JFC and Socket and still feel anxious about why this quicksort is wrong. You should know that after a batch of APIs are not supported, many people feel empty and confused: Oh my God, I don’t know anything else except that, I’m depressed, I spent so much time studying that API, woo woo...

Misconception 5. C is too difficult, I'd better start with Java or C#

Answer: Language is just a tool to express thoughts. Don’t limit yourself to one language, and don’t be fanatical about one language. Remember what Mr. Yang Zhongke of Rupeng.com said: “The law of value is that the easier it is to get, the less valuable it is.”

<<:  The 10 most disappointing founders of 2015

>>:  Comrades, please wait a little longer. The salary increase will be the highest in March and April.

Recommend

Advanced Operations: 7 Habits for High-Performance Event Operations

The day before yesterday, I finished reading Step...

Weekly crooked review: BAT Three Kingdoms chaos, you need me as Zhuge Liang

As the saying goes, the world will eventually uni...

Uncovering the magic number behind user growth [5]

"5 times" is a magical number. Users wh...

CrossApp 0.4.2 released, grand introduction of WebView

Today is the winter solstice. Besides eating dump...

Ma Huateng vs. Cook! The second round of WeChat and Apple is exciting

On May 29, 2020, WeChat released the "Notice...

Master the user portrait knowledge system from 0 to 1

I took a user portrait course some time ago. The ...

Why does the skin age?

Anti-aging can be said to be one of the mainstrea...

Where is the Zhihu advertising backend? Where can I connect to the delivery?

Professional related: Qinggua Media Mobile Market...

A quick guide from C++ to Objective-C

When I started writing code for iOS, I realized t...