Live data from Hacker News

What every computer science major should know (2011)

matt.might.net

151–160 of 187 posts

Re: What every computer science major should know (2011)

#151

These kind of lists are always hilariously overstuffed, like a big comfortable rhetorical couch. It's not all that hard to make up a giant list of 8-10 years worth of material, which if anyone took seriously would also lead to a monoculture i.e. we didn't have any time to do anything aside from computer science and this giant-ass list of requirements like "physics up to electromagnetism". I'd say I was close to hitti…

> It would be a more interesting approach to try to define a minimal set.

Agreed. One way to represent this would be a collection of clusters of the technical skills listed in the article. If you're interested in statistics and machine learning, you should get good at SQL and visualization. By contrast, graphics and networking are much less important. If you want to work in operating systems, ANSI C will probably be a lot more helpful than Javascript.

I that every CS student should read the sections on resumes and communication. They're so powerful because unlike the rest of the article, they're not strictly prescriptive. They describe the goals are rather than the implementation details, and suggest a few ways you might get there.

Re: What every computer science major should know (2011)

#152
I'm a member of an older generation (in college 88-92). It's interesting how few of my cohort (a) have a formal CS degree or (b) would tick even most of the boxes that were possible in 1992.

Back then, many if not most CS programs were super behind industry, so what got you hired wasn't your coursework in FORTRAN. It was what you did outside of class, in independent projects or (a surprising amount of the time) for money on the side. Many programmers in their late 40s-early 50s don't have ANY degree, because they learned on their own and then got a job early, without completing (or even matriculating to) college.

This left large holes in what they knew, if measured by this list, but generally speaking they were still pretty fantastic developers.

How this applies to someone in school NOW is absolutely unclear. I suspect the answer isn't "not at all," but I also doubt it's been possible to get hired in a professional developer job right out of high school for at least 20 years. It's hard for me to imagine how an 18 year old could know enough; the field is so much bigger now.

Re: What every computer science major should know (2011)

#153

My day job is engineering at one of the big tech companies whose search services most of the people I know use almost every day. In the 100+ interviews I’ve done for engineers, I’ve never cared for their portfolio. It’s hard for me to know if it really is their portfolio or if they actually wrote the code, etc. I’m going to ask you design and coding questions.

>I’m going to ask you design and coding questions.

My day job is engineering in systems that kill people or cost billions of dollars if they go wrong.

I'm never going to ask you to code something on the fly other than hello world, a loop to print 0..9 and maybe a recursive function to print 0..9. You can't think deeply enough about a problem in one hour, or one day. I will ask you a lot of questions about what you will do, how you will do it, and what the possible problems and mitigations are.

A portfolio that you've worked on is great because I can find the worst code in it and ask why it's there, what the trade offs of putting it there were and how you would fix it if you had infinite time.

Re: What every computer science major should know (2011)

#154

These kind of lists are always hilariously overstuffed, like a big comfortable rhetorical couch. It's not all that hard to make up a giant list of 8-10 years worth of material, which if anyone took seriously would also lead to a monoculture i.e. we didn't have any time to do anything aside from computer science and this giant-ass list of requirements like "physics up to electromagnetism". I'd say I was close to hitti…

This list was surprisingly sane and almost exactly the programme of my 5-year degree.

I can't help but think that you can only do a very shallow treatment of everything in this list in a CS program. It seems like the author basically put down his own CS program as a requirements list. The style the author uses reinforces this thought, since the sections are very shallow and very closely match what I would expect from someone who did an introductory course on every subject in the list. And I'll be damned if the 11(!) programming languages "every CS major should know" aren't exactly the programming languages that the author happens to know. It would be a surprising achievement to even know just C and C++.

This post may be influenced a little by the irritation that after seven years of study and two years of work experience (and many time spent on this stuff as a hobby in my free time), I still don't match nearly 50% of the 'requirements' in this list. But hey, these lists should be taken with a lot of salt. It's pretty fun to make one and reflect on all the things you've learned. In my list, there would be more numerical analysis and less languages.

Re: What every computer science major should know (2011)

#155

These kind of lists are always hilariously overstuffed, like a big comfortable rhetorical couch. It's not all that hard to make up a giant list of 8-10 years worth of material, which if anyone took seriously would also lead to a monoculture i.e. we didn't have any time to do anything aside from computer science and this giant-ass list of requirements like "physics up to electromagnetism". I'd say I was close to hitti…

> And, perhaps, in a class of 100 people, why should everyone come out with the same laundry list?

I fully agree with this point. People here argue that minimum for scientist should be cut down to something that fits into strictly vocational degree that scores them a well paying job.

Every scientist in any STEM field I know knows "the minimum" that is larger than what fits into masters degree in their field. Someone with PhD is basically still scientist in training, a junior. 8-10 years of basics then very special knowledge above that sounds about right.

My background is in EE, so I think that being an engineer has prestige but it's not the same as being a scientist. Good EE engineer knows different things than research scientist in the field. You need to know enormous amount of theory and math to design modern circuits and radio interfaces but designing them is engineering.

Re: What every computer science major should know (2011)

#156

> must practice persuasively and clearly communicating their ideas to non-programmers If you’re a CS major, panicking over this sort of “technical skills aren’t enough, you have to be a persuasive public speaker and effectively do management’s job for them”, people have been saying this since at least I started coding 30 years ago, and I don’t see any evidence that it’s actually true any more than it was back then -…

I would say there's plenty wrong with this list, but this one is, ironically, mostly true but malphrased. A better way to put it would be: "don't be content with being so bad at communication that it gets in the way of your ability to make your (technical) point". If you know something about how _not_ to communicate (badly), you can allow your technical expertise to be more influential when technical decisions are ma…

You seem to be saying that unless someone's communication skills are WAY below average, they can slide by unnoticed.

I can't agree. In my experience, 90% of developers have poor communication skills and it hurts them every time they write or speak publicly (or document their code). Not just developers, of course. It's a rare person who knows how to tell a tech tale that isn't a confusion of disconnected factoids, or who seems to care whether they bore the hell out of their audience.

But I care. And everyone I respect cares; they just won't admit that they expect to be bored by techies when they speak or write, so they accept boredom and confusion as the norm. (In large corporations, especially.) But it shouldn't be. As a professional, everyone is obliged to organize their thoughts, be clear, and convey a message. THAT should be the norm. It's an essential part of doing any job well.

Like so many things in life that matter most, teaching good communication skills (and rational thought) is largely absent from college curricula (aside from writing a paper). But its absence doesn't mean that communicating badly won't hurt your career later.

Wasting other people's time is disrespectful and lazy and unprofessional. And it makes you look bad. So blather not.

Re: What every computer science major should know (2011)

#157

As a manager, I'll tell you what is more important than almost any of these technical skills (although they are important): 1) The ability to communicate what needs to be done, and how it is to be done, _before_ diving into the work. I work with tons of people who, sure, can get the work done, but I have little to no visibility about what they're going to do and when they think it will be done. I'm never going to be…

I think those two abilities which you cite are developed ONLY with experience in solving real-world work problems.

These are not skills which can be taught in a school. They have to be learned through work, through mentorship and through the experience of failures and successes. Internships certainly help, but it takes years.

It's OK if hires fresh out of school aren't able to do these things. These need to be cultivated by you, the manager.

Re: What every computer science major should know (2011)

#158

Earlier quoted context omitted.

Judging by the Wikipedia article, "Real analysis" is freshman-level math for most branches of engineering. Pretty shocking how little math most CS programs require in comparison.

I've seen that CS and EE are the most math intensive majors outside the math department. Many students go all in and get the minor or double major. But they do learn a certain kind of math. Personally I think a strong foundation in statistics is warranted. The calculus goes far beyond what is useful on the job.

Agree on the statistics, disagree on calculus. I use that all the time... even for business apps!

Re: What every computer science major should know (2011)

#159

Earlier quoted context omitted.

I would say there's plenty wrong with this list, but this one is, ironically, mostly true but malphrased. A better way to put it would be: "don't be content with being so bad at communication that it gets in the way of your ability to make your (technical) point". If you know something about how _not_ to communicate (badly), you can allow your technical expertise to be more influential when technical decisions are ma…

You seem to be saying that unless someone's communication skills are WAY below average, they can slide by unnoticed. I can't agree. In my experience, 90% of developers have poor communication skills and it hurts them every time they write or speak publicly (or document their code). Not just developers, of course. It's a rare person who knows how to tell a tech tale that isn't a confusion of disconnected factoids, or…

In my experience the reason people have such a hard time getting their point across is because they don't understand it very well themselves. Almost no engineers really understand what they are doing so the only effect practicing communication will have is make them better able to hide their ignorance behind fluffy words, kinda like most management types do. I think that it is a good thing when people are bad at hiding their ignorance, so I prefer communicating with engineers over management types.

Re: What every computer science major should know (2011)

#160
post #10
post #4

Earlier quoted context omitted.

The best advice I ever received re: PowerPoint was: "Don't present with PowerPoint. Use it to create a PDF from which to present."

I use PDF for high-level conversations. It appears more polished. I use PPT for low-level conversations. You can double click on graphs to see the numbers.

How do you compose the document / slides that you use to present via PDF? Using powerpoint or something else?

I'd love to find a tool that composes more attractive presentation media than does powerpoint. But I'm too blinkered by my and everyone else's use of powerpoint to know what that could be.

Post reply on HN