Joel Gives College Advice For Programmers 808
An anonymous reader writes "Joel on Software explains what college students should do with their lives. Interesting to note is how he justifies such trivialties as GPA scores and well-roundedness, the very things comments here tend to think are overrated. In short, learn to write English, learn to write C, and don't worry about India!"
Slashdot anti-intellectualism (Score:5, Insightful)
The anti-intellectualism here on Slashdot is extraordinary. I must admit to being rather surprised whenever I see comments like "PhD's dont know nothin" (sic), or a recent post [slashdot.org] saying I hate college with poor grammar and spelling. Responses to it basically stated that a college degree was worthless.
Amazing.
Re:Slashdot anti-intellectualism (Score:3, Interesting)
When you see kids running around with books titled "How to get better grades", it's clear to me that school is nothing more than a holding ground for kids because there are no jobs for them.
School is NOT about learning, it's about fi
Re:Slashdot anti-intellectualism (Score:3, Interesting)
I wasnt forced to conform in the slightest..
However, that is both good and bad..
Re:Slashdot anti-intellectualism (Score:5, Funny)
Re:Slashdot anti-intellectualism (Score:3, Informative)
Re:Slashdot anti-intellectualism (Score:3, Insightful)
Re:Slashdot anti-intellectualism (Score:3, Insightful)
School is what you make of it. If that is your perspective, you will not take much away from the experience. School is not there to hold your hand and tell you what to think or believe. It is there to provide you with information you might not otherwise be exposed to. Schools should challenge you and provide opportunities to excel.
With respect to cheating: If somebody cheats in school, they are going t
Re:Slashdot anti-intellectualism (Score:3, Insightful)
I and others absolutely did not fit into the mold in college. The crowd we ran with was decidedly counter culture and the kids with the funny hair (us)...
So you did fit into a group, and a fairly solid one that most people have no problem envisioning. It wasn't the "preppy" group, but it was a group nonetheless, and almost certainly displayed the same kind of requirements as the more "mainstream" ones. You may think not, ho
Re:Slashdot anti-intellectualism (Score:3, Insightful)
A fine sentiment. However, you confuse the average college experience with "guided education". Do you really claim to ignore the faults of teaching things the current American college way?
I was immensely disappointed in the so-called Engineering Physics program at UMass/Boston. It had such potential, and it wasted it all on what could only be called "continuing ed". From that experience and other anecdotes, I can only have become the college pro
Missed the point, I think. (Score:3, Informative)
One: You get from college what you put into it.
Two: A guided, strong college curriculum pays higher dividends than trying to learn on your own.
The guy who posted in a Ph.D. in neuroscience (spec., visual neuroscience). Trust me, you don't learn neuro from reading about it, you learn neuro from being in a lab, tinkering with experiments, reading the data, and trying to discover new things. You can't do surgery in the library.
The library and internet in the hand
Re:Slashdot anti-intellectualism (Score:3, Insightful)
What kind of attitude is that? Schools have an admissions process to keep people with that kind of attitude out so you won't be wasting your money or their time.
All of the information your school has is available for far less money
That's true.
On the other hand, a lot of the information you get in school comes from experience and from the experiences of the people you work with and are taught by. Sure you can get all that knowledge on you
Re:Slashdot anti-intellectualism (Score:3, Interesting)
You dont need a school or a grossly over-priced piece of paper for that. You need a brain and access to a library or the internet.
Well, thats nice and utopian and all, but without industry experience if you plan on getting a job that "grossly over-priced piece of paper" is going to be worth a lot more than all your self taught knowledge. When I'm planning to hire somebody I want to know that they know their stuff, and being that I don't know that person yet (since I would have probably just met them), I
Re:Slashdot anti-intellectualism (Score:3, Insightful)
Yep, it's much better.
My best bet is that some people thrive under guided education, and some people don't.
I know that I really enjoy having a teacher help me along in my learning process. Unless your interests really are very specialized, there usually isn't a dearth of material on a subject, there's a surplus.
As a result, it's very difficult, not only to determine *what* you can learn (already a daunting task to someone like myself, who can be intere
Re:Slashdot anti-intellectualism (Score:3, Insightful)
Re:Slashdot anti-intellectualism (Score:4, Insightful)
You didn't fail because "we haven't learned that yet" . You failed because you were given a project with defined objectives and your work product did not meet the design criteria. It works like that in the real world too. Perhaps there was more than one lesson in there?
Re:Slashdot anti-intellectualism (Score:3, Interesting)
That's no true. My program met every criterea laid out by the teacher. It just had a GUI that's all. The requirements never said "the program shall not have a GUI".
"It works like that in the real world too. Perhaps there was more than one lesson in there? "
NO it does not work like that in the real world. In the real world if you take the time to put a nice gui on programs people li
Re:Slashdot anti-intellectualism (Score:3, Interesting)
Not necessarily. If the GUI isn't very valuable in the given situation, and the time you spent on building it could have been spent building something else that is more valuable, then your boss is likely to be annoyed with you, and with some reason. You as a develop
Re:Slashdot anti-intellectualism (Score:5, Interesting)
Also: Go to a better school then or get a better advisor. First of all the whole "you can learn it from a book just fine" is BS imho since unless you know which book to get you won't have a fun time. In addition, for many things the feedback you get on projects (or even just doing the thing assuming it's hard enough) is more valuable than anything else.
As for "tangents" let's see I'm a Junior now and I've taken courses in: Math, CS (including grad courses in AI, Robotics and Genomics), Statistics, Psychology, Philosophy (Bioethics, and now I know the main arguments for a dozen important issues), Physics, Biology, History, Writing and a few others. I learned something in all of them, I took classes much harder than what I should be taking and while I didn't get an A in them I learned much more than if I took a class where I did get an A easily
Re:Slashdot anti-intellectualism (Score:3, Informative)
bullshit. I have a degree in Aerospace Engineering. I've never worked directly in that field. I certainly did learn a lot of really cool stuff that I could never have learned on my own, however.
Computers were a hobby, and getting a job in the field was because of that hobby. The education certainly did help, but I definitely did not get an engineering degree to "get the papers to get a job"
In fact,
Re:Slashdot anti-intellectualism (Score:5, Insightful)
Apathy is a huge problem at Georgia Tech, where I attended college. People bitch about how nobody wants to help them, about how professors don't offer any guidance, about how everyone is out to screw them. Fact is, the professors rarely even get approached by the students. How do you think these people that devote there lives to research and teaching feel with 99/100 questions they get are an attempt to get a higher grade? Most students show so little interest in anything other then grades it is no wonder the professors don't go out of there way to help more often.
At any good school, GT included, if you make an effort to get to know your professors it really does pay off. Professors usually love to do research, especially in new and interesting fields. In my experience most of them are more then happy to assist there students in getting involved, especially if your area of interest overlaps with theres.
If any of you are in college, or about to go to college, don't be fooled. Sure, everything they teach you there can probably be looked up in a library. However, where else are you going to be surrounded by so many people who have insight into so many different things? Don't throw away your chance to use the professors a bit and learn as much as possible.
Re:Slashdot anti-intellectualism (Score:5, Insightful)
I think every kid should be forced to do one year of grunt work somewhere before going to college. I don't care if it is Peace Corps, picking up trash along the highway or working a minimum wage slot at the 7-11. I know a bit of 'real world' experience would have helped me focus in class.
I know, I know... There is always a way to game the system and the upper middle class kids won't get their hands dirty. But a trip abroad is a good way to open up closed minds. Maybe that would be a good subsitute. I currenty live in England and it isn't at all uncommon over here for the kids to take a 'gap year' before going to university. It is actually kind of expected and the entrance system is built to handle it.
Just my
Re:Slashdot anti-intellectualism (Score:3, Interesting)
Absolutely true. I went to college straight from HS and I seriously believe that was a mistake. when I first got to college, my goal was to party unfettered by parental oversight. I did well at partying, lousy in school. It wasn't until mother passed away that I realized I had to actually become a self-reliant adult. Before this, my GPA was 1.99, after 3.88.
Thinking back on that time, I see now ho
Re:Slashdot anti-intellectualism (Score:3, Insightful)
That's sort of like saying, "Yes, Suzy *is* a diseased skank, but it's very easy to get into bed with her."
QED, IMO.
Re:Slashdot anti-intellectualism (Score:3, Insightful)
Re:Slashdot anti-intellectualism (Score:2)
It was certainly my experience that it was and is an intellectual exercise.
In many cases, it is the thing furthest from. It's quite often just a rite of passage.
Is this personal experience or are you just talking loud?
Some "PhDs" will even admit to this.
Every PhD I know (myself included) will fully describe their program as intellectually punishing. After all the PhD is supposed to be granted upon completion of work that is n
Re:Slashdot anti-intellectualism (Score:5, Insightful)
sPh
Re:Slashdot anti-intellectualism (Score:2, Interesting)
It's tempting to think that this is peculiar to the live-with-mom coding set, but it's no different than any other guild-like group of people with a particular set of relatively valuable skills. Say, sheet metal workers, or turbine mechanics. Those chores will not go away, and our economy will always support people skilled in those areas no matter how otherwise closed-in they might be within their own communities or industry cultures.
But there will
Re:Slashdot anti-intellectualism (Score:2, Insightful)
Anti-intellectualism is actually... (Score:5, Informative)
However, in the years since, I have grown in wisdom and have discovered that book knowledge will only get you so far and that personal experience will also, only get you so far. Taken together, a person can go places that having only one alone would be near impossible.
Now, reaching my 30's, I am kicking myself in the rear working towards obtaining a college degree to build upon and further my career goals.
If I had an opportunity to peform a 'do-over' the only thing that I would change in my life is completing at least an Associate's Degree the first few years after completing High School.
But now is not then. (Score:3, Insightful)
Actually caring about what you're doing, be it your work, or you school, can make a significant difference in how well you do it.
My former boss's roommate said that he was glad that he didn't go straight to college after high school -- because it gave him a chance to appreciate how important the degree was, and if he ha
Re:But now is not then. (Score:3, Informative)
Granted, 10 years ago, it was possible to get a foot in the door of the software industry without a degree if you could show a proficiency in at least one programming language. But those with degrees were still able to get better jobs and salaries. Nowadays, you'd be hard
Re:Slashdot anti-intellectualism (Score:3, Informative)
Knowlege and education will always be valuable, in many ways. What does that have to do with college?
Seriously, for too many students, college is a four year waiting period: waiting to get their tickets punc
Slashdot anti-slashdotism (Score:4, Insightful)
Amazing.
Do what I do... (Score:2, Insightful)
Good advice... (Score:5, Interesting)
I'm being a bit sarcastic here, but I've heard from too many people that punching out code all day at work makes them very hesitant to even touch a computer at home. For those who are currently computer programmers/engineers, would you say you really enjoy your job, or does it get extremely old and tedious after awhile?
Re:Good advice... (Score:3, Insightful)
About the only thing I can't stand to do is the 'helpdesk' role to my family.
"Mom, I don't know what 'thingy' you are talking about or how you broke it in the first place!"
That just makes my skin crawl.
Re:Good advice... (Score:2)
Re:Good advice... (Score:2, Informative)
I for one got sick and tired of doing it professionally, but I like to do a little as a hobby and to learn new technologies.
Other people I know i have been programming for decades (started in the 70's) and still love every minute of it. And still others burnt out completely. I guess it also depends on the jobs you have had.
Re:Good advice... (Score:2)
It is, in a nutshell, like day to day living. You have your ups and you have your downs. This coming from somebody that still loves the concept, the doing, the statisfaction of programming - it is a bonus that I get paid for it; even when it sucks.
Re:Good advice... (Score:3, Insightful)
I've been 'punching out code' at the same job for the last 3 years, and nothing could be further from the truth. You write code at work, then go home and play some Age of Mythology or even write some code for my personal projects; frankly my computer is my lifeline (queue the jokes). On top of that, I'm married and have kids - fact is you don't get a whole lot of free time when
Re:Good advice... (Score:2)
I work Java all day at work, and when I get home I spend my spare time working in Python and Zope. I enjoy both in different ways, and both
Re:Good advice... (Score:2)
Well, if you get bored, you can always read slashdot...
Seriously, there are boring and/or bad jobs in just about any field, including CS ( to me, it's the "IT" side of things that sucks eggs ). Find a project or job category that you enjoy, and do that if you can. Of course, anything can get old- some people at some point in their lives just need to cha
Old and tedious? (Score:2)
School vs Work (Score:2)
The thing is is that in school you are there to learn. That's why you pay tuition. In the working world people pay YOU. But they don't pay you to learn b-trees, Dijkstra's algorithm, etc. A profitable company usually has a business plan around making money. That's the only way they can live and it's how business works.
That's why a good amount of tech work revolves
Re:Good advice... (Score:5, Insightful)
Short answer: it depends.
Long answer:
When I was in elementary/middle/high school, I used to spend long hours programming and couldn't get enough of it.
When I was in college I found myself too distracted by other things to program.
When I was working full time (programming) for a company, even on projects where I worked solo on design and devlopment, I was definitely too tired/spent to touch a computer at home (in fact, I didn't even have one at home -- but this is before the Internet made "being connected" all the time a necessity).
However, as soon as I started doing independent contracting (and working from home) I found that the freedom to schedule my day allowed me to set aside time to program for pleasure. I wrote a couple shareware games, made no real money, but enjoyed having turned one of my passions (programming) back into a hobby.
Now, I run my own company and spend all my time programming -- in essence I've come full circle and now my hobby is my career. From this point of view, I completely agree with Joel's quote, with a caveat: if you enjoy programming computers, and your programming is not "owned" by someone else, then you are in an extremely fortunate minority of people.
So, to answer your question: yes, I really enjoy my job and it's not old or tedious in the least bit, but, it took me some time to get to this point.
Re:Good advice... (Score:3, Insightful)
OTOH, if you can get into an area which requires real analysis, puzzle-solving, thinking and designing, you've got a great programming job and you'll enjoy it.
I'm happy to say that most of my career has been spent in the latter category.
Re:Good advice... (Score:3, Insightful)
I love my job (control systems engineer).
I work a 40 hour work week. Sometimes 50, sometimes 30, it balances out to 40.
Am I married? Do I have a kid? Own my own place? Not yet, but someday; nothing about my job would prevent me from doing these things.
Find the job you love, and the rest will happen. The American Dream is *not* slaving away doing something you hate so you can own a bigger home than the next guy. At least, it shouldn't be.
Re:Good advice... (Score:3, Insightful)
An excellent question! What indeed? There are a lot of reasons not to send work overseas, but I'll just touch on two here: transaction costs and knowledge theory.
One of the reasons that companies exist is to reduce transaction costs in achieving a goal. If we assume the goal here is to develop software to a particular set of requirements, then one of the transaction costs involved in gett
YES (Score:5, Insightful)
Seriosly, bad communication skills generate huge costs in lost time, and legal fees when something goes wrong.
Re:YES (Score:3, Funny)
So do spelling errors... :)
Re:YES (Score:5, Insightful)
-b
Re:YES (Score:3, Interesting)
Re:YES (Score:2)
Re:YES (Score:2)
Re:YES (Score:2)
Disagree on two points: (Score:5, Interesting)
* Stop worrying about all the jobs going to India.
First, I think it's also to learn macroeconomics, if you plan on becoming anything more than a cubicle-dwelling drone. If you want to take mattesr into your own hands, you have to have a good understanding of the big picture. As for India - which is related to my first point: it is important to look at all trends and act accordingly. If you ignore any large trend, movement, etc., you can very well be doomed to failure. When I say trend, don't misinterpret that as the equivalent of "fashion."
Just graduated (Score:2, Interesting)
My Advice (Score:5, Insightful)
So far, all the jobs and good friendships I have gotten have been due to what I do outside school hours. I do the minimum possible for assignments I don't like, and score good grades on the ones I do like, because I do them with enthusiasm.
Of course, I am one of those people who love to learn and experiment. If you're not that kind of person, most of what you learn probably comes from school. YMMV. HAND.
Re:My Advice (Score:3, Insightful)
Hah! Wait until you get out and have to exp
Non-CS Courses (Score:5, Interesting)
Non-math courses help develop a personality and there's no shortage of need in that department, where I've worked. Learn some general psychology, socialogy and language. A well exercised brain is more creative than one that only dwells on one aspect or type of challenge.
I found many formulas and ideas from classes outside CS contributed greatly to offering information and processes which normally may not have occured to me.
In short, you're in school, make understanding the concepts behind your classes your main focus, socializing and entertainment when you can fit it in, not the other way around.
Enjoy your summers (Score:5, Insightful)
Re:Enjoy your summers (Score:2)
To anyone who questions why (Score:2, Insightful)
That is what college is.
It isnt training for your job, that is what other post high school education venues are for.
College IS the extra classes plus your expertise.
it is a combo of both so if you dont like it, college may not be the best choice for you.
value exists in those classes so enjoy them (even the pain in the ass ones)
Response to Joel (Score:5, Informative)
Re:Response to Joel (Score:3, Insightful)
And you expect people to take you seriously when you care more about the font size than the content? Some people may not be design experts, but they may have interesting stuff to say.
I wish (Score:3, Insightful)
If there is one thing I want to say to those looking to go into Computer Sciene or a related field it is learn to communicate! Learn to write, and write well! Learn to communicate effectively with other human beings! This may require social interaction that involves not being at a computer. Get out of your room, or parents basement, and talk to people! Go to parties and talk to girls, get over any notions of fear or doubt you have. Be confident. Strong communication skills will get you further than you think.
The hiring manager at the company I accepted the offer from said, "We chose you because you could talk to us. You didn't talk to us like a programmer, you talked to us like a human being."
-J
The best advice... (Score:4, Insightful)
That means learn how to express yourself in a way that others will understand; tailor the message for your audience so they'll "get it."
And learn how to listen to what's being said; others may not be adept at expressing themselves, so if you can learn how to get to "what they mean" instead of just "what they said," you'll be much better off.
And the cool thing is, these skills will carry you through your career, no matter which field you study.
True confessions... (Score:5, Interesting)
But what do I do at night? I go home and write code. Why? Because I get a blast out of it.
I think Joel's article is right on; especially the piece about learning C. I was taking an inventory of my skills (mostly with 4GLs and non-bare-metal languages, though I have written smatterings of C++ and S/390 Assembler) - and the one area that I'm really deficient in is C.
Since I'm also in school for an MS in Information Systems, it might take me a little more time than I thought... but It Will Be Done.
As far as my employer goes, they can promote the soft skills and the management skills all they want; I may even find my hair forming into the PHB hair style; but when I go home and close the door, they will take my laptop only if they pry my cold dead fingers from around it.
Don't just not blow off other courses...enjoy them (Score:2)
Good Internship (Score:3, Interesting)
GPA useless??? (Score:4, Insightful)
My company gets thousands of resumes a week. We absolutely need a first-line filter. It is GPA.
In my career I have found that GPA is a very good indicator of a whole host of things. When I get a pile of resumes on my desk, I skip the 4.0s and throw out the 3.0s, if nothing turns up in between, I go back to the 4.0s.
4.0 = uptight asshole or passionless droid
3.5ish = smart but obviously had to work at it
3.0 = probably only excelled in things s/he liked
3.0 forget it, not worth my time because you shouldn't have been in college if you can't maintain a high-B low-A average.
The 3.0-3.5 range implies they are not suzuki-method droids, but actually had to work as proof by some low grades (so not everything came easily to them), OR, they cared about something enough to get an A and demoted things they didn't care about. This shows promise in my eyes.
Regarding college 4.0s, my gripe is that they tend to be passionless about what they master, but they seem to master quite a bit. I sound like I'm knocking them, but not really: most 4.0s in college studied their ASSES off and never developed a social life. While this is admirable, there is more to excelling at a career than studying what's in a book.
I can easily recall 5 superperformers at my company (4.0 doctorates from top schools with 3-5 years experience at work), and they all share the same traits: stubborn, egocentric, verbose, scared of precision error greater than 1e-10, and always in the goddamn way of deadlines!
The dangers of stereotyping (Score:5, Insightful)
Anyone who ignored these peoples' resumes because of the 4.0 would be an utter fool.
Yes, I've known a couple of the types the parent referred to, but only a couple. Of course, now that s/he avoids 4.0 people like the plague, s/he will probably never meet another, and thus the percentage of 4.0s that are weenies will remain fixed in this person's experience, as a self-validating proof.
Beware the stereotype!
Re:GPA useless??? (Score:3, Informative)
In my career I have found that GPA is a very good indicator of a whole host of things. When I get a pile of resumes on my desk, I skip the 4.0s and throw out the 3.0s, if nothing turns up in between, I go back to the 4.0s.
That's a fine approach, as long as you're comfortable with knowing that you're going to miss out on some really talented people that way. Sure, you'll hire some good people along the way, but
Re:GPA useless??? (Score:4, Interesting)
I have a Master's Degree in Comp. Sci., and I did not graduate from my undergrade with a 4.0; it was around a 3.5. I had something like a 3.8 in major, but I preferred to challenge myself outside my major. (MSU made that easy with their "Honors College" program, which gets you out of the generic crap courses, provided you replace them with real classes. So, for instance, instead of the Generic Social Studies classes that you normally hear people bitching about, I took several real psychology classes; if you can't find something that you like, what the hell are you doing in college? (That program also got me into the hard math courses no questions asked, and I was able to make several other nice substitutions for harder courses that were actually easier for me in a way because I liked them.) In the event you recently started attending or are thinking of going to MSU, I highly recommend hooking up with them.)
I had an English History class that I got a hard-fought 2.0 in. While this is one of my weaker grades, I'm also proud of this one; it was solidly in the middle of the pack in that class, which was eight other history majors. (Woohoo, two hour essay tests with four questions, graded on grammar, spelling, and historical synthesis! Pity that class wasn't labelled as one of the "writing intensive" ones, it beat the snot out of the one I had that was actually labelled as such and I'dve preferred to spend those credits elsewhere.) I also took the advanced physics and never got a 4.0... but I understand it better than those who took the standard one. (Non-calculus based mechanics leaves you with a bit of an inferior understanding, but non-(multi-variate-)calculus electromagnetism is nearly a waste of time!)
So no, I didn't carry a 4.0, because I pushed myself as hard as I could. I, too, would be concerned about someone who got a pure 4.0 in undergrad, and would want to examine their transcript closely, to make sure it wasn't loaded with too many "basketweaving for jocks" equivalents. A pity there isn't a way to have a "difficulty adjustment" for GPAs; I know that my "grade performance average" would end up higher than quite a lot of the "grade point average" 4.0s.
As others have pointed out, college is what you make it. If you find that your classes are so easy you could just read the book, take harder classes. Self-fulfilling prophecies, anyone?
(I don't say this stuff to brag; frankly I don't give a shit what the average Slashdot denizen thinks of this. I don't much respect the majority of you anyways when it comes to things like this; quite a lot of you are spoiled little snots when it comes to academics. But if it helps even one person get something good out of college, it's worth it.)
Its . . . (Score:4, Funny)
when I was in College (Score:3, Funny)
I joined the Football team, I went to the gym, I dated the cheerleaders... but at some point it got so frustrating to live such a falsehood.
I eventually moved out of the frathouse and into a poorly lit basement appartment and switched from a BA in Phys. Ed. to Computer Sciences.
Now I read slashdot and I live the out-of-closet life of a warflamin'geek! w00
Learn Learn Learn... (Score:3, Insightful)
English (Score:3, Funny)
Hinds' Seventh Law: "Make it possible for programmers to write programs in English, and you will find that programmers cannot write in English."
Bruce's Seventh Law: "Make it possible for programmers to write programs in C, and you will find that programmers cannot write in C."
Do you want to be Joel? (Score:5, Insightful)
Perhaps Joel's problem is that he doesn't see how exciting computer science can be. If all you do for a living is reimplement tired old ideas and trying to make the best out of inferior tools, I suppose that's not surprising. I'm sorry that a course on "dynamic logic" scared him away from grad school, but his poor choice of courses for his interests isn't the fault of grad school.
My advice is: do what excites you. Think about what you want to look back on in a few decades and say "this is what I accomplished". If you merely want to make a living, sure, just follow into Joel's footsteps and re-implement the wheel; that's a pretty safe bet for making money. But if you want to do something meaningful, you'll have to use your head and take risks. The choice is up to you. But you do have a choice--you don't have to become a little Joel clone.
Joel's Remarks on Grad School (Score:4, Insightful)
With all due respect for Joel, I found his remarks on grad school a bit discomforting. It's not that I don't like Joel and I think he has the occassional interesting word but I'd have to disagree with his remarks over why/when he chose NOT to go to grad school.
I went to Berkeley and worked in the research labs in their CS department. From what I saw the CS grad students did very interesting things. At the time some of them were doing high quality streaming media, using millions of robots the size of pennies, building the next generation peer-to-peer networks, etc. Sure there will be your handful of professors who want to prove that 1 = 1 but most others in tech are out there to do something cool (examples: Sun's RISK processor (berkeley), Google (Stanford), Inktomi (Berkeley), etc.)
I'm not an expert on this but from what I've heard it only pays off if you go to a GOOD grad school in CS while the mediocre ones are probably equivalent to going to a good undergrad school. I'd say that sounds about right.
Re:Joel's Remarks on Grad School (Score:3, Insightful)
I also was a little put off by his discussion of that class--it sounded to me like he didn't really have a good understanding of how proofs work, and, more generally, theoretical mathematics and computer science work.
People skills (Score:5, Insightful)
As an advertising/marketing student, the most important thing i've learned is "KNOW YOUR AUDIENCE". It is a philosophy that applies to every aspect of your life, since you always have an audience. If you know your audience, you know how to approach things with them, and can get better results.
Wonder how this can help you? Well..for starters, with building your resume, talking on the phone, and landing an interview, and then hopefully nailing that interview.
And remember the ever important 80/20 rule. Its 80% WHO you know, and 20% WHAT you know. And while I wish it weren't true, it is, and the sooner you learn that and accept it, the sooner you will go further in life.
Is a CS degree a requirement now? (Score:3, Interesting)
So a question for those just-graduated (or about to graduate): Does anyone hire "self-taught" programmers anymore?
Oh, and one more thing (Score:3, Insightful)
I often compare it to being a lawyer (as any analogy, it breaks down, but it's useful to consider). Like lawyers, tech people have a basic skill/knowledge set that is unfamiliar to execs. Like lawyers, we are highly specialized in our training and in applying intellect to solving complex and comprehensive problems. And like lawyers, mistakes can be extremely costly. Unlike lawyers, however, we do not give programers any kind of insight into business structures, concerns or patterns in school. As a result, many developers don't really know where they fit into an organization, how they can partner with other business units, or when to compromise "ideal" for "useful"--i.e. when expediency is required and how to evaluate trade-offs from a comprehensive perspective. That leaves us wandering a mine field with no idea that tap-dancing isn't very wise...
Emphasis on a well-rounded education is the key (Score:5, Interesting)
My background is a B.S. in Mechanical Engineering where upon graduating in 1993 had the lovely firsthand experience of what was a recession in my field. I returned to do a second bachelor's in computer science.
I worked full-time at the campus IT Department while taking classes vastly ill-structured compared to my M.E. courseware. The options of languages to learn were behind the industry and this is a Pac-10 University I'm citing. Like almost all accredited programs they seem to be under the umbrella of Electrical Engineering. I ended up having to take several classes that I fulfilled in Mechanical Engineering for C.S. The smug remark was always the same, "I don't believe you guys covered this area with applied math in your EE class equivalent." My retort was always, "I don't believe you guys covered anything in your Statics/Dynamics cliff notes and Thermo for idiots equivalents but we don't make you waste time and money taking the full crap if you wanted to do a Masters in M.E."
Needless to say, I was looked upon as a "typical elitist Mechanical Engineer" within the department. I was only there to apply Finite Element Analysis, study Computer Modeling and hopefully get my ass back into a career I had just spent five years educating myself to do. To eliminate the boredom of the classes I made sure in both degrees to have a minor outside the range of technology that may expand my mind. I declared a minor in Anthropology.
Anthropology is where I rekindled my love of writing and love for what makes us tick inside. This diversion made studying science much more enjoyable.
However, it doesn't improve one's odds at retaining a career of their choosing. You garner such skills through Social Engineering--a nice label for Social Networking--where one learns to manage time, alcohol and communicating with the sexes over countless hours of downtime. This set of skills matched with one's professional skills are what land you the interviews and ultimately the ability to adapt into new careers thanks to the chaos known as the Real World. It doesn't guarantee one to always be ahead of the storm--that depends on whether one is constantly cautious and through pessimism looks for such pitfalls.
In short, expect several careers, various job titles that will most assuredly have nothing to do with your formal education and more to do with your social education and more importantly realize your needs fluctuate in life--the needs that we label as attributes to personal fulfillment.
Thanks to this lovely recession I'm currently focused on writing short stories, novels and verse to land me a new career, while simultaneously refreshing myself in Mechanical Engineering (I put that on hold while working in Silicon Valley and the Northwest for a decade) as well as make a conscientious effort to further my technical skills in Linux, OS X, C/ObjC and Java.
The moment you think you have learned enough to sustain a lifestyle of your choosing will be the moment you realize you've never had such a lifestyle afforded you. The promised land of telecommuting around the globe have yet to become the norm. Without this option one is always in debt upon entering the doors at the new job chosen by you which rarely is in the same town and most often requires you to relocate, at considerable expense, on your dime.
Welcome to the Belly of the Beast, where nothing is guaranteed nor afforded to you without a price. Sacrifice, patience and an unwavering desire to be adaptable to change is the only guarantees one has of never succumbing to the blackhole of has beens, contenders, or desperate souls who have given up on all their dreams. No longer vibrant and creative over a few beers while doing their studies they now just meander along in life with the highlights being Friday at the bars, Saturday with the woman and Sunday afternoon Football as their only reprieve from a thankless life of compromise.
The greatest falsehood in the Real World is that what was afforded to you
GPA, degrees, et al (Score:5, Insightful)
Second, the "job prospect" value of a degree, GPA, certification, etc, has nothing to do with the quality of the subject matter. It has to do with the fame of the place. A Cisco certification is going to land a network engineer a job, even if they know bugger all about networks but can pass exams without trying.
These two should never be confused. Good scientists, researchers and engineers will remain good, even if they have little or no paperwork. You can identify them because they get good results. Crick and Watson didn't need certifications in genetics to do DNA research, they needed some modelling straws, a few stolen photographs, imagination and phenominal intelligence.
On the other hand, hiring managers and Human Resource divisions aren't equipt to evaluate candidates on practical skills, because they can't be expected to be experts in all relevent fields. They rely on test results, exams and other easily compared data. They have to.
The best "college advice" anyone can get is to learn how to learn (important to actually DO anything) but ALSO focus on the quantifiables (because you'll never get a chance to DO, if nobody believes you CAN).
The day and age where people with actual skills could make their own opportunities has long since passed. There are no "self-made" people out there. Success and failure depend on a twisted mess of trust and codependency in the job markets, COMBINED with actual skill in the field. You need both. (Stupid, but that's the way it is.)
High scores only mean you can do exams of the type you were set. "Multiple Guesswork" exams are common and require no skill or knowledge beyond being able to eliminate the obviously wrong. (In a typical multiple choice exam, you're set 4 possible answers, of which two are often so far out that they're tied to the paper with a bungee cord. By eliminating those, you're guaranteed a score of 50%. If you can eliminate "unlikely" answers, you'll do 75% or better.)
"Good" practical tests of real "real world" cases are rare. Practicals are typically simplistic and free of typical problems. However, those "problems" are often not "noise", but characteristics of the cases in question. So, eliminating them renders the case study meaningless.
eg: Programs that can't run into memory problems, require CPU cycles, or have sync problems with threads, are not real. Everything costs, and programming is about figuring out how to maximise the benefits while staying in the costs - complexity, cycle count, financial expense, RAM, etc. The reason for the bloat in modern programs is that costs are neglected in education and therefore understanding isn't important to get a good test score.
Other examples would be latency-free infinite-bandwidth networks. Or parallel code that doesn't consider Ahmdal's Law. Or microkernel OS' that don't consider the expense of the added layers. Or real-time systems where components are running at such disparate speeds that they cannot function together.
If you don't know why things happen, you can't know what to do about them. Having a bunch of "facts" is merely having a religion - received wisdom with no backup or proof that all too often conflicts with what people actually see.
You've got to be "initiated" in the religion of the job market, if you are ever going to be hired. But you cannot afford to believe in it, if you expect to do more than blindly and robotically follow a set script. Sure, many employers WANT robots,
Internship available (Score:3, Informative)
Team Overbot [overbot.com], Silicon Valley's entry in the DARPA Grand Challenge, is hiring.
Coolest robotics project in the area. Great resume builder.
C++. GCC. Python. Geometry math. Electronics work. Field testing. Hard problems. Not boring.
In Redwood City, CA.
As usual, a mixed bag (Score:5, Insightful)
When I'm interviewing a recent college grad, though, I don't look at GPA as much as he does. Too often, high GPA indicates that a student figured out what the professor wanted to hear, and said it in the way the professor wanted to hear it. This is even true in the hard sciences. While you won't get a high GPA without having some grasp of the material, the difference between a 3.0 and a 4.0 is often how much you pander to the professor or TA.
But the seven points of advice are right on, especially "Learn to write" and "Get a good internship". To these, I would add "do something career-related outside your courseload".
There are many recent CS grads who did well in coursework, can write acceptably, and don't stink up the interview. I want one who has enough drive and intellectual curiosity to do something beyond what's required.
If you've got an industry-related blog [blogspot.com] or website [windev.org], or you've written a couple of programs out of curiosity or for your own use, then you have a major advantage over your fellow students at interview time, at least if I'm doing the interviewing.
puppeteer philosophy of hiring (Score:5, Funny)
Avoid hiring unlucky people.
while (*s++ = *t++); (Score:5, Insightful)
Probably the most talented debugger I've ever known is not coincidentally a somewhat poor programmer. His ability to understand complexity and obfuscation is second-to-none, but those same skills work against him when he writes his own code, because what he sees as "resonable complexity" ends up resulting in unmaintainable code for the rest of the programmers.
Knowing what happens under the hood is a good thing. Writing code like you're under the hood isn't.
Re:while (*s++ = *t++); (Score:3, Insightful)
And if you can't explain why you should never use this to copy a string, then I don't want you coding at my company. (Hint: What if t isn't null terminated, or len(t) > memory allocated to a?)
And if you think strncpy(2) is the solution, I still don't want you coding at my company. (Hint: If char a[256
Re:while (*s++ = *t++); (Score:3, Insightful)
Secondly there was nothing wrong with strncpy all along.
Thirdly I've always hated the "testing the result of an operator =" thing because it always looks like a operator == gone wrong.
Fourth, it has no comments. The fact that we're sitting here debating what it does is a problem in itself.
Fifth, if it's some wanker showing off because they can write l33t fast C code they need beating over the head with a copy of an Altivec book. Or a SIMD book. Maybe e
An couple of additions (Score:4, Insightful)
1. Take an introduction to finance
Learn how to read and know the differences in a financial statement including a balance sheet, an income statement, and a cash flow statement. Learn the differences between operating and capital expenses. Learn how the income statement can say you are making a profit, when the cash flow for the period is negative!
Finance (along with the law) are the programming languages for the operating system called business. If you understand them, you can hack them just fine!
2. Take an introduction to business law
Learn what is and isn't a contract. Learn what a tort is. Learn the differences between a patent, a copyright, and a trademark.
The Legal System (for good or for ill) has a tremendous influence on our lives. Being illiterate in the law can result in self-inflicted wounds!
Yours,
Jordan
Very bad advice (Score:5, Informative)
But this line takes the cake:
Right. Because programming is all about understanding pointer arithmetic.
This statement has nothing to do with CS, nothing to do with software engineering, nothing to do with digital design or assembly. This strikes me purely as "my language is better than your language" elitism.
I firmly believe in his general thesis: a great software developer pays attention to soft and hard skills. Software development is a continuum of skills: at one extreme, it's all about people -- at the other extreme, it's all about computer science.
However, the argument that the best programmers must know C idioms can be reduced to the argument that the best programmers must know (in depth) electrical engineering, digital design, or physics. Because otherwise, it's just superstition that the machine works!
In today's world, knowledge is the essential resource. It's more important to know how to organize your ignorance than to try to learn everything.
Abstract languages like Simula, Lisp, and Smalltalk completely changed the way we look at computer science. It brought the "people" element back into it - the need to think and communicate primarily at the level of the problem, not at the level of the machine -- but retaining the ability to drop down to machine level when necessary.
Abelson and Sussman explained this shift in the preface to SICP [mit.edu], which I think is a good way to end this rant (highlights mine):
Re:probably the best advice i woudl give (Score:2)
You need to network. Maybe get yourself into a non-engineering frat or otherwise socialize. Meet the people that will know where the future jobs are.
Re:Internship?? Get a real job. (Score:3, Insightful)
Either I don't know what a real job is or you took some really shitty CS classes. First off you don't learn dick about CS as a help desk lackey. As a programmer you honestly learn little more aside from bad habits that become hard to unlearn when you are shown proper theory.
CS != fixing computers and CS != programming. My advice to you go to a real school, the kind where you are constantly being chall
Re:Slashdot: Comforting Lies for the Cardboard Cro (Score:4, Informative)
No it doesn't. Your conclusion is just one of many that you *could* infer from a high GPA. It could also indicate somebody who cheated like hell, slept with their teachers, "played the grade game" by taking the easiest possible classes, etc., etc. High GPA is not a guarantee of strong performance in the "real world."
There are so many factors that you have to evaluate beyond just a single number, to come to anything close to a meaningful conclusion. Who's better, the student with the 4.0 GPA who took things like "Basket Weaving" and "History of Pornography as an Art Form" as electives? Or the guy with a 3.4 GPA who took "Quantum Mechanics" and "Intro to Neural Networks" as electives?
or what about the difference between a student with, say, a 3.8 GPA, who had rich parents to pay his way through school, and didn't have to work at all - versus a guy with a 3.5 GPA who worked full-time, 3rd shift, and followed work with an 8:00 am section of "Discrete Mathematics?" Hmmm... who is more "competitive" and has more will between those two? Which one will outperform his/her colleagues in the working world?
Are you *really* comfortable just picking the higher GPA in either of these cases?
Why should I take the risk that someone with a mediocre score will suddenly decide to apply himself once he's on my payroll?
You're taking a risk either way. GPA is just one factor you should look at, IMHO. If I were evaluating a candidate, I'd want to see their transcript, and actually look at what courses the selected. I'd want to talk to the person and find out what their interests are, what motivates and drives them, etc.
and FWIW, my own GPA is a 3.75 at the moment, so none of this is an attempt to apologize for myself.
Re:College Question (Score:4, Insightful)
I think the answer is "it depends." Some hiring managers might put great stock in the "eliteness" of your school, some may not care at all. Myself, if I were doing any hiring, I admit I would be somewhat impressed by someone who graduated from Stanford or MIT, and might be a bit more tempted to call those folks in to interview. But I certainly wouldn't exclude someone just because they went to North Carolina Central or East Carolina (or, God forbid, UNC-Wilmington) instead.
All said, I think that going to a more prestigious school is more likely to help, than hurt, your career opportunities. So if you are accepted to, and can afford, the more prestigious school, I'd say go for it.
Re:AC Gives College Advice For US Programmers (Score:5, Funny)
That way you can compete with Mexicans for jobs instead of Indians.
I agree (Score:4, Insightful)
And I don't agree about his C thing either. If you really want to know how the machine works, why not learn directly assembly instead? And when you actually want to produce something, switch to Python