This link has been bookmarked by 123 people . It was first bookmarked on 29 Jul 2006, by Kevin Wen.
-
28 Sep 15
-
30 Aug 15
-
23 Jan 15
-
Advice for Computer Science College Students
-
If you enjoy programming computers, count your blessings:
-
ou are in a very fortunate minority of people who can make a great living doing work they enjoy
-
Most people aren't so lucky
-
The very idea that you can "love your job" is a modern concept
-
oel's Seven Pieces of Free Advice for Computer Science College Students (worth what you paid for them):
-
Learn how to write before graduating.
-
Learn C before graduating.
-
Learn microeconomics before graduating.
-
Don't blow off non-CS classes just because they're boring.
-
Take programming-intensive courses.
-
Stop worrying about all the jobs going to India.
-
No matter what you do, get a good summer internship.
-
8. Seek professional help for that self-esteem thing.
-
Learn how to write before graduating.
-
Would Linux have succeeded if Linus Torvalds hadn't evangelized it?
-
s brilliant a hacker as he is, it was Linus's ability to convey his ideas in written English via email and mailing lists that made Linux attract a worldwide brigade of volunteers.
-
Have you heard of the latest fad, Extreme Programming? Well, without getting into what I think about XP, the reason you've heard of it is because it is being promoted by people who are very gifted writers and speakers.
-
ven on the small scale, when you look at any programming organization, the programmers with the most power and influence are the ones who can write and speak in English clearly, convincingly, and comfortably
-
Also it helps to be tall, but you can't do anything about that.
-
The difference between a tolerable programmer and a great programmer is not how many programming languages they know, and it's not whether they prefer Python or Java.
-
t's whether they can communicate their ideas
-
By persuading other people, they get leverage
-
By writing clear comments and technical specs, they let other programmers understand their code, which means other programmers can use and work with their code instead of rewriting it.
-
Absent this, their code is worthless
-
There's a lot of wonderful, useful code buried on sourceforge somewhere that nobody uses because it was created by programmers who don't write very well (or don't write at all), and so nobody knows what they've done and their brilliant code languishes.
-
I won't hire a programmer unless they can write, and write well, in English
-
f you can write, wherever you get hired, you'll soon find that you're getting asked to write the specifications and that means you're already leveraging your influence and getting noticed by management.
-
Most colleges designate certain classes as "writing intensive," meaning, you have to write an awful lot to pass them. Look for those classes and take them! Seek out classes in any field that have weekly or daily written assignments.
-
Start a journal or weblog. The more you write, the easier it will be, and the easier it is to write, the more you'll write, in a virtuous circle.
-
Learn C before graduating
-
Part two: C. Notice I didn't say C++. Although C is becoming increasingly rare, it is still the lingua franca of working programmers.
-
t is the language they use to communicate with one another, and, more importantly, it is much closer to the machine than "modern" languages that you'll be taught in college like ML, Java, Python, whatever trendy junk they teach these days
-
ou need to spend at least a semester getting close to the machine or you'll never be able to create efficient code in higher level languages.
-
ou'll never be able to work on compilers and operating systems, which are some of the best programming jobs around.
-
ou'll never be trusted to create architectures for large scale projects.
-
I don't care how much you know about continuations and closures and exception handlin
-
if you can't explain why while (*s++ = *t++); copies a string, or if that isn't the most natural thing in the world to you, well, you're programming based on superstition, as far as I'm concerned: a medical doctor who doesn't know basic anatomy, passing out prescriptions based on what the pharma sales babe said would work.
-
Learn microeconomics before graduating
-
he useful bang at the beginning is microeconomics, which is the foundation for literally every theory in business that matters.
-
After that things start to deteriorate: you get into Macroeconomics (feel free to skip this if you want) with its interesting theories about things like the relationship of interest rates to unemployment which, er, seem to be disproven more
-
ut make sure you take Microeconomics, because you have to know about supply and demand, you have to know about competitive advantage, and you have to understand NPVs and discounting and marginal utility before you'll have any idea why business works the way it does.
-
Why should CS majors learn econ? Because a programmer who understands the fundamentals of business is going to be a more valuable programmer, to a business, than a programmer who doesn't.
-
hat's all there is to it. I can't tell you how many times I've been frustrated by programmers with crazy ideas that make sense in code but don't make sense in capitalism.
-
f you understand this stuff, you're a more valuable programmer, and you'll get rewarded for it, for reasons which you'll also learn in micro.
-
Don't blow off non-CS classes just because they're boring.
-
Because the GPA, more than any other one number, reflects the sum of what dozens of professors over a long period of time in many different situations think about your work.
-
SAT scores? Ha! That's one test over a few hours.
-
Take programming-intensive courses.
-
It was in a course on Dynamic Logic, taught by the dynamic Lenore Zuck at Yale, one of the brightest of an array of very bright CS faculty.
-
The idea of Formal Logic is that you prove things are true because other things are true.
-
or example thanks to Formal Logic, "Everyone who gets good grades will get hired" plus "Johnny got good grades" allows you to discover the new true fact, "Johnny will get hired
-
Now, dynamic logic is the same thing, with the addition of time. For example, "after you turn the light on, you can see your shoes" plus "The light went on in the past" implies "you can see your shoes."
-
Dynamic Logic is appealing to brilliant theoreticians like Professor Zuck because it holds up the hope that you might be able to formally prove things about computer programs, which could be very useful, if, for example, you could formally prove that the Mars Rover's flash card wouldn't overflow and cause itself to be rebooted again and again all day long when it's supposed to be driving around the red planet looking for Marvin the Martian.
-
For our homework, we had to prove the converse: if the light was off, and it's on now, prove that you flipped it.
-
Not that that matters to dynamic logicians: they're not in it for useful, they're in it for tenure.
-
I dropped the class and vowed never to go to graduate school in Computer Science.
-
The moral of the story is that computer science is not the same as software development.
-
f you're really really lucky, your school might have a decent software development curriculum, although, they might not, because elite schools think that teaching practical skills is better left to the technical-vocational institutes and the prison rehabilitation programs.
-
ou can learn mere programming anywhere. We are Yale University, and we Mold Future World Leaders. You think your $160,000 tuition entititles you to learn about while loops?
-
The trouble is, we don't really have professional schools in software development, so if you want to be a programmer, you probably majored in Computer Science.
-
hich is a fine subject to major in, but it's a different subject than software development.
-
f you're lucky, though, you can find lots of programming-intensive courses in the CS department, just like you can find lots of courses in the History department where you'll write enough to learn how to write. And those are the best classes to take
-
Stop worrying about all the jobs going to India.
-
No matter what you do, get a good summer internship.
-
-
07 Apr 14
-
Learn C before graduating
-
Don't blow off non-CS classes just because they're boring.
-
If you enjoy programming, the biggest mistake you can make is to take any kind of job--summer, part time, or otherwise--that is not a programming job.
-
-
13 Dec 12
-
28 Oct 12
-
26 Aug 12
-
21 May 12
-
So in the first day of that class, Dr. Zuck filled up two entire whiteboards and quite a lot of the wall next to the whiteboards proving that if you have a light switch, and the light was off, and you flip the switch, the light will then be on.
-
The moral of the story is that computer science is not the same as software development. If you're really really lucky, your school might have a decent software development curriculum, although, they might not, because elite schools think that teaching practical skills is better left to the technical-vocational institutes and the prison rehabilitation programs. You can learn mere programming anywhere. We are Yale University, and we Mold Future World Leaders. You think your $160,000 tuition entititles you to learn about while loops? What do you think this is, some fly-by-night Java seminar at the Airport Marriott? Pshaw.
-
Look for the 400-level courses with Practicum in the name. This is an attempt to hide a useful (shudder) course from the Liberal Artsy Fartsy Administration by dolling it up with a Latin name.
-
But I keep hearing that enrollment in CS departments is dropping perilously, and one reason I hear for it is "students are afraid to go into a field where all the jobs are going to India." That's so wrong for so many reasons. First, trying to choose a career based on a current business fad is foolish. Second, programming is incredibly good training for all kinds of fabulously interesting jobs, such as business process engineering, even if every single programming job does go to India and China. Third, and trust me on this, there's still an incredible shortage of the really good programmers, here and in India. Yes, there are a bunch of out of work IT people making a lot of noise about how long they've been out of work, but you know what? At the risk of pissing them off, really good programmers do have jobs. Fourth, you got any better ideas? What are you going to do, major in History? Then you'll have no choice but to go to law school. And there's one thing I do know: 99% of working lawyers hate their jobs, hate every waking minute of it, and they're working 90 hour weeks, too. Like I said: if you love to program computers, count your blessings: you are in a very fortunate minority of people who can make a great living doing work they love.
-
Anyway, I don't think students really think about this. The drop in CS enrollment is merely a resumption of historically normal levels after a big bubble in enrollment caused by dotcom mania. That bubble consisted of people who didn't really like programming but thought the sexy high paid jobs and the chances to IPO at age 24 were to be found in the CS department. Those people, thankfully, are long gone.
-
If you follow my advice, you, too, may end up selling stock in Microsoft way too soon, turning down jobs at Google because you want your own office with a door, and other stupid life decisions, but they won't be my fault. I told you not to listen to me.
-
I’m also the co-founder of Stack Overflow.
-
-
16 Apr 12
-
01 Apr 12
-
18 Jan 12
-
20 Dec 11
-
the programmers with the most power and influence are the ones who can write and speak in English clearly, convincingly, and comfortably.
-
It's whether they can communicate their ideas.
-
By persuading other people, they get leverage. By writing clear comments and technical specs, they let other programmers understand their code, which means other programmers can use and work with their code instead of rewriting it.
-
I won't hire a programmer unless they can write, and write well, in English. If you can write, wherever you get hired, you'll soon find that you're getting asked to write the specifications and that means you're already leveraging your influence and getting noticed by management.
-
writing intensive,
-
Start a journal or weblog. The more you write, the easier it will be, and the easier it is to write, the more you'll write, in a virtuous circle.
-
it is still the lingua franca of working programmers.
-
It is the language they use to communicate with one another, and, more importantly, it is much closer to the machine
-
You need to spend at least a semester getting close to the machine or you'll never be able to create efficient code in higher level languages.
-
You'll never be able to work on compilers and operating systems, which are some of the best programming jobs around.
-
The moral of the story is that computer science is not the same as software development.
-
teaching practical skills is better left to the technical-vocational institutes
-
it's a different subject than software development.
-
If you love programming, don't feel bad if you don't understand the point of those courses in lambda calculus or linear algebra where you never touch a computer.
-
programming is incredibly good training for all kinds of fabulously interesting jobs, such as business process engineering, even if every single programming job does go to India and China.
-
people who love programming wrote a database for their dentist in 8th grade, and taught at computer camp for three summers before college, and built the content management system for the campus newspaper, and had summer internships at software companies.
-
-
04 Oct 11
-
30 Jul 11
-
19 Jun 11
-
trendy junk
-
You'll never be able to work on compilers and operating systems, which are some of the best programming jobs around
-
You'll never be trusted to create architectures for large scale projects
-
murky
-
-
09 Jun 11
Meaghan KaraffaRead this and take some of this to heart! Learn C and C++ over the summer!
-
Windows GUI
-
AIM
-
C.
-
Learn how to write
-
Learn C
-
Learn C
-
Learn microeconomics
-
Microeconomics
-
microeconomics
-
programming-intensive courses
-
programming-intensive
-
good summer internship
-
Extreme Programming
-
programmers with the most power and influence are the ones who can write and speak in English clearly, convincingly, and comfortably
-
can communicate their ideas
-
persuading other people, they get leverage
-
clear comments and technical specs
-
understand their code
-
writing intensive
-
take them
-
journal or weblog
-
much closer to the machine
-
copies a string
-
while (*s++ = *t++);
-
supply and demand
-
competitive advantage
-
NPVs and discounting and marginal utility
-
fundamentals of business
-
Formal Logic is that you prove things are true because other things are true
-
Proof by Induction
-
Proof by Reductio ad Absurdum
-
computer science is not the same as
-
software development
-
lambda calculus or linear algebra
-
400-level courses with Practicum
-
business process engineering
-
love programming wrote a database for their dentist
-
taught at computer camp for three summers before college
-
built the content management system for the campus newspaper
-
summer internships at software companies
-
Fog Creek Software
-
-
21 Apr 11
-
05 Feb 11
-
- Learn how to write before graduating.
- Learn C before graduating.
- Learn microeconomics before graduating.
- Don't blow off non-CS classes just because they're boring.
- Take programming-intensive courses.
- Stop worrying about all the jobs going to India.
- No matter what you do, get a good summer internship.
-
-
05 Jan 11
-
03 Oct 10
-
Don't blow off non-CS classes just because they're boring.
-
-
23 Jun 10
-
25 Apr 10
-
22 Mar 10
-
The difference between a tolerable programmer and a great programmer is not how many programming languages they know, and it's not whether they prefer Python or Java. It's whether they can communicate their ideas. By persuading other people, they get leverage. By writing clear comments and technical specs, they let other programmers understand their code, which means other programmers can use and work with their code instead of rewriting it.
-
-
19 Mar 10
-
22 Feb 10
-
04 Feb 10
J Dcapitalism
-
19 Jan 10
-
23 Nov 09
-
27 Sep 09
-
28 Apr 09
-
18 Apr 09
Quynh-Nga PhamGreat advice
1. Learn how to write before graduating.
2. Learn C before graduating.
3. Learn microeconomics before graduating.
4. Don't blow off non-CS classes just because they're boring.
5. Take programming-intensive courses.
6. Stop w -
19 Jan 09
-
20 Dec 08
-
23 Oct 08
-
18 Jun 08
-
17 May 08
-
15 May 08
-
28 Feb 08
-
20 Feb 08
-
20 Sep 07
-
20 Mar 07
-
08 Feb 07
-
25 Oct 06
-
30 Aug 06
-
31 Jul 06
-
24 Apr 06
-
23 Apr 06
-
09 Sep 05
-
11 Apr 05
-
25 Mar 05
-
21 Jan 05
-
07 Jan 05
-
06 Jan 05
-
05 Jan 05
-
04 Jan 05
-
03 Jan 05
Mark SundstromExcellent advice.
Would you like to comment?
Join Diigo for a free account, or sign in if you are already a member.