Live data from Hacker News

What every computer science major should know (2011)

matt.might.net

81–90 of 187 posts

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

#81

I don't think it's that valuable to improve IDE-less software development skills. Just because some Unix nerds find it cool to play with text files, avoid modern software development tools or program in date languages like C it shouldn't be desirable for a computer science major. Computer science should focus on long-live principles, the Unix philosophy may have a lot of good worth to keep principles, but kinda nothi…

Your comment shows a lot of naivety. Text is near universal, C still makes the world go ‘round and modern doesn’t mean graphical.

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

#83

> 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 -…

> focus on technical ability, that’s a hell of a lot harder to come by than “powerpoint skills”. I'll agree and disagree: Yes, the target audience here SHOULD focus on technical ability. Not because it's "harder", but because that will be the primary decider in getting hired. That said, I'd say my communication skills have been a central part of my success. Not "powerpoint", so much as being able to distill down idea…

An unspecified skill is the ability to distill what the business actually needs versus what they say they need.

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

#84
One thing that surprises me that Python wasn't mentioned as a language of interest. It's used in a lot of scientific computing, financial spaces and others. Ive been using it in finance for 15 years. 15 years ago, there was little traction, but now the quants I work with only want to use it. The quants aren't really programmers, but numpy, scipy and pandas make them productive without a lot of dev experience.

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

#85

I don't think it's that valuable to improve IDE-less software development skills. Just because some Unix nerds find it cool to play with text files, avoid modern software development tools or program in date languages like C it shouldn't be desirable for a computer science major. Computer science should focus on long-live principles, the Unix philosophy may have a lot of good worth to keep principles, but kinda nothi…

Your comment shows a lot of naivety. Text is near universal, C still makes the world go ‘round and modern doesn’t mean graphical.

Text is not universal. Instead, there is a nearly infinite variety of output formats which consists of 96 printable ASCII characters (or perhaps a superset of those characters), that may be unstructured, structured, or semi-structured, using a variety of often ad-hoc and poorly documented formatting for values, and a (sometimes surprisingly small) subset of the outputs can even be read in again as inputs.

A great example of this is CSV. It's a wonderfully simple format... so simple that there is considerable variety in things such as "how do you quote a field," "how do you delimit fields" (considering its name is Comma-Separated Values, you'd think everyone would agree it's a comma), and "what characters are legal within fields," let alone the semantic interpretation questions of "is there a header row", "is this column numeric or textual or something else," etc.

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

#86

One thing that surprises me that Python wasn't mentioned as a language of interest. It's used in a lot of scientific computing, financial spaces and others. Ive been using it in finance for 15 years. 15 years ago, there was little traction, but now the quants I work with only want to use it. The quants aren't really programmers, but numpy, scipy and pandas make them productive without a lot of dev experience.

I'm a huge Python fan, and introduced it to my workplace, where it is now heavily used by about a half dozen scientists and engineers. But... I think a person who has mastered the other languages and general concepts of computer science can pick up Python in a jiffy. And they will probably pick it up by osmosis, if it's used in their vicinity.

I'm saying this as a physicist who has not studied CS formally, but worked with a lot of CS'ists.

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

#87
post #27

Is there anyone who ever knew all of this when they graduated? I think maybe the top student through my five years at university might have known all of this. I sure as hell did not check all the boxes when I graduated two years ago. If you're nervous after reading this, just know that the "should" probably means "in an ideal world".

I'd be frightened by a similar list for my own field, should someone write one. If nothing else, a list like this helps in the search for gaps that one might enjoy filling in.

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

#88
It is easier to just list the meta skills regardless of major:

1) You should always be learning.

2) You should mostly do interesting work you love.

3) You should foster good friendships with your highly ranked coworkers; at least having dinner once a month.

4) You should regularly look for and fix your weaknesses.

5) You should balance work and play. Exercise. Travel as much as possible.

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

#89
I come from a CS background and learned a lot from studying CS, it definitely gave me a strong foundation and changed the way I view and understand computing. I learned most of the topics mentioned in this document while in school, and although they are all valid, they are not enough for real world needs.

~90% of CS undergraduates will end working as or with engineers, and in 2019 here are the skills that are indispensable:

1) understand popular protocols used in WWW (http, ssh, ftp, etc)

2) version control (Git). Understand pull-requests and the process of collaboration in a team

3) problem solving - how to breakdown problems, and how to overcome them when you reach a wall (use known algorithms when possible)

4) design patterns (learn as many as you can)

5) frameworks: MVC, angular, dependency injection, etc

6) communication skills

7) how to organize work, how breakdown big tasks into small easier-to-accomplish pieces

8) understand deadlines

9) write tests (unit-test, integration-test, etc)

10) understand that “good enough” sometimes is all you need (still try to fix it later :) )

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

#90

I come from a CS background and learned a lot from studying CS, it definitely gave me a strong foundation and changed the way I view and understand computing. I learned most of the topics mentioned in this document while in school, and although they are all valid, they are not enough for real world needs. ~90% of CS undergraduates will end working as or with engineers, and in 2019 here are the skills that are indispe…

This is a great list. I would add estimating, although it's implied in a few of your points.

As an engineering manager I find that a consistent difference between good engineers and great engineers is that great engineers can tell me how long something will take even when they haven't done something just like it before. That doesn't mean they can perfectly forecast how the hours will be spent -- no one could do that -- but they know how to figure things out, know how to build in some buffer, and know how to go heads down and crank when absolutely necessary, and as a result they can consistently hit deadlines.

Post reply on HN