Advice to students of computer science
About a year or two ago, I was shouting that a Windows graphical interface client with a good user experience (rich Windows GUI clients) would be the future trend. Although I said so, but occasionally there are college students write to me, ask me for a job to find out what advice. Now that I'm in the recruiting season, I think I'll write down my standard advice, let the college students read, laugh, and forget.
Most college students are self-righteous and never humbly ask for advice from their predecessors, and they find that too troublesome. However, fortunately, in the computer field, this is the right thing to do. Because their predecessors are likely to say some dubious words, such as "by 2010, the demand for tape punch will exceed 100 million people", as well as "the current Lisp language related talent is very popular."
I'm not the exception, I don't know what I'm talking about when I'm giving advice to college students. I have been hopelessly out of date. I really don't know what aim[1] is, I'm still using an old-fashioned thing called email, it's horrible. When it was popular, people listened to music or used a small disc called a CD, which was flat and round.
So, you'd better just ignore what I'm saying here, and use the time to develop some kind of online software that allows other students to find a date.
Still, I would say my advice.
If you like programming, then you are truly blessed. You are one of the very fortunate few to make a living doing what you love. Most people are not so fortunate. The idea that you take for granted "love your Job" is a very modern concept. The general view is that work is a very unhappy thing, you have to get paid to go to work. The purpose of your job is to save money to do what you really enjoy doing, but only if you have to wait until you retire at the age of 65 and have a lot of conditions. Condition one, your savings must be sufficient; condition two, you are not old enough to walk, you still have the strength to do those things; three, the things you like do not need to use the fragile knees, dim eyesight, do not require you to go to a place not to gasp, and so on.
Where did I just say that? Yes, I'd like to make a suggestion.
Apart, the following is Joel's 7 free advice for computer majors. (Definitely worth the value!) )
(1) Practice good writing before graduation.
(2) Learn C language before graduation.
(3) Learn microeconomics before graduation.
(4) Do not take courses that are not computer majors because they are boring.
(5) Elective courses with a large number of programming practices.
(6) Don't worry that all the work is stolen by the Indians.
(7) Find a good summer internship job.
I will explain the 7 recommendations one after the other. If your mind is simple enough to do what I say, then you don't have to read it. In this case, I would like to add one more article:
(8) Seek the help of professionals to develop your self-confidence.
Practise writing before graduation.
Would the Linux operating system succeed if it wasn't for linustorvalds to keep spreading the gospel? Although he is a very intelligent computer genius, but the real reason that Linux attracts a large number of volunteers all over the world is Linus Torvalds expression ability. He disseminated his ideas in writing by e-mail and mailing lists, which eventually drew the attention of all.
Have you ever heard of Rage's "extreme Programming" [2] (Extreme programming)? I'm not talking about my view of extreme programming in this place, I just say if you've heard the word, then the reason is that its advocates are very talented writers and speakers.
Even if we narrow it down and focus on any software development community, you'll find that the most powerful and influential programmers in the group are powerful programmers who express their views clearly, freely and persuasively, whether they are written or verbal. Also, being tall can help you improve your influence, but it doesn't depend on you.
The difference between an ordinary programmer and a good programmer is not that they know more about the programming language or who is less, or whether they prefer to use the Python language or the Java language, but because they can communicate ideas with others. If you can convince other people, your power can be magnified. If you can write clear annotations and technical specifications, other programmers will be able to understand your code, so they can use it in their own code without rewriting it. If you can't do this, your code is worthless to other people. If you can write a clear user manual for your end users, others will understand what your code is for, and it's the only way to make people understand what your code is worth. SOURCEFORGE[3] has a lot of beautiful, useful code, but it's like being buried, and nobody uses it at all, because their author doesn't write the instructions (or not at all). So that no one knows what they are doing, and their brilliant code is dead.
If a programmer doesn't write in English and doesn't have good writing skills, I won't hire him. If you can write, no matter which company you go to work for, you will soon find that the task of writing technical documents falls on you, which means that you are starting to magnify your influence and management is noticing you.
Some of the courses in the university are recognized as "writing intensive" (writing intensive) courses, which means that in order to get credit, you have to write horrible words. Be sure to go on such a course! Do not discipline, as long as the course every week even if you write something, you go on.
You can also write a diary or blog. The more you write, the easier your writing will become. The easier it is to write, the more you will write. This is a virtuous circle.
Learn C language well before graduation
The 2nd I want to talk about is the C language. Notice that I'm talking about C, not C + +. Although the C language has become increasingly rare in practice, it is still a common language for current programmers. The C language allows programmers to communicate with each other, and more importantly, it is closer to the machine than the "Modern language" you learn in college (such as ML, the Java language, the Python language, or other popular junk language being taught). You'll need at least a semester to understand the mechanics of the machine, or you'll never be able to write efficient code at the level of a high-level language. You'll never be able to develop compilers and operating systems, and they're just the best jobs that programmers can get right now. Others will never be relieved to give you the architectural design of a large project. I don't care how much you know about continuations (continuation), closures (closure), exception handling (exception handling), as long as you can't explain why while (*s++ = *t++), the role of copying strings, Or do not feel that this is a natural thing in the world for you, then you are in blind ignorance of the situation of programming. In my opinion, it's like a doctor who doesn't understand the most basic anatomy is prescribing, and his doctor is based solely on the medical sales reps who say the doll's face is useful.
Learn microeconomics before graduation
If you have not had any economics lessons, then I would first like to make a very short comment: Economics is such a discipline, just beginning to learn the vigorous, there are many useful, good theory and can be proved in the real world facts, and so on; however, learning to continue to go downhill, useful things are not much. The useful part of economics at the outset is microeconomics, which is the foundation of all the important theories in the business world. What's behind microeconomics is not going to be. The next thing you learn about macroeconomics is that if you want to, you won't lose if you jump over it. The first part of macroeconomics is the theory of interest, for example, the relationship between interest rates and unemployment, but how to say that it seems that there is more than what has been proved in this part. After learning this part, the content is getting worse, and many economics majors actually turn into physics because it's a good way to get a better job on Wall Street. But anyway, you have to learn microeconomics, because you have to understand supply and demand, you have to know the competitive advantage, you have to understand what is NPV, what is discounting, what is marginal utility. Only in this way can you understand why business is the way it is now.
Why should students of computer science also study economics? Because, from the point of view of running a company, a programmer who understands basic business rules will be more valuable than a programmer who doesn't understand it. It's that simple. I can't tell you how many times I was so frustrated because I saw too many programmers who put forward some crazy ideas that might work in code, but meaningless in the capitalist world. If you know the rules of business, you are a more valuable programmer, and you will be rewarded for it, but only if you are going to learn microeconomics.
Don't take courses that are not computer majors because they're boring.
A good way to improve Gpa[4 's performance points is to take more elective courses in non-computer systems. Please don't underestimate the significance of your GPA. Thousands of HR managers and recruiters will see GPA at the first glance when they get a resume, including me. We will not apologize for this practice. Why? Because GPA does not reflect individual results, it represents a general assessment of the performance of many professors over a long period of time in different situations. SAT[5] Don't you have enough grades? Ha, that's just a few hours of testing. The GPA includes four years of college your essay, mid-term exam and classroom performance, with a total of hundreds of times. Of course, GPA has its own problems, not exactly. For example, over the years, the teacher has been more and more relaxed grades, academic performance has a trend of inflation. For example, GPA does not reflect the difficulty of the course, and no one can tell whether your GPA is a relaxed course from the Home Economics department at an unnamed community university or a quantum mechanics course from Caltech for graduate students. Gradually, I formed a set of my own practice, first I will filter out all from the Community University, GPA less than 2.5 CV, then I will ask the rest of the people to send me a report card and letter of recommendation. I found people who were consistently good grades, not those who scored high on computer science courses.
Why should I care about someone's "European history" course score, after all, as an employer I'm looking for a programmer? Moreover, history is so dull, no high score is normal. Oh, so, you mean I should hire you instead of thinking about working hard once the work gets boring? Don't forget, there are also boring things in programming. Every job has a dull moment. I don't want to hire people who just want to do interesting things.
In college, I took a course called "Cultural anthropology" (cultural anthropology). Because I'm curious to know what this course will say, and to learn a little about anthropology, it looks like an interesting introductory course.
Is this course interesting? I can't even touch the fun side! I had to read the tedious books about the Indians in the Brazilian rainforest and the inhabitants of Trobriand [6] (Trobriand) island. With all due respect, I have little interest in these things. On one occasion, it was so boring to hear half of the class, and I was eager to do something more interesting, such as looking out of the window at the tall grass. I have no confidence in this subject. Completely, thoroughly, don't want to learn to go on. My eyes are sore and I'm tired of talking endlessly about heaps of yams in class. God knows why Trobriand Island residents spend so much time piling on yams? I have forgotten all the other things, in short, this course is super boring. But the thing that was said that day was definitely in the exam. So, I resisted, and went on learning. I gradually made up my mind to regard cultural anthropology as my anti-boredom immune agent, a training ground for my personal million-meter obstacle, specialized in training how to fight boredom. If I wanted to get a in the exam for this course, I would have to know all about the blankets that the Indians used in the Winter festival [7] (potlatch). If I do, then I will be invincible, I can deal with the boring things under the day after tomorrow. Then, by chance, I sat in Lincoln Center [8] and heard the full 8 hours of Wagner's opera Ring [9] (ring Cycle). Fortunately, I have tasted the taste of kwakiutl in cultural anthropology, and I think it is a pleasant experience to sit and listen to the 8-hour opera.
In the end, I got a in that class. If I can do it, you can do it.
[1] aim is the abbreviation for AOL Instant Messenger, the instant messaging software produced by AOL. Its first release was in May 1997. According to statistics, in 2006, it accounted for 52% of the U.S. real-time communications market share.
[2] Extreme programming is a methodology of software engineering, which is called the "limit", because this method advocates the "best principles" of some accepted software development to the limit, the pursuit of software development best results.
[3] SourceForge.net is a code warehouse where any individual or group can publish an open source project free of charge, and visitors can get the code or software for free.
[4] GPA (abbreviated by Grade Point average) is a means of measuring students ' average achievement in colleges and universities, converting the results of various courses into a merit point and then seeking a weighted average. The common GPA is 4 points, a (90~100) is 4 points. Some schools will count a + as 4.3 points.
[5] The SAT (Scholastic Aptitude test and Scholasticassessment test's abbreviation, "Learning Ability Test") is a standardized test in the United States, often used to assess the level of high school graduates. American colleges and universities use this achievement as a reference for admission.
[6] The Trobriand archipelago is a coral reef archipelago of 170 square miles in the South Pacific, close to the east coast of New Guinea.
[7] The winter Festival is one of the major festivals of some Indian tribes on the Pacific coast of North America, where people often give gifts to each other.
[8] The Lincoln Art Center is one of New York's most famous cultural performance venues, built in the 1970s.
[9] The full name of the opera ring is the Ring of Nibelung (the ring of theNibelung), a masterpiece of the German musician Wagner (Wilhelm Richard wagner,1813-1883). The whole play is divided into 4 parts, all finished after 4 days, 8 hours a day.
[10] The people of the Pacific northeast coast of the American Indians, mainly living on the island of Vancouver.
Suggestions for future programmers