I'm mostly amused by this -
> 6. CS professors know how to program.
Back in grad school, we had an Algorithms Professor who was my advisor & wrote several important papers. We also had a PL professor who mostly taught Lisp/C/C++ etc. One day PL professor fell ill. So Algo Prof was sent in as a substitute. So he tried to divert the class attention by going into algorithm detail instead of focusing on programming language theory. But homework was due next week, so students asked him about some C nuance. So Prof said I don't know, but I'll let you know by next class. Then he hurried back to his room & tried to read up on C but obviously couldn't make much headway. In those days we had Usenet & that was it. So the Prof goes on Usenet & clicks on comp.lang.c. In those days I used to fancy myself a C hacker & I hung around on newsgroups trying to help out newbies. So I see this frustrated question from a newbie "HOW TO OPEN FILE FROM C ???" and I click on it so I can help this poor miserable bastard. Turns out it is from my Professor! The footer had his entire credentials like PhD, list of papers published, teaching career etc. So everybody on comp.lang was mocking this idiot who had a PhD in CS but didn't know how to open a fucking file with C. I was so embarrassed I rushed into his office & demanded how he could make a fool of himself like that. "You could have just asked me about fopen, why did you post in public that too with your real name ??! " He was like I've never used all this newsgroup stuff I barely know how to telnet. This was my first post I thought they will help me but they are just heaping abuse.
> I was so embarrassed I rushed into his office & demanded how he could make a fool of himself like that.
Why is it shameful to ask for help when you are doing something for the first time? Why such strong emotional reaction to that leading to berating from someone who is not even affected?
Algorithms are a branch of math - it is about proofs and structures and big O. It is about figuring out how to achieve right big O. Especially in their beginning, it was not necessary to know C in order study or teach them. Nowdays, typically they are not taught in C either.
Okay, this is a great story. But look at the prof's actions: he covered for a colleague, admitted he didn't know the answer, and had the humility to ask when he realized he wasn't going to be able to learn C overnight. It might have been easier on him to use a pseudonym, but the guy sounds like he was doing life right.
In contrast, there are plenty of CS professors who are really quite exceptional hackers. The falsehood should be "All CS professors are really good programmers".
Expecting a CS prof to know how to program is like expecting a pure mathematician to know how to use Mathematica/Matlab. It’s absurd and doesn’t follow at all.
Computer Science is to programming as Theoretical Physics is to Homebuilding. A lot of physics professors probably wouldn't know which end of a hammer to grip to drive a screw.
The problem here is probably students expecting to attend a trade school and discovering they're in academia instead.
I've always blamed Microsoft Outlook for the top posting nightmare that has become email standard.
I just use stock Apple mail client and always bottom post (and snip as appropriate) and I get so many non tech people who approach me in the hall and ask "how do you do your emails the way you do? can you show me?"
My narrative has always been that Gmail simply followed the trend that Microsoft's tools set in motion with their monopoly^H^H^H^H^H^Hy^H^Hpopularity amongst business users.
Of course, I'm not even sure how many modern/younger readers will understand why "^H". I'm getting too old for this.
I like top posting. My experience has been that snippet-and-reply sometimes leads to an argumentative and confrontational style of discussion, perhaps more than top posting.
My theory is that snippet and reply may lead to taking quotes out of context and replying with an uncharitable interpretation of the snippet.
So while top posting may be less logical and efficient, I believe it may be more conducive to a friendly discussion.
Of course I could be completely mistaken about this, and it was just a coincidence that the communities I was involved in where top posting was heavily criticized had cranky people in them who would have found something to get upset about regardless of posting style.
Edit: I don't mean to imply that you are one of those cranky people just because you like bottom posting or snippet and reply! :-) Just observing something I noticed in online forums many years ago.
I have an interesting story to tell closely related to this. I used to work as a teaching assistant for an undergraduate computer networking course at UBC. As part of the course, we would usually ask the students to write a simple POP email server, in order to practice their socket programming skills. This was an assignment designed by a professor in the early 2000s, when being able to set up an email client was considered a basic computer skill.
Fast forward to 2019, and I can say that roughly 80% of students in the class didn't know what POP, IMAP or SMTP were. Before being able to get started on the assignment, we would have to provide them with additional material explaining how emails are delivered and what an email client does to retrieve them. The majority of students just grew up using the Gmail app or whatever self-configuring email clients they had on their phone/laptop, so they had no idea of what we were asking them to build.
Top posting is the proper place for new content in an email chain to go. It means the new message is prioritized over the history, with the option to have the history of the email chain available if you really want/need it.
MS Office was designed to fit business processes, and it does that well.
It's not a surprise that Apple's mail client falls over attempting to support business functions.
top posting is absolutely fine for the type of low content email generally used by 90% of businesses.
always bottom posting is nearly as awful as always top posting.
email is for the reader, not the writer. write to your reader’s expectations and to maximize their understanding, not to appease your own sense of what is “correct”
I just wish email clients would pick a direction and stick with it. The default on an iPhone is to have the most recent messages at the top. But if you open a thread of messages the most recent within the thread is at the bottom. But inside the individual message, the most recent text is at the top.
If it makes you feel better, I'm in my early 30s, and switched careers to software dev just last year, and I definitely understand "^H." Although I understood it because a veteran guy passed on the story to me a while ago. So I guess the moral is, keep that oral history alive!
yeah, I'd be curious to see what a distribution of "time until first confirmed bug / next bugfix release" looks like. I strongly suspect the .0 versions don't last long in the vast majority of cases.
It may not be a True Fact, but it's not used that way. It's a reliable heuristic, nothing more.
| 38. Employers care about which courses they took.
Dark side: Employers care about your technical interviewing ability and your GPA. Technical interviewing focuses on a subset of skills around certain algorithms and data structures. The courses most relevant to interviewing will spend at most a couple of weeks on the topics you need to know well.
Bright side: There's so much to know in CS that regardless of what courses you take, you'll likely have to (or want to) learn more on the job. So, in college, you want to focus more on learning-to-learn technical material. Also, certain CS courses contain so much outdated/irrelevant info that you can more efficiently learn all you need to know on the job or through your own projects.
Yeah take challenging classes that open your mind but you should fully appreciate that the job will have you use only a subset of what you learn. For example, I don't work in video games, but I took some computer graphics classes and it was amazing to learn how rendering and ray tracing work. Same for hardware. Even though I'm doing web dev, I've had hobby hardware projects I've worked on and enjoy tinkering with circuits every so often.
What employers do care about is that you worked on something challenging, you're able to overcome adversity to ship something, and you're eager to learn more.
> 8. You should always add lots of comments[0] to your code.
If I don't do this, when I come back to the code an hour later I have no idea what its supposed to do or why I wrote it. I'll also usually add an explanation, like "3 is bad number of args because..."
> 44. Funny names are funny, you can always change them later.
This one drives me crazy, I hate when people use something like "x" or "habberdasher" instead of something functional like "newspapers"
> If I don't do this, when I come back to the code an hour later I have no idea what its supposed to do or why I wrote it.
Many people write comments which are often nothing more than a really obvious transliteration of the code to English "foobar += 3; // Add 3 to the foobar".
These comments add little to nothing and often become worse than useless when they fall out of date and you end up with a cryptic "foobar += 7; // Add 3 to the foobar"
I find it helpful to imagine a codebase guru, someone who not only wrote the thing but has had years of experience maintaining and teaching to others... and the comment writes down what they would say if you asked them about it.
The guru wouldn't say 'adds three to foobar', they'd tell you about how the number used to be the obvious value of two but then the database choked when the boss was trying to store their golf scores in it, because foobar controls the whatzanits and there can be a race that requires it to have room for one extra. The guru would tell you _why_, and that's what a better comment will do.
Students of programming are often just writing what they're told to write. They don't necessarily have a strong grasp on the why, especially not a deep contextual grasp.
> If I don't do this, when I come back to the code an hour later I have no idea what its supposed to do or why I wrote it.
I think the point that the tweet is trying to make is that if you comment, you should explain why you are doing something instead of saying what you are doing. The latter is already written there, in code.
> If I don't do this, when I come back to the code an hour later
Good coding means two things, in general:
* There is no more understandable comment than no comment needed.
The code should explain _what_ it is doing as close as possible in words such that any programmer, including you, can read the code and understand what it is doing.
* Comments should be the exception for _why_ something odd is happening.
Bad: if(r == 42) return; // Nothing happened.
Good: if(ioReturnCode == 42) return; // Ignoring code 42, an undocumented value and seems to be a "no operation happened." We'll retry again later in the code.
I like top posting+keeping the reply text. That way, if I get CC’d on a conversation in the middle, I have all the context I need instead of a cherry-picked selection of what someone in the reply chain thought was relevant.
There are people still complaining about top posting? Wow. All these CS grads who invented putting the high-signal new data first clearly need to get off your lawn.
As far as classes go, if I’m interviewing someone fresh out of college (or current students looking for internships), it does make a difference what classes they took. That’s somewhat specific to what I do professionally though.
Pretty much anything I’d hire them for would involve some degree of systems programming and/or graphics. So, having one or more OS classes and/or graphics classes are significant. Of course if they are knowledgeable about those things by learning on their own, that’s great too, but that’s even less common.
Once someone’s no longer fresh out of college, education specifics become a lot less important, and the focus shifts to their career history. But for people without a prior history, there’s little else to go on. For example, if a particular internship or junior position involves graphics, it’ll make a big difference if the interviewee has some sort of introductory foundation of knowledge and won’t be starting from scratch. That could be a critical difference between two otherwise equal candidates.
TL;DR if you are a student with an interest in any interest in a specialty that you might want to pursue professionally, and there’s a course dedicated to that specialty, by all means take that course. Whether it’s graphics, or AI, or operating systems, or whatever. It could definitely help you get that first job or internship in that field. It sounds painfully obvious, but it must not be based on my personal experiences.
I've known younger programmers think the speed difference between ++i and i++ is enormous and that using the wrong one is the sign of an incompetent programmer. But they don't necessarily know why or agree which one was the good one.
> Sure, they could go on and get a PhD, but first they'll make some money; they can always come back later.
Yeah, you can totally trust yourself to not take on a bunch of financial obligations that would effectively preclude the possibility of taking on a PhD. Honest.
The original list has a few I’d argue with
>95. Brooks's Law has exceptions
However, the Wikipedia article linked has a subsection of exactly that — exceptions.
I always ask recent graduates about interesting courses they took. Not so much to meet some kind of criteria, but to start a conversation about something in CS that interests them. Helps to see how passionate they are about their field.
[+] [-] dxbydt|6 years ago|reply
Back in grad school, we had an Algorithms Professor who was my advisor & wrote several important papers. We also had a PL professor who mostly taught Lisp/C/C++ etc. One day PL professor fell ill. So Algo Prof was sent in as a substitute. So he tried to divert the class attention by going into algorithm detail instead of focusing on programming language theory. But homework was due next week, so students asked him about some C nuance. So Prof said I don't know, but I'll let you know by next class. Then he hurried back to his room & tried to read up on C but obviously couldn't make much headway. In those days we had Usenet & that was it. So the Prof goes on Usenet & clicks on comp.lang.c. In those days I used to fancy myself a C hacker & I hung around on newsgroups trying to help out newbies. So I see this frustrated question from a newbie "HOW TO OPEN FILE FROM C ???" and I click on it so I can help this poor miserable bastard. Turns out it is from my Professor! The footer had his entire credentials like PhD, list of papers published, teaching career etc. So everybody on comp.lang was mocking this idiot who had a PhD in CS but didn't know how to open a fucking file with C. I was so embarrassed I rushed into his office & demanded how he could make a fool of himself like that. "You could have just asked me about fopen, why did you post in public that too with your real name ??! " He was like I've never used all this newsgroup stuff I barely know how to telnet. This was my first post I thought they will help me but they are just heaping abuse.
[+] [-] watwut|6 years ago|reply
Why is it shameful to ask for help when you are doing something for the first time? Why such strong emotional reaction to that leading to berating from someone who is not even affected?
Algorithms are a branch of math - it is about proofs and structures and big O. It is about figuring out how to achieve right big O. Especially in their beginning, it was not necessary to know C in order study or teach them. Nowdays, typically they are not taught in C either.
Edit: fixed typos
[+] [-] JasonFruit|6 years ago|reply
[+] [-] Upvoter33|6 years ago|reply
[+] [-] laichzeit0|6 years ago|reply
[+] [-] varrock|6 years ago|reply
[+] [-] bregma|6 years ago|reply
The problem here is probably students expecting to attend a trade school and discovering they're in academia instead.
[+] [-] travisgriggs|6 years ago|reply
I just use stock Apple mail client and always bottom post (and snip as appropriate) and I get so many non tech people who approach me in the hall and ask "how do you do your emails the way you do? can you show me?"
My narrative has always been that Gmail simply followed the trend that Microsoft's tools set in motion with their monopoly^H^H^H^H^H^Hy^H^Hpopularity amongst business users.
Of course, I'm not even sure how many modern/younger readers will understand why "^H". I'm getting too old for this.
[+] [-] Stratoscope|6 years ago|reply
My theory is that snippet and reply may lead to taking quotes out of context and replying with an uncharitable interpretation of the snippet.
So while top posting may be less logical and efficient, I believe it may be more conducive to a friendly discussion.
Of course I could be completely mistaken about this, and it was just a coincidence that the communities I was involved in where top posting was heavily criticized had cranky people in them who would have found something to get upset about regardless of posting style.
Edit: I don't mean to imply that you are one of those cranky people just because you like bottom posting or snippet and reply! :-) Just observing something I noticed in online forums many years ago.
[+] [-] angott|6 years ago|reply
Fast forward to 2019, and I can say that roughly 80% of students in the class didn't know what POP, IMAP or SMTP were. Before being able to get started on the assignment, we would have to provide them with additional material explaining how emails are delivered and what an email client does to retrieve them. The majority of students just grew up using the Gmail app or whatever self-configuring email clients they had on their phone/laptop, so they had no idea of what we were asking them to build.
[+] [-] gamblor956|6 years ago|reply
MS Office was designed to fit business processes, and it does that well.
It's not a surprise that Apple's mail client falls over attempting to support business functions.
[+] [-] Qqqwxs|6 years ago|reply
For all the other modern readers: http://answers.google.com/answers/threadview/id/386870.html
[+] [-] na85|6 years ago|reply
[+] [-] techslave|6 years ago|reply
always bottom posting is nearly as awful as always top posting.
email is for the reader, not the writer. write to your reader’s expectations and to maximize their understanding, not to appease your own sense of what is “correct”
[+] [-] mr_toad|6 years ago|reply
[+] [-] Gene_Parmesan|6 years ago|reply
[+] [-] vanniv|6 years ago|reply
I'm getting old, aren't I.
[+] [-] II2II|6 years ago|reply
[+] [-] bregma|6 years ago|reply
[deleted]
[+] [-] jakub_g|6 years ago|reply
> 30. Software with version numbers ending in '.0' are buggy and you should wait until the next release.
[1] https://www.netmeister.org/blog/cs-falsehoods.html
[+] [-] chrismcb|6 years ago|reply
[+] [-] saagarjha|6 years ago|reply
[+] [-] mike_hock|6 years ago|reply
[+] [-] unknown|6 years ago|reply
[deleted]
[+] [-] Groxx|6 years ago|reply
It may not be a True Fact, but it's not used that way. It's a reliable heuristic, nothing more.
[+] [-] protomyth|6 years ago|reply
[+] [-] atomicity|6 years ago|reply
Dark side: Employers care about your technical interviewing ability and your GPA. Technical interviewing focuses on a subset of skills around certain algorithms and data structures. The courses most relevant to interviewing will spend at most a couple of weeks on the topics you need to know well.
Bright side: There's so much to know in CS that regardless of what courses you take, you'll likely have to (or want to) learn more on the job. So, in college, you want to focus more on learning-to-learn technical material. Also, certain CS courses contain so much outdated/irrelevant info that you can more efficiently learn all you need to know on the job or through your own projects.
[+] [-] chrisco255|6 years ago|reply
What employers do care about is that you worked on something challenging, you're able to overcome adversity to ship something, and you're eager to learn more.
[+] [-] SkyPuncher|6 years ago|reply
Not a single person has ever asked for it.
[+] [-] furyofantares|6 years ago|reply
[+] [-] vxNsr|6 years ago|reply
If I don't do this, when I come back to the code an hour later I have no idea what its supposed to do or why I wrote it. I'll also usually add an explanation, like "3 is bad number of args because..."
> 44. Funny names are funny, you can always change them later.
This one drives me crazy, I hate when people use something like "x" or "habberdasher" instead of something functional like "newspapers"
[0] https://twitter.com/jschauma/status/1044581775983276034
[+] [-] nullc|6 years ago|reply
Many people write comments which are often nothing more than a really obvious transliteration of the code to English "foobar += 3; // Add 3 to the foobar".
These comments add little to nothing and often become worse than useless when they fall out of date and you end up with a cryptic "foobar += 7; // Add 3 to the foobar"
I find it helpful to imagine a codebase guru, someone who not only wrote the thing but has had years of experience maintaining and teaching to others... and the comment writes down what they would say if you asked them about it.
The guru wouldn't say 'adds three to foobar', they'd tell you about how the number used to be the obvious value of two but then the database choked when the boss was trying to store their golf scores in it, because foobar controls the whatzanits and there can be a race that requires it to have room for one extra. The guru would tell you _why_, and that's what a better comment will do.
Students of programming are often just writing what they're told to write. They don't necessarily have a strong grasp on the why, especially not a deep contextual grasp.
[+] [-] nikeee|6 years ago|reply
I think the point that the tweet is trying to make is that if you comment, you should explain why you are doing something instead of saying what you are doing. The latter is already written there, in code.
[+] [-] cdumler|6 years ago|reply
Good coding means two things, in general:
* There is no more understandable comment than no comment needed.
The code should explain _what_ it is doing as close as possible in words such that any programmer, including you, can read the code and understand what it is doing.
Bad: sum = a.length + b.length
Good: totalNumberOfGoodProducts = exceptionalProducts.length + acceptableProducts.length
* Comments should be the exception for _why_ something odd is happening.
Bad: if(r == 42) return; // Nothing happened.
Good: if(ioReturnCode == 42) return; // Ignoring code 42, an undocumented value and seems to be a "no operation happened." We'll retry again later in the code.
[+] [-] diminoten|6 years ago|reply
Think of writing a comment as a failure of your ability to write good code - we all fail from time to time but we asipre to do better over time.
[+] [-] saagarjha|6 years ago|reply
[+] [-] thethirdone|6 years ago|reply
> 54. 'main' takes two arguments, argc and argv.
Is this a myth because you are supposed to think of them as one argument?
Or because of non-standard extension that includes envp?
Or because of some other nitpick?
I feel I have a pretty solid understanding of how processes are started for C and I think the statement is true.
[+] [-] vanniv|6 years ago|reply
I wish I could convince my employer of the low truth-value of that statement.
(Instead, I make sure to have a reasonable number of easy large-code-volume tasks sitting in a backlog so that I never fall behind)
[+] [-] keyle|6 years ago|reply
I was glad to read that amongst the rest.
[+] [-] sarah180|6 years ago|reply
This article makes me feel very old.
[+] [-] dang|6 years ago|reply
https://news.ycombinator.com/item?id=21501720
https://news.ycombinator.com/item?id=21427563
[+] [-] mwfunk|6 years ago|reply
Pretty much anything I’d hire them for would involve some degree of systems programming and/or graphics. So, having one or more OS classes and/or graphics classes are significant. Of course if they are knowledgeable about those things by learning on their own, that’s great too, but that’s even less common.
Once someone’s no longer fresh out of college, education specifics become a lot less important, and the focus shifts to their career history. But for people without a prior history, there’s little else to go on. For example, if a particular internship or junior position involves graphics, it’ll make a big difference if the interviewee has some sort of introductory foundation of knowledge and won’t be starting from scratch. That could be a critical difference between two otherwise equal candidates.
TL;DR if you are a student with an interest in any interest in a specialty that you might want to pursue professionally, and there’s a course dedicated to that specialty, by all means take that course. Whether it’s graphics, or AI, or operating systems, or whatever. It could definitely help you get that first job or internship in that field. It sounds painfully obvious, but it must not be based on my personal experiences.
[+] [-] caiocaiocaio|6 years ago|reply
[+] [-] ElonMuskrat|6 years ago|reply
Ouch. This is my bread and butter.
[+] [-] paulddraper|6 years ago|reply
> 21. 'Privacy' and 'Confidentiality' are synonymous.
> 50. The error message 'No space left on device.' means you are out of disk space.
> 54. 'main' takes two arguments, argc and argv.
> 62. Dropbox is a suitable backup solution.
> 69. Zuck is a genius.
> 76. HBO's "Silicon Valley" is satire, not a documentary.
> 77. Jokes about recursion are funny jokes about recursion.
> 94. There is a "real world".
[+] [-] captainbland|6 years ago|reply
Yeah, you can totally trust yourself to not take on a bunch of financial obligations that would effectively preclude the possibility of taking on a PhD. Honest.
[+] [-] taeric|6 years ago|reply
Blaming gmail for top posting seems odd. I can't disagree. And I like quoted messages. That said exchange, and phones, seem just as culpable.
[+] [-] combnoinipo|6 years ago|reply
[+] [-] daly|6 years ago|reply
This caused a guffaw... because I have a large screen which has a full-screen emacs session... using green on black :-)
[+] [-] golover721|6 years ago|reply