This article is written for those in lower grades. Those who are already working don’t need to waste time by reading my nonsense.
Recently, people always ask how to determine their own direction. They say that they see some people working on mobile phones, some people working on web pages, some people working on games, and other things, and then they say that they only Things like knowing so little but not knowing what to do. I have been hanging out in some software development groups, where there are many students and practitioners. Those people have two opinions about people "doing various specific projects" when the foundation is not solid enough. One is that it is impetuous, and the other is that it is good to broaden one's horizons.
It’s only four years in college. Schools usually arrange to study mathematics and English in the first two years, and then study language in the freshman year and data structure in the sophomore year. In the junior year, there are many more specific and complicated courses, and then you have to find an internship. In the senior year, you are actually looking for a job. There are no classes, and there are no health checks. It is equivalent to living in a rented school dormitory.
So in these short three years, it is quite difficult to find what you like in so many fields of computer science, then study it, and achieve something in the end. Therefore, many people often see two or three people around them suddenly doing something very fulfilling. When asked, they learned it before. I have met a few people like this. One of my classmates said that he was called a code geek when he was in high school. He wrote some code for emule, and then made his own instant messaging tool and sold it. I have been rewriting this thing since I got to university, and finally I went to Tencent for my internship. I met someone a few days ago, who said that he had been tinkering with action script in Flash since elementary school, and then switched to Perl. He said that he didn't write a program with more than 2,000 lines until his freshman year. I didn't go to verify it, I just thought it was incredible.
So I thought, just follow the traditional way to first master a language ("C++ Primer"), then learn data structures ("Introduction to Algorithms"), and then learn some libraries ("STL Source Code Analysis" "Introduction to MFC in a Simple Language"), and then I worked on some design patterns ("Design Patterns"), and finally wrote a certain management system (laughing), which was also a bit boring. It is really a test of people's willpower to actually have to learn so many things before they can come up with a program that is visible and tangible. Almost everyone starts by dragging controls. Those who started working on algorithms on a black and white screen were either from NOI or ACM, and then they never tired of solving a few algorithm questions. But in the end, very few achieve anything. I met so many people from ACM in school, and in the end, only one of them went to Google. I feel like the risk is still a bit high.
But the reverse is also problematic. If you start with the interface from the beginning, people will be easily impetuous. Therefore, many people have fallen into the pursuit of the colorful world (according to the statistics of people in the group). For example, they are particularly concerned about how to draw a tree in front of the ListView. Among this kind of people, some of them who are pursuing will eventually follow the Windows SDK, then go to the DDK, and finally write the driver, and step into the mud pit, unable to extricate themselves from now on. Of course, these people are also a minority. Whenever a few people say something similar to the rest of the majority of people, "Today I realized how to prevent Word from opening such-and-such file", their eyes shine brightly, and then they start to kneel down and beg for the source code, frantically. I asked what API was used, and when I finally got the code, I put it in a folder that I had carefully prepared before, sealed it away for eternity, and never looked at it again. Of course, there are other versions, such as always downloading books, and they are still rar, and then never decompressing them. There was once a person who showed off in the group how many gigabytes of e-books he had. I asked him to post screenshots, but the results were all rar. He didn't watch it at all, he admitted it himself.
So both paths are very dangerous no matter how you look at it. This is why there are always not many people who can succeed in their senior year. It's too easy to fall into it. What does it mean? People are always only interested in what they do well. Being interested in something you haven't done yet is curiosity and needs to be taken seriously. When people finally do something well, they will continue to study it. This is of course a good thing. However, if you miss the forest for the trees and think that programming is all about programming in the world, you will certainly suffer.
So first of all, we must broaden our horizons and realize that there are so many things that can be done in the world. When you almost know what programming is, you need to play with this and that. Otherwise, you will see the classmate next to you using Java to run something on your mobile phone that can tell you 1+1=2. That person used PHP+MYSQL to create a message board. You will salivate when you look at it, and you will feel panicked and say that you are right. After working on the black and white screen of C++ for so long, I can't even make that gadget. My self-esteem is easily affected.
So after playing, if you want to stop in time, just do one thing specifically. Because at this time, I already roughly know that what I see is almost like that, I can do it myself if I want to, and watching others write those fancy programs will not put too much pressure on myself. To specialize in one thing means to choose a direction, then find books, find people, read codes, and write programs. For example, you can work on graphics to make games, you can also work on script engines and compilers, and you can also follow the teacher to do data mining, embedded, etc. The greatest use of in-depth research in a field is that it exposes oneself to complex problems.
Of course, when the research is in-depth, the program will become larger and larger, and many various problems will appear at this time. For example, the efficiency is too low. If the program makes an error, you have to completely overthrow it and start over (this is quite sad). There are too many codes and it is difficult to organize functions, classes, etc., or you have run out of names, etc. At this time, various theoretical knowledge is needed, such as data structures and algorithms, as well as design patterns and so on. Of course, this is the only thing that can be said, because "there is no silver bullet in this world", so there must not be many general things. The rest still depends on the accumulation of other people in various fields or one's own research talents. finally resolved.
The various things that can be done mentioned above are still more theoretical. In fact, it is not enough to have an academic field, because in the end, a program relies on input and output when dealing with computers. It is what is commonly known as IO. What is this? In other words, you know where the data you want is stored, and you need to get it. You have figured out what you want and know where to put it, and you have to be able to put it. It contains many things, such as typical input and output on the keyboard and screen, Sockets and Web Services used by the network, visible windows and controls, reading and writing hard disks, and other things. . You must be familiar with at least one of these dedicated APIs on a certain platform. Otherwise, what's the use of just learning this algorithm and that algorithm? For example, if you want to compress a picture and you have learned that knowledge specifically, but you can't read a bmp on the hard disk, isn't that pointless?
So having said so much, it is nothing more than to see the world at the beginning, then pick one to study slowly, and finally study and study the program. When the program becomes bigger, you will naturally encounter many advanced problems. If you go and solve it at this time, in fact, you have almost reached the level required for an undergraduate degree.
So many people have changed their minds and finally started to work hard to study problems in a field. The field is always complex, and you will encounter many programming problems at this time. For example, the algorithm is too complex to express, the file hangs while reading, and you accidentally cross the line, causing many strange problems ( C++) and so on. For this kind of debugging problem, you can usually only rely on yourself to make a lot of mistakes, and finally become successful. Of course, predecessors also summed up their experience and wrote a book called "Why Programs Fail". If you want to read it, you can download it yourself. Secondly, there are always many books and documents about specific libraries, so you should read more if you have nothing to do. For example, everyone who uses Visual Studio must install MSDN.
I’ve almost finished my words, although I myself feel that this article is a bit weak because it is also a “universal thing”. You have to think carefully about what to do specifically. I would like to dedicate this article to those younger brothers and sisters who are still in the maze in their first and second year of college. If you have any special and difficult diseases, please contact me privately.
In short, no matter what time, it is best to have a question on hand that can be studied.
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
PHPCMSSecondary development http: //yun.itxdl.cn/online/phpcms/index.php?u=5
WeChat development
Mobile Internet Server Side Development http://yun.itxdl.cn/online/server/index.php?u=5
JavascriptCourse http:// yun.itxdl.cn/online/js/index.php?u=5
CTOTraining Camp
|