Joel Gives College Advice For Programmers
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!"
nteresting to note is how he justifies such trivialties as GPA scores and well-roundedness, the very things comments here tend to think are overrated.
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 saying I hate college with poor grammar and spelling. Responses to it basically stated that a college degree was worthless.
Amazing.
Visit Jonesblog and say hello.
Actually write code. Get off of your donut encrusted seat and write code! Experience! Stop complaining... Arrgghhh.
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?
"donut-encrusted seat" just brings up very bad mental images of Homer Simpson and X-Lax. I think I need to wash my brain now.
picpix image polls. create - share - vote. fun!
Please, please, please! Learn to write English. My wife delights in showing me papers she's had to grade from freshman composition classes that are written entirely in txt msg spk that U or I do ! understnd.
Seriosly, bad communication skills generate huge costs in lost time, and legal fees when something goes wrong.
Trying to use sarcasm in text-based forums does not work.
ive been out of school for about 10 years..if i were to just get out of school, and had the initiative, i would pick a fun programming project to do on the side while i look for real work.
then over the months/year i would grow that into a shareware program that would give me income. the key is to peck away at it.
not only will they learn a lot about writing a real program, AND make money, but they will learn about all the aspects of the software business.
probably not for everyone, but eventually every programmer should try their stab at getting a product to market
pextrox
http://www.bibleplayer.com/ Read and hear the bible on your ipod
* Learn microeconomics before graduating.
* 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."
A blog like any other.
I actually just got my BS in CS about 3 weeks ago...with a rather mediocre GPA in fact (damn sociology class!). I'll let you know if there is any reason to take this with more than a grain of salt.
My advice would be to not take college too seriously. You can learn much more efficiently when you pursue your own interests in your own time. Use the college to get a degree and meet people, and your spare time to study.
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.
Please correct me if I got my facts wrong.
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.
A feeling of having made the same mistake before: Deja Foobar
You have your whole life to work. Even if you think all you ever want to do is program, nothing beats those college summers for traveling, working interesting jobs like at summer camps, outdoor guides, etc. Live a little, you have your whole life to work. Obviously Joel is stressing internships for selfish reasons anyways. There's more to life than just your job. I love programming and I love computers, but I also loved those college summers I spent working with kids at summer camp, teaching swimming, camping, and hiking, traveling with my friends, going to the beach. Enjoy it!
"Karma can only be portioned out by the cosmos." -Homer Simpson
they have to take all these unrelated classes.
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)
Here is Sriram Krishnan's response to Joel's advice
"When the only tool you own is a hammer, every problem begins to resemble a nail." - Abraham Maslow (1908-1970)
ML, Java, Python, whatever trendy junk they teach these days
It's nice to hear someone be realistic for once
I wish I would have read this piece before starting college. I have to say I agree whole heartedly with the author. I was just offered two seperate positions not because of my programming skills but because of my ability to communicate to others.
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
Learn how to communicate.
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.
Diplomacy is the art of saying, "Nice doggie!" until you can find a rock.
I find myself a closet programmer. By day I'm what They (tm) call a "Systems Analyst," said with a breathy expulsion like it is some sort of position involving the laying on of hands. My employer makes no bones over the fact that this is the Way of Things, so if I want to continue to get a paycheck, I will learn soft skills and management skills and all that other non-coding stuff.
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.
Mit der Dummheit kämpfen Götter selbst vergebens.
Speaking as someone who had a terrible time with English classes in High School being filled with petty, authoratative boors who enjoyed finding students out in the hallways to be punished, and thus cultivating the attitude that humanities and social sciences are utter "bullshit", college English, History, and Philosophy classes were a lot of fun. You don't have to major in the stuff, but get a broad base for it. You won't be able to later, but it's cool to shoot the shit with people at 3 in the morning about Hobbes or Locke, which you won't be able to do later in life.
Rhymes that keep their secrets will unfold behind the clouds.There upon the rainbow is the answer to a neverending story
Better advise, get a real job after the first year of your basic classes. Either a low level programmer or at a help desk at a small local company. Then work around your classes or take 3/4 load. After the first month at your "real" job you will be practically TEACHING the CS Classes you are taking. Sure, with the 3/4 load, it may take 5 years vs. 4 years, but while all the 4 year grads are out scraping for low level jobs and making peanuts, you will hit the ground running after graduation as either highly paid consultant or at least a high level programmer.
- Learn to code so others can maintain what you have written (brilliance is in simplicity and clarity, not obfuscation and pedantry).
- You. Must. Work. With. People. Learn to communicate Lucidly, Briefly, Respectfully and Disarmingly; if you do not understand these words, do look in a dictionary.
- Always eat well; healthy food is brain food (sometimes it takes a sharp brain just to find good food in the grocery store).
- For pity's sake, do not waste your time with pr0n! If you develop Carpal-Tunnel Syndrome, you're finished.
Rich And Stupid is not so bad as Working For Rich And Stupid.
I agree with him about getting a good internship. I got one in summer 2003 that payed $6/hour. Not many in the area applied for it due to the low pay. summer 2004 and 6 weeks before graduation I am worrying about finding a job. I figure I'd call them up and see if I could get the internship again. Turns out they called me before I could call them. It turned into a full time permanent job I am enjoying now. As to what I do? I work at PBS, make good pay and get to play with 5,6 and 7 figure TiVos. (AKA Broadcast Servers).
Fly me to the moon Let me sing among those stars Let me see what spring is like On jupiter and mars
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!
https://www.accountkiller.com/removal-requested
See my invention LingoX: http://www.mail-archive.com/mt-list@eamt.org/msg00 756.html
I've loved it for years. It hasn't really gotten old for me (20+ years), but then every few years I reinvent my career. I started out in real time, with assembly and FORTRAN on minicomputers, then learned C, then learned UNIX, early on became an X11 guru, learned C++ and Objective C (along with some Nextstep), jumped on the WWW bandwagon before 99.999% of anyone had heard of it, was an early Java guru (with a book to prove it), and so forth. Along the way I've done some free software stuff, including work with the GIMP, programming web sites, tools, etc. My career has morphed into IT manager (working at small companies, or hot spots in big ones, I've always had my hand in it), so that's another career.
The computer industry has been good to me. It paid the bills while my wife stayed home to raise our children (things were tight, but we managed). Now, I'm ready to try making a living via some of my other interests; hopefully I'll be out of high tech in 2-3 years. In the meantime, I'm fine with it. And even after I'm out, I'll still dabble, if only writing PHP or something else for web sites I maintain.
FWIW, I've never had any problem differentiating the computer at home as an email/web/etc tool from my computer at work as a development/management/slashdot tool.
I wouldn't say I hate my job nor would I say that I love it. An honest assessment would be that it has its ups and downs (at least for me).
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 around financial solution, upgrading existing solutions to today's technology, online marketing, etc. I think that most computer science majors would NOT find the previous list of things stimulating.
There's a small minority (how small I don't know since I'm hypothesizing here) of tech jobs that are fun. Funs jobs don't always mean stable or well-paying.
In short, other comments have talked about education versus mobility and how mobility directly relates to staying away from tedium. Those comments are right on. The better education you have, the more you can move up and do the cool stuff instead of the grunt stuff. The grunt stuff is what gets tedious.
Finally, to put it all together, I find my job fun when I'm learning something new. Jobs aren't always like that. Companies are usually more interested in teaching you a skill and then having you do it over and over (unless you're a researcher, CTO, or, for some other reason, your position calls for it). I think a good number of companies ignore (or don't do enough) continuing education for their employees.
"Injustice anywhere is a threat to justice everywhere." - Martin Luther King, Jr.
. . . amazing how much bad grammer and poor spelings holds back you.
So long and thanks for all the fish . . . !!!
The world is full of educated derelicts. It's persistence and passion which makes you succesful. Anyone who sums a person's life qualifications on their GPA and behavior from when they were 18-22 years old is a moron and quite frankly, lazy.
As a lead software developer at a major software company, I must say that Joel's comments are spot-on and that, contrary to his self-deprecating comments, following his advice will do you a great deal of good.
Please, please get the internships. I promise you they will improve your career tremendously.
bug.gd: error search engine. Humanity working together to solve all errors.
I was a closet-nerd.
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 bricklaying and plastering, plumbing, carpentry, welding
When in college try not to focus all your energy in one spot especially your strongest areas. You're already good at that, if you work at that your GPA will go up .1 . But, if you work on your weaknesses, that's where you have the most room for improvement and get the most rewards for the smallest efforts.
You can legislate morally you can't legislate morality
What I consider to be the most important:
* Literature
* History
* Physics
Literature: because there is more in life than "Lord of the Rings".
History: because if you don't know where we have been then how the hell do you think you know where we are going?
Physics: because it may be a bitch to get through, but there is a lot than can be applied to software development.
Okay, nuf of that, back to reading my manga...
IANAL, but I've seen actors play them on TV
Hell learn to pirate cable and sat. tv and you'll always have friends in college. From those friends you get gfs and when that girl who always got sick on lemon gin becomes an exec guess who she's nominating for a job.
Easy street baby, yeah.
I know several folk who had 4.0 through at least their undergraduate years, and some through a Masters or PhD. The majority of them are real people, not ubergeeks. They communicate, they have fun, they can make jokes with or without computer references, they get along with just about everyone short of Osama.
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!
In short, learn to write English, learn to write C, and don't worry about India!
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."
I'll never forget one of my CS profs telling the class in a 400 level that a number of the 100 and 200 level profs have found that many of their incoming students can't remember how to do long division. Many of the students I see at my university have terrible HS educations, and we are one of the top public schools in Virginia. The ability of so many that I have seen to coherently argue a point, especially without resorting to profanity and ad hominems, is simply non-existant at my school.
What's interesting to note is how well people who take advantage of the liberal arts nature of our university tend to do in CS. Of course perhaps these people value learning for the sake of learning, rather than seeing money signs when they're selecting their course schedule. I'm not sure exactly which it is.
Communications skills would seem to be the easiest way for Americans to differentiate themselves from foreign outsourced competitors. If we can eloquently communicate what we are doing to our employers and write very clear documentation, then we can add another reason to stay with us. That's not to say that Indians naturally have poor communications skills, in fact the few we have here are probably more adept at this than a number of my American peers. What it does do, is it makes it harder and harder to justify moving labor overseas because it makes it only about money, not capabilities.
One or two classes on technical communication can really make a big deal in how you are perceived if you take advantage of them. Isn't that what has been holding back OSS for so long? Arguably what has kept companies like Microsoft and Sun in the lime light for so long has been their ability to communicate to business people and developers.
Joel's assumption seems to be that every CS graduate wants to be a working programmer and a clone of Joel. Look at where Joel is in life and think twice about whether you want to be there yourself. He's running a software company producing bug tracking software, one of dozens such systems. And occasionally, he preaches his depressing philosophy of how to add more messy code to existing messy code. Sure, it may bring home the bacon, but it seems pretty meaningless to me.
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.
(Disclaimer: I skimmed most of the article except for the part on grad school.)
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.
"Injustice anywhere is a threat to justice everywhere." - Martin Luther King, Jr.
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.
If you ignore the other uses of a tool, does that make the tool less useful, or you less useful?
Well, I won't take seriously an advisor who pretends to care about programmers' English-language skills, yet considers "they" a neuter singular pronoun.
Whether you like it or not, "he" is the neuter singular pronoun in English.
If you wish to avoid offending gender-sensitive people, simply use the plural. if Joel really values literacy as he says he does, he should have written:
I won't hire programmers unless they can write, and write well, in English.
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.
Buy Steampunk Clothing Online!
Overall GPA *is* important, IMHO, if only because there may come a time when you want to get out of tech. Going to b-school, law school, or whatever ... GPA (and, incidentally, a well-rounded education) is paramount.
What Joel says can also be applied to a number of technical disciplines. I am an engineer, but much of what he is talking about can be applied to us too. It amazes me what passes for writing skills in engineering. It is so frustrating to try to pick up on previous work that is poorly documented. Then, what documentation is present is written in something like english, but so badly written you have to re-read it several times to understand what the heck someone is trying to say.
I also enjoyed his comment, "You need to spend at least a semester getting close to the machine". Understanding these machines is so important. I really had no idea what happened in the guts of a machine until I took a class programming microcontrollers in assembly and in C. Made me appreciate things a lot more.
Having done so much with so little for so long, I now can do anything with nothing at all.
GPA might help for the first job out of college, but it won't make up for a lack of job experience, as in, do summer internships and get good letters of reference from them.
Which he in fact does say later on in his speech.
What a fucking hypocrite. His first point "Learn how to write before you graduate" is totally fucking blown away by his run on sentences. Jesus christ, I thought that I wrote bad. Looking at this guy I can clearly see that I don't need all those writing classes I planned on taking.
The rest of his points seem to be on the "obvious" side; who the hell is this guy? Maybe I'm not up on all the writings and books but I've never heard of this guy at all. He obviously needs to go back to college for writing if he has anything to do with publications. I was disgusted after the first two "paragraphs", if that's what you can call them.
I'm f#$king magic!
I graduated cum laude in May with fair amount of activity crap.
When I interviewed for my job nothing was asked about my education. Zilch. I could have put down any degree from any school I wanted and they wouldn't have cared.
All they were interested in was my work experience, and that I had a degree.
I'm not saying college had no point, I loved it and learned a lot. But if you just want a job, you may just want to lie and put down a bogus degree. What are they going to do? Beat you up if they find out?
Yes, there are a bunch of out of work IT people making a lot of noise about how long they've been out of work, but you know what? At the risk of pissing them off, really good programmers do have jobs.
Well, from somebody who thinks he's a good programmer but without a job, how is somebody going to know in college whether they are really good or merely (allegedly) mistakenly think they are good, like me?
While I can't speak for others, of course, I think that the many aren't actually in opposition to intellectualism, but - like myself - simply think it is overrated. It is definitely worth while to learn to communicate effectively, especially in writing, but it doesn't necessarily follow that college is all it's cracked up to be.
I attended college for two years (before dropping out), and some of the things extolled in the article were things notably absent in my college experience, such as actually writing code. Personally, it seems to me that my writing skills are not necessarily less developed than those of some of the college graduates I know. A fair portion of the people I know or work with who have college degrees are no more competent than myself or others without such a degree (indeed, many are less so). My point is simply that having a diploma is overrated. It doesn't appear to me (although I am admittedly biased) that a college degree is necessary to be an effective programmer, or that there is even a necessary correlation between education and effectiveness.
But then, again, I'll have to wait and see if I actually make it as a programmer...
I am looking for a really profound text, on the order of the K&R book on C, focus on micro as outlined in the article.
Kudos to Joel for emphasizing the Big Picture. In the real world, you succeed by 1) doing good work every single day, and 2) selling yourself. You sell yourself best by communicating well -- a clear vision backed by a clear voice will do more to gain you respect than anything else, technical prowess included.
As Joel says, Linus Torvalds' success probably lies *equally* as much with his communication skills as his technical abilities. His accomplishment was not so much the design of Linux as the catalysis of a far flung herd of cats into inventing the next 'insanely great thing'.
Excellent advice from Joel. Slashdot, get a clue.
Randy
Interesting. Even when I graduated (1991), it was still possible to get a programming/development job on basis of skills/experience alone, regardless of degree (or G.P.A. for that matter).
So a question for those just-graduated (or about to graduate): Does anyone hire "self-taught" programmers anymore?
What a game baby!
It's been a long while ago since I graduated from college. Unfortunately, while it took other people perhaps a semester or two to realize their true calling, it took me four years, plus two years after college, to realize that I didn't want to follow through my undergrad degree in biology and spend the rest of my days smearing botullinum onto chocolate agar. Since then I've held a number of jobs, all in IT (I am currently an information security consultant), but the desire to go back to school has never left me.
I guess I took a somewhat different path to touch on many of the topics that Joel discussed in the article. I am an excellent writer of English (though I spent my first eleven years overseas in a non-English-speaking country), but it took me a while to understand the dynamics of business, to learn to interact with people well in a business context (and not just being "a nice person"), to bear down and do the grunt, "boring" work, and so on. I also learned to appreciate and understand the world - and people in general - in their myriad gray areas, something not easily learned without experience.
Ultimately what Joel is writing about is not so much a treatise on "how to survive as a CS graduate", but a pointer to excellence of living. The applications are many, the paths of learning varied, but the lessons are the same: Use your utmost to dream - and achieve - the ultimate. I certainly have been learning my lessons as a biology grad, and this can certainly apply to anyone else.
What gets old are working for people repeating the same mistakes, even when you know better and tell them what is going to happen.
I still code after 10+ years, also some stuff on this side for fun - a job is really different than stuff you do at home or with a small group. Most jobs are quite a bit about meetings and figuring out business needs and such, which is part of why it does not nessicarily get as old as it seems it might - you end up with variety in people you talk to and problems you are working on. If you are not interested in talking to other people that could be a problem but you must train yourself to accept that part as being fun, which it can be - I used to be very shy and hate talking to other people but I drew myself out of it. You really have to if you want programming to be an interestig carreer, as the projects you get to work on will only be as intersting as you are to others.
Here's my main advice - when working on a project at any company, think carefully if the project is going to work out or not. Perhaps the first few times on a project you might not have enough expereince to know, but try to pay attention and see if things are going wrong early.
If you find yourself in a project you know is going to fail, do anythign to change that. Do what you can to move to other projects; failing that try and maneuver yourself into working on some hard part of the project that no-one else wants but has relevance to other stable projects in the company - so you can make as easy a shift as possible into something else when the project falls.
Even if not on a failing project, always try to plan ahead a little and think of what you'd like to be working on after what you are working on now, and try to put yourself in a position to naturally transfer there.
A little bit incoherant in structure, but I hope you glean something useful from it.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I think the most salient point in this article is about India. Truth is, Computer Science is a valuable degree no matter what you want to do -- it's one of a few that guarantees that you know how to think. My friend's father was a comp sci major and turned into one the world's most influential business thinkers (without even going to business school). Want to go into law? Law schools LOVE computer science majors because they have experience thinking analytically. The other point that Joel doesn't make in this article is that the only thing that can be guaranteed about the job market when you graduate is that it won't be the job market that was around when you start. It's as foolish nowadays to assume there won't be a job for you when you graduate as it was to assume five years ago that there'd be $100k jobs with lots o'stock options waiting when you graduate. Do what you love and the job market will sort itself out.
>> ...such trivialties as GPA scores and well-roundedness, the very things comments here tend to think are overrated...
GPA scores and being well-rounded are trvial only if you have bad scores and a cardboard personality.
If I'm hiring someone, I want an employee who is competitive, someone who has the ability and the will to outperform his or her colleagues. A high GPA score tells me that person has already done exactly that in an academic environment. Why should I take the risk that someone with a mediocre score will suddenly decide to apply himself once he's on my payroll?
As for the well-rounded part...well, if you're boring, you're boring, OK? Given a choice, interesting is better.
-- Slashdot: When Public Access TV Says "No"
Comments from a surfer newsgroup, on non-cubicle jobs:
Good advice. For instance it's the only way for me to get our company's 15-year old software product to talk to a J2EE server.
To learn to Spell? Especially before posting on the internet? There's gotta be a class for that somewhere.
I was wondering if the university you attend matters in the long term? I'm a freshman right now at a university close to home with a scholorship. The university isnt known for computerscience and the cs classes are really easy. I was wondering if it is worth it to transfer to another (more expensive, well known) university.
I think that's the only bone I have to pick with them. When you have a customer who's a PHD, they want you to kiss the ground they walk on and such... Good times.
You complain about Americans being anti-intellectual, yet you can't capitalize correctly or even form a sentence with proper punctionation. Amazing.
I pretty much agree with Joel, but he left off one major point. Most programmers learn how to write code. They don't know how to read someone else's code. Give a new hire someone's code to update and I'll bet you most of it will be rewritten because "it's too complicated" or some other lame reason (which really means "I couldn't understand what was going on so I redid it from scratch").
(Of couse, since no school teaches you how to read code, you're on your own here...)
My very first internship was building Emacs on some computer system I cannot remember, and helping people figure out how to use it.
My pay for this summer job? Exactly zero. But the experience I gained was very valuable, even though I didn't get a job with that compnay later on.
I may have missed out on a summer of pay. But consider this - you can always work at college as well, or even a second job if you need money. Chances for real experience are much more rare.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I did all of these things twenty years ago (including not worrying about India, because, well, who DID twenty years ago?). The result: I have a successful, lucrative career/business, and I like what I do.
Still, I worry about India now, and I caution youngsters who want to get into the field. While it is true there are still jobs out there for good programmers, most kids I see who want to get into programming are too myopic and, basically, slothful to succeed. Additionally, I'm too cynical to believe that Corporate America really wants good programmers when they can get half-assed Indians to do the job for pennies, and put the savings into marketing and IP lawyers.
Proverbs 21:19
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...
I graduated long ago before internships were even thought of. Coming from a poor background but having gotten into a respectable university, I found I was able to talk my way into quite good summer jobs. It was nice to be sitting in the QA department analysing returns and manufacturing defects using a mechanical calculator and a slide rule while the other vacation workers were engaged in manual labor (and it paid better), but I reckon the year of summers I spent in paid work taught me as much as a year of college, and certainly made me more employable. The strange thing was that when I graduated I didn't even apply to the company that had employed me, partly because I wanted to see a bit more of the world, and partly because, I think, I regarded the work I had done there as being part of my education, not part of my career.
Panurge has posted for the last time. Thanks for the positive moderations.
seconded. I am an ordinary programmer. (I don't have a CS degree), but I have had vastly more success in the job market than lots of folks who are far better programers because I communicate well. This isn't JUST being good in interviews, but I can actually talk to non-technical people.
I had a nice converstation with my father-in-law (who is a mananger in a knowledge-management position in the Air Force civil service) over Christmas about how his router worked. I used no acronyms or technical terms. At the end, he said, "I see why you've been successful. Most of the time, when I talk to our IT people, it's complete gibberish, and I'm not an idiot when it comes to computers"
DO NOT DISTURB THE SE
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
If you're a mathematical/engineering sort who enjoys elegant proofs and clear inductive/deductive logic you'll have serious philosophical issues with macro-economics and the philosophies it spawns. Micro-economics is not only the foundation of macro, but its reviewed accurately in TFA as the provable mathematical underpinning of business and the economy. Furthermore, you CAN usually reduce local markets and well-defined vertical markets to strictly micro-economic definitions without concerning yourself too much with international influence from currency fluctiation or the rice harvest yield in China.
I've heard it said that Macro economics is made of equal parts micro and bull$hit. Perhaps thats an unfair judgement, but its awefully close.
programming is a labor job.
It's not what you know its WHO you know.
If you can get an internship DO IT. If not, make as many connections as you possibly can because that's what it all really boils down to in the end...
Case in point, I followed virtually all those steps listed(except taking a microeconomics course and internship). It wasn't of a lack of trying, I tried for an internship but to no avail. One year after college later I finally got a job with computers only because my old next door neighbor knew of a position opening up in his company for a sys admin.
Now fast forward to my friend. He had nearly a 4.0 gpa, he couldnt find an internship either until some connection he made got him into one. So with that experience he was immediately able to get a programming job with computer associates while I struggled to find any job...
As a brief background, I graduated in 2001 with degrees in computer science and politcal science. I got the poly sci degree in case computers failed me but that degree failed me too...go figure.
A high GPA score tells me that person has already done exactly that in an academic environment.
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.
// TODO: Insert Cool Sig
Overall, in response to the article, there is a good career to be made translating "programmer-speak" into Plain English, mostly because there are legions of good progammers who just can't explain themselves, what certain hardware/software does/is supposed to do, or justify why one way is better than another way. I haven't done any real coding in years any more, but I'm earning a good living writing every day in a language known as "English."
It sure is a good thing I took all those "other" classes back then!
and don't worry about India!
Dear Cletus,
Don't worry about your horse training business. This car thing is just a passing fad. I even just put my life savings into horse stocks. Now would I do that if cars had even a slim chance of denting our field?
Your wise friend, Fred
Table-ized A.I.
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,
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
After all these years, still a wee bit touchy about that A- in CS351 are we?
Team Overbot, 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.
Bull.
Well, all right, if by "own your own home" you mean "have it paid off, no mortgage, by the time I'm 24", then, yeah, you probably can't do that as a programmer. Those days are over.
But if you mean, "I can afford to buy a house on a programmer's salary", then, yes, you certainly can. You're going to have to live on a budget (just like everybody else), but you can do it. (But, I must admit, you can't do it in California. If you're there, wake up and smell the real estate prices in the rest of the country.)
What's happened over the years (and years, and years,) makes me glad I'm getting the fsck out.
Its not really a profession I can actually recommend to any friend. Others, sure. I don't really know them.
MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
I agree with these comments and wish I could convince more pre-med students to take this advice. Learn to write! Learn some basic concepts of business. Take the courses that will help you do the REAL job you are hired to do. Great concepts.
Does anybody know this guy?
You make excellent points in repsonse to the poster, but he too had good observations. Your "counter culture," was lucky to be able to keep your "punk ethos" outta your careers. But you were able to find a crowd: whether you'all fit as a group doesn't matter. Minimal social skills are very necessary in finding work. A big part of college in America is social networking or at least learning to network, and I sympathize with those who don't get anything else from school.
If you're going to nitpick someone's typing, at least have the sense to spellcheck your own.
Don't blame me; I'm never given mod points.
Maybe he would if he knew what punctionation is. I hope this sentence is properly punctionated.
Are you referring to BWJones's post saying I see comments like "PhD's dont know nothin" (sic)?
If so, perhaps someone should point out that (sic) is Latin for "thus." In the context of a quotation, it means "quoted exactly as originally written, even though it has obvious errors."
About the word "if": If bullfrogs had wings, they wouldn't bounce around on their little green butts.
Learn how to balance a check book.
Learn how to write a check.
Learn how bad credit cards can be (learn why they can be good).
Read up on stocks, mutual funds, etc. Have a basic knowledge.
You're probably going to be making money for the first time in your life... INVEST AND SPEND IT WISELY!!!!
100% Insightful
I think that progaming would get very old and the last thing I would want to do after I get home is hop right back onto the computer and play games all night. I live for playing video games and the last thing I would want to do is do it for a living becasue what are you going to do for fun then I dont know about you guys but I do not want to do somting that I love for a living becasue what are you going to do for fun then. it has to get old at some point where you are not going to want to do it when you get home
There are inteligent, capable people both with and without degrees.
There are idiots both with and without degrees.
The following statements are prejudice:
1) I would never hire someone without a degree
2) I would never hire someone with a degree
3) I would never hire someone with a PhD
Some folks who work in technical fields and do not have degrees are pretty sensitive about the subject.
They do not want someone to devalue their experience and knowledge just because they did not get a piece of paper.
I got a degree. It was not in Computer Science. I enjoyed all the learning I did in college.
I enjoyed learning a foreign langauge and then travelling to that country afterwards.
I enjoyed learning Math, Physics, Chemistry, Biology, Philosophy, and Political Science.
I enjoyed having professors that really knew what they were talking about.
Every now and then I say something that shows I assume that all my fellow programmers have degrees.
I just forget that not everyone got to where I did by the same path.
But if they feel secure about themselves, they will realize that I didn't mean to insult them, I just forgot.
"We can't solve problems by using the same kind of thinking we used when we created them." -- Albert Einstein
I usually like what Joel says just enough to keep reading the essays. This is a pretty good one.
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 or website, 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.
I was at a MIT class reunion last year and was amazing at how many of my acquaintences were in software engineering, yet did not major in computer science. I ran into a geologist, linguist, philosopher, biologist all doing S.E.
I dont know if there is any moral to this observation. Perhaps it is spend some time learning broad interests. Making money will come later.
As far as coursework- the trendy course I took in MITs business school became outdated in about three years. However, I still use the stuff from more basic C.S. courses which had little immediate practical value.
one of the authors of the book for that class, dexter kozen, showed me that CS theory, while not always terribly useful in the field, can be very exciting and really makes you think about things differently. i took his graduate Design and Analysis of Algorithms course and really fell in love with it, even though i don't want to pursue a career in theoretical CS.
i think you are right on target-- he is reimplementing old ideas and while i am sure he enjoys what he does, there are plenty of opportunities to make new and interesting stuff in CS.
BSD is for people who love UNIX. Linux is for those who hate Microsoft.
I don't think college is worthless, but I do think that there are many people who are very limited in confidence and/or capability who hide behind their college degree.
I value education, but I am realistic and try to identify the individual's skill and intelligence. There are often times that I meet someone who isn't the sharpest tool in the shed, but they frequently remind everyone how they have a Master's degree. That annoys me, because they might not be as skilled or intelligent as someone with a Bachelor's degree or no degree, but they seem set on establishing a pecking order with themselves on top, justified by their degree. This is nonsense. You earn your position in life by competing with the crowd... the cream of the crop will rise to the top on its own.
I think the main problem is the use of degree as a status symbol. Instead of applying their knowledge to the field that they studied, some people simply use their degree as a status symbol, and think they're better than you because they have a higher degree than you do. Here's an example- on my last project I was making phone calls scheduling appointments with users in the building. You'd address the users by first name, such as "Hi, Jim, this is xxxx", or "Hi, Cathy, this is xxxx". We had one user who demanded that we call her "Doctor Smith", and how she got the degree from some well known university. This reasoning is egotistical, not to mention flawed because we were not addressing people by title, we were addressing them by first name. Yes, you'd call her "Doctor Smith" instead of "Mrs. Smith", but when calling someone "Susan" they're still "Susan". That would be like me demanding that she not call me "John", but instead "Mr. Doe".
I think in the end it comes down to your intelligence and your desire to learn. Unfortunately some people lack that desire and are instead content on earning a degree and flaunting it everywhere they go for the rest of their life, as if they can use it as a rite of passage for the rest of their life.
If you're in the position to hire personnel and are looking to staff a position... take your stack of applications and divide them in half at random. Take one stack and throw it into the trash.
Avoid hiring unlucky people.
Speak truth to power.
I'm reading this and i'm like hmm, decent advice blah blah blah... i didn't get a great GPA in college but i did land a good programming job...blah blah blah and first i'd like to say I've never heard of this Joel guy, the submitter and Joel himself make it sound like he invented the first computer program ever, but i've never heard of him, and i like to think I keep on top of tech news and people. Then he ends his story with "kids one day you can make a great bug tracking software like my company does", and i look at the website, and no joke i've created a bug tracker with as many features as that in a single day, and I don't consider myself any kind of computing guru (I certainly dont have a website called momoruonsoftware.com). So i'm not entirely impressed with his guy, and his "Make sure you take C, and dont worry about logic classes" advice. Anyone want to explain who this guy is and why anyone should listen to his advice?
Honestly folks why are you taking advice from Joel.
I am sure he is a bright and nice guy but let's face it who is he to give you advice? He runs a small company making two (count them TWO) niche products. I am sure he makes decent living and maybe his programmers get paid a little more then the average but come on now is this your idea of a success story?
Take advice from the guy who runs GE or IBM. Take advice from Ted Turner or Donal Trump who built empires out of nothing. Take advice from Ghandi who led an entire country into freedom. Take advice from Jefferson, or Lincoln, or even Jesus or Budha.
Take advice from Joel? Why?
evil is as evil does
It's always the people. People suck - even those programmers have to deal with.
I think Joel has a great article for those who are considering computer science as their major (myself included). However I disagree with the statement on non-programming jobs. While folding shirts at the local mall might be worthless experience, there are some jobs out there (when programming isn't available) that will give students ideas and foresight into different fields where computer science is of use.
My current position in emergency communications gives me plenty of experience using various computer records management, databases, and research software usage, giving me recorded experience in use of different software packages. While some companies may not find this useful, those who develop this software (namely the FBI) might find this experience useful.
Another reason for working is always having necessary funds available. A lot of jobs out there will pay for a students college degree so long as there are positions for that type of degree.
Many cities and metro areas do have jobs available, with great educational benefits. And while you may think its hard to work full-time and go to school (it is), your resume will look as good to companies. Who knows, maybe the company you start out as a mail clerk will promote you up to research and development.
Regarding Education:
How can it be overrated if the majority says it is worthless?
Are you comparing the actual results against the claims made by college recruiters? Do you hold all marketing claims to the same criteria?
Ok, the rest of this is serious...
Regarding Programming:
Yes, you can program quite well without a college degree. And once you have experience, few(er) employers will care that you have one or not.
Even most successful programmers with degrees learned most of their programming outside of school. Part of this is because most successful programmers have an interest in programming, and perhaps didn't wait until college to learn programming, or were first exposed to programming in college and then developed a thirst for it.
I have worked with a number of programmers with and without degrees (and the degrees varied wildly in discipline), and have personally found that formal education, years of experience, etc. are all bad indicators of how good a programmer will be. If you haven't, read Peopleware. The authors actually conducted a study (as opposed to my heresay, or worse, authors like Yourdon who make claims based on personal observation as if they were based on extensive objective research) on programmer productivity and basically determined that the best indicator of a programmer's capability is to measure the capabilities of a coworker. All the other factors seem to have no correllation with performance. Good people work together. Of course, that isn't the criteria used by all HR people, it just happens to be the criteria supported by empirical research.
Back to education:
Now, that said, depending on the metric you use to measure success determines whether or not a college education is valuable. Certainly if you are happy with programming and have the experience to stay employed, then you should just be happy with being happy. If you desire advancement in the corporate hierarchy, then college might help for the value of the paper (but then again, certification programs might be a better value for you). If you value education for the sake of education, then college will be valuable for you, and it will be more valuable than alternatives.
There are a few times when education for the paper still causes college to be a worthwhile investment. Government contractors have their rates audited. They have to justify pay. For companies like this (and other large companies that aren't contractors), they may have a formula for determining pay. In that case, the formula may weigh a college degree as 3 years of experience. If the company will pay for you to go to school, then you can get a degree in 5 years while working and net a pay increase equal to 8 years of experience (3 for the paper, 5 for actual experience). But I would argue that the actual education you get from that is only worth whatever interest it provides you (the rest of the value is in the paper degree, not the education).
Cheers, and as long as you recognize the importance of communication and inter-personal skills, then you should be fine as a professional programmer for quite some time.
Network Security: It always comes down to a big guy with a gun.
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.
I think this Joel guy gets far more coverage from Slashdot than he deserves (It's not his first story covered by /.).
:)
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
perception is reality
With respect to cheating: If somebody cheats in school, they are going to cheat in other aspects of their lives. That is a reflection on their character makeup and not on the failings of a school.
While in school, I partially funded my studies by writing distinct (in logic, implementation and coding style, down to variances in the bugs) implementations of various assigned projects for sale to fellow students. I was never caught during my four years there -- and have been an entirely upstanding citizen in the years since I left.
I'm not blaming the environment, per se -- but your claim (that those who cheat inside school will necessarily cheat outside of it) is not necessarily accurate.
It's interesting to note that many highly successful people (defined in the US as those with the most money and more toys) cheat at some point in their lives, and probably still do.
David Geffen, a billionaire who made his fortune in the music business and now is co-owner of Dreamworks lied about having a UCLA degree to get his foot in the door.
If you read the history of most successful people, they don't typically finish college. Most have a excellent bullshit-detector as well. It's a requirement since they are all in business. So I can only conclude that they could smell the BS in college and knew it would be better if they got out.
The fact that David Geffen now donates money to UCLA, which has the effect of them naming buildings after him is simply amazing and proves once again that the only thing that matters today is money. Same with Bill Gates and Stanford. How one can even begin to respect these top institutions is beyond me. In light of that, what does that say about the less-than-top-brass universities and colleges? It sure doesn't help them out, when the top dogs aren't aware or simply do not care about their own ethical dilemmas.
I took a class in C last year, got 598/600 points on my labs and projects(forgot to put my division/section on the first one, minus 2 points), but only managed to get B's on the exams. I got a B in the class because I didn't think inside the box enough to do well on multiple choice exams for problems.
The Econ classes required for School of Technology majors at Purdue is micro and macro. Those two classes are the only thing my dad has expressed any interest to know what I'm doing at school, he's a commercial banker for small businesses.
Also, it is farily simple to get out of English and Speech classes if you did anything worthwhile in high school.
For my History credits, I took a class about the History of Technology, from Newton till around 1900's, and class of World War II Presented through Film and Media. Useful and Useless.
You call it excessive, I call it ambitious.
I'd also agree with the microeconomics suggestion. Mind you, you need not actually waste a semester (and tuition) on a course; reading the textbook from the Econ Intro Micro class can suffice, and saves a lot of time. (Libraries will oft have reserve copies of the class text, or you may make freinds with someone in the class.) The essence boils down to the old joke: "You can make turn a parrot into a passable economist, if you can only train it to say 'Supply and Demand!' any time someone asks it a question." The trick, of course, is figuring out what things are being supplied and demanded in any transaction.
There is a point to not blowing off the boring classes. Of course, there is also merit to the complementary idea of not letting an obsession with grades get in the way of your education. If you face the choice of an easy project that will give you an easy A, or a more challenging project that you'll learn something doing but risk only getting a B- on, you should stretch yourself at least some of the time. But he's right: sluffing off just because you're bored is a bad thing.
The "Learn C" is pretty specific to CS folk; most non CS folk these days will find Java more useful. It's more true to say that you shouldn't get out of CS without having mastered at least two programming languages, and learned half a dozen others. C should be one of the one's you choose-- if nothing else, the 30 year span of it's use should be a warning that it has something. Fortran should be learned, if only because it's not that hard, and you WILL encounter the damned thing at some point. Perl, Java, Ruby... there's a whole list of languages you ought to run through the equivalent of Intro CS exercises with, and which ones are in the short list would ptobably have a dozen or so that people would argue over. But C would be on almost everyone's list.
For the last three... yeah, they're pretty specific.
//Information does not want to be free; it wants to breed.
The things I most miss from college are the freedom to do whatever I wanted (too tired/lazy today? Spend the morning playing brisca and truco in the cafeteria? Ok) and learning to accept the consequences of your acts (spent TOO MANY mornings playing brisca/truco? Enjoy trying to save a whole semester at finals time!). I miss soaking up some sunrays, eating a hot dog from the cafeteria that probably would set off a geiger counter, watching a babyfutbol match. Going to classes with professors that loved their job and had a passion for what they were teaching. The satisfaction of a good grade on a difficult test. Shooting the bull with your mates over cigarrettes and beers. Frantic overnight sessions at the computer labs to finish some assignment.
Nowadays, at work the satisfactions are great, the feeling of the design being born in your head is a great rush, and a "well done!" from a difficult client rocks, (and the money is good too :) but the freedom is scarce.
Joel seems to have discarded graduate degrees on the basis of a very small sample of courses -- one. I don't like dynamic logic any more than Joel does. I don't like lambda calculus either. And I wouldn't even consider writing anything in Haskell. I have, however, almost finished (my thesis defence is in three weeks) my D.Phil. at Oxford University in Computer Science.
Guess what -- there's more to computer science than dynamic logic, lambda calculus, and Haskell. I spent my time working on algorithms: First parallel computing, then I got distracted and ended up writing my thesis about a new algorithm for matching with mismatches, delta compression of executable code, ``universal'' delta compression (You have file X, someone else has file Y. You can't talk to them. Given the constraint that Y is "similar" to X, first build a patch P; then given P and Y, compute X.), and a rapid string similarity metric. Four new and interesting algorithms; no lambda calculus needed.
You should never discard a field because it contains some material you don't like. As you move to more advanced study, you become increasingly specialized, and you can easily avoid the topics which don't interest you.
Tarsnap: Online backups for the truly paranoid
> 4.0 = uptight asshole or passionless droid
A-team hire A-team.
B-team hire C-team.
I must admit to being rather surprised whenever I see comments like "PhD's dont know nothin" (sic), or a recent post saying "I hate college" with poor grammar and spelling. Responses to it basically stated that a college degree was worthless.
I agree. I think a large number of folks would benefit from the English classes so they could communicate better and thus secure more favorable employment if they so desire. Many would also benefit from the astronomy class that would clearly show that they are NOT the center of the universe.
The article really does describe what hiring managers look for because it is what they did themselves. Time and time again, I look back at what I learned in college, and when I've hired engineers. It's EXACTLY what I look for when hiring. The only thing I don't completely agree is the whole C argument. C is fine, but its just another language. For you to really understand what a programming language does, take a compiler course. Now you will know what the computer does to your language, and what the assembly looks like. Who cares if its C, C++, Java, C#, Scheme, LISP, ADA, or FORTRAN if you know that semantically, they all eventually get down to the same low level assembly, and theoretically, are equally as powerful? Languages are different though, as the constructs on top of them make it more useful in certain applications than others (so let's not get into a non-theoretical argument of how powerful a language is). The other suggestion that I'd recommend is to take an operating systems course where you actually write a scheduler, memory manager, etc. That foundation will allow you understand the fundamentals of an operating system and help you extrapolate out to what modern operating systems do, and how the affect your systems as a whole. Also, it is possible, and probable that you could get a software engineering job without many of the things that Joel espouses, but to be honest, the best overall engineers (business decisions as well as technical), do most of what Joel writes about in his article.
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.
In my experience, most of them are more than happy to assist their students in getting involved, especially if your area of interest overlaps with theirs.
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.
Grade Inflation. I went to a small private college. A 'C' in differential equations is a lot harder to manage when there are only 16 people in the class. Beleive me, I know. I now teach at a major US university and all you have to do is show up and you get a 'C' in most of our intro to 300 level courses by virtue of the enormous n. You just can't curve grades down. You can make the course work more difficult, but this leads to a new spectre in America: lawsuits. I was sued for giving an F to a student who patently deserved it. The university settled with a D. The student made a 16 out of 100 on the final. Class average was an 82. I now have a judicial proceeding in my file (regardless of outcome or circumstance) because I created a fair test and graded it so.
Comparing it to Windows will be a moot point, since El Dorado is going to have a 40% larger code base than XP.
School is a place to learn. But also a place to make life long friends, form a social netowrk that can be used later to refer potential employees or be referred to become a potential employee. Also it is a place where our culture spends a good amount of time in.
It is a time where people discover themselves and a time where those who have already discovered themselves become something more because of their acadmeic pursuits or other pursuits.
Yes, all in all most of us as individuals do not need this system to learn something. But we do need to meet people, socialize, and talk amongst people who do have similar interests. And a place where that can happen is college.
Yes, it can be a horrible experience. But you must do what is necessary to make it the benefit you. Because if you do not, then you will be wasting a lot of time, money and your future.
Yes, school is not right for some people. Some people are better in reality right away and dealing with practicality and the complexity of real life happening before even going to school. School was not neccessarily made to prepare people for the real world, but it is a good buffer, and if you can make it through a hard school, it is like climbing a huge mountain, you have accomplished alot. If you goto an easy school with no challenge, please consider something that can challenge you more in life.
IIRC this is the second JOS post on /. in as many months. I certainly realize that we get a number of articles containing the same cast of characters, however i dont recall seeing them close enough to trigger my short term FPP memory.
I guess im just worried about a joel otaku.
^_^ Honestly, I think self-learners are awesome. My older brother will sit down and learn a computer language just because he feels like it, usually doing so by developing some computer game he's interested in. I have a friend who taught himself to play a guitar by picking it up and plucking at the strings until he figured out the chords. I wish I could do that kind of thing, but I really don't have the self-drive to do so. Most of what I know is either due to inherent ability (music), rote training (grammar and spelling), or a combination thereof (mathematics and computers). I have grand ideas, but I don't follow through on them unless poked and prodded. I think there's room for both types in this world. And yes, I think there's a balance there. Self-learning people tend to learn to do what interests them and may get bored when faced with having to learn or do something they're not interested in. Those of us who need to be formally taught have often learned to learn even when we don't particularly want to. Both kinds of people are needed in this world. As to why college education is considered so important for jobs, my personal opinion is that a lot of it has to do with the easy hiring metric (Someone with a Bachelor's has theoretically reached a certain threshold of knowledge and testing) and partly because the people hiring had to pay out to get a degree so by golly their employees will have to pay their dues too. *shrug* And honestly, graduating within 4 years of college with a decent GPA does show some degree of perserverence and ability to put one's mind to a task.
This sig has absolutely no significance and serves only to take up screen space and waste the time of the reader.
We should not be teaching our children that languages "evolve."
Languages are intelligently designed!
King Luca!
This sig has absolutely no significance and serves only to take up screen space and waste the time of the reader.
good article.
I am a recent grad who was lucky enough to join a large company and develop enterprise level software infrastructures. I too worked for two years while in school and got good grades. I started coding in grade 9, and never stopped since. My school had an excellent software development program which focused on unix, linux and windows.
these things were the shoe in for my job. every employeer I went to for an interview was thrilled to see these things on my resume.
But beware ! this is just the beginning. You must be prepare to take a test in coding... yup every single employeer wanted you to complete a test that day with in 20 min. They are not too complicated, but it weeds out the non coders applying for a coding job. (yup people actually apply to C++ jobs even if they can only code in VB.)
^_^ I thought I was an outcast for most of high school, shunned by the social caste and generally not well thought of. I was proud of it, aloof even. You can imagine what a blow to my self-image it was when I found out my senior year that most of the popular people actually liked me and thought of me as a friend... nobody they'd invite to a party, but then again, I wasn't really into parties back then.
Then again, I had a weird graduating class... our valedictorian was also the star soccer player, a big social mover, and an all-around nice guy (he went to the seminary to become a minister, actually). From what I understand, there was an abnormal lack of castes in my school. At the very least few people were outcast except by choice. *half smile* Well, unless you were a Mansonite, a druggie, gay, or black. It was, after all, a southern high school...
This sig has absolutely no significance and serves only to take up screen space and waste the time of the reader.
google "antediluvian"?
No, I did not read the f***ing article!
You keep using that phrase. I do not think it means what you think it means.
Hello. My name is Inigo Montoya. You killed my father. Prepare to die.
joel writes:
Most people aren't so lucky. The very idea that you can "love your job" is a modern concept. Work is supposed to be something unpleasant you do to get money to do the things you actually like doing, when you're 65 and can finally retire, if you can afford it,
It is a "modern concept" only because in the past most people were not as exposed to mass media manipulation that essentially brainwashes them into this sort of plantation culture, where instead of the slavedriving foreman lashing us with whips, we get hit with mass media propaganda, which speads the "love your work" nonsense.
I guess all the programmers over in Europe with their 1500 work years, and the 25-40 hr week and 5 weeks vacation, they must just love their work less. How unfortunate for them. To miss out on all that "love".....
It wouldn;t have anything to do with the fact that their welfare state takes care of them much better than ours, would it?
eat shiat and bark at the moon
Learn Hindi.
Seriously. While other people are scared of their job going to India, you'll be reducing your chance of getting Reagan's Disease, expanding your skill set, boosting your marketability, widening the range of places you can vacation on your fat paycheck, etc. Also, Indian chicks, RAWR!
Or you can keep hating on Indians, I'm sure that'll go over real well...
[o]_O
I immediately throw out all the resumes written on non-standard-sized paper, and set the ones written on funny-colored paper aside. If I can't find the guy/gal I need in the regular-colored paper, I might look at the funny-colored ones, if I have time. But probably not.
If you think you need a gimmick to make your resume look special, you don't want to work here.
If you had attempted to take classes while you believed that the degree wasn't worth anything, you would have slacked off, and possibly have subconciously attempted to prove yourself right.
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 had gone straight to college, he probably would have spent all of his time partying, and have failed most of his classes.
Build it, and they will come^Hplain.
I've attached an essay that I wrote for my freshman comp class years ago about that exact topic. Please excuse the bad formatting, as this is just a copy-paste job out of a word document. Please pardon the title as well. The All your base... thing was making the rounds when that was written.
:-)
:::bangs his head on the computer screen:::...Sorry, everyone on my buddy list decided to im me...But I know what ya mean, I just got a new job and have been $$$ much betta (http://www.canexdomain.com/views.html)
Oh, and by the way, I even managed to work in a quote from schoolsucks.com!
And I swear upon all that is holy that if I find that someone plagiarized any part of this work, I will descend upon that person like the vengeful bastard that I am, and make their years in academia a living hell, up to and including getting them suspended or expelled from their institution of study. With that said, enjoy the essay!
*snip*
M.C.H.
English xxxx.xxx
Dr. xxxxxxx
5 March 2001
All Your Grades Are Belong to Us
Many people are familiar with the instant messaging phenomenon that swept through America in the last two years. The instant message technology that has popularized AOL and MSN is only the latest of new communications devices that the World Wide Web has made possible. Programs like America Online's Instant Messenger have brought Internet messaging services to millions of users. Use of these services, however, is adversely affecting communications in our culture outside of the digital medium of the World Wide Web.
Online grammar, by its very nature, attempts to emulate spoken grammar. In both spoken and virtual format, people tend to focus more on the message delivered, totally disregarding grammatical rules as long as the writer's meaning is conveyed. According to Lance Eaton, the webmaster of www.canexdomain.com, this has lead to a new dialect of the English language. An example of this dialect in action:
USER-1: what's ^?
USER-2: nuttin. u?
USER-1: i just got in from the movies...
USER-2: o.i.c.
USER-2: i ain't seen it yet, Cause i ain't got no $$$...J...so whatcha been up to, side that?
USER-1: BRB!!!
USER-1:
Phrases, such as "BRB," shorthand for "Be Right Back," are common. The writer also makes structural errors, such as the improper use of the ellipse character to denote a pause in his thoughts. Compare the above conversation with the following example:
"We know little about the man called Shakespeare, Did he really write
the plays, or is he just a man that got confused within history? (Sobran 44) There is not even a correct spelling of this mans name, Some of the spellings include Shakspere, Shakespeare, And Shaxpere. Shakespeare, Is it the man, Or is it another?" (http://www.schoolsucks.com)
This text sample is the introductory paragraph from an essay picked at random from the "Worldwide Homework" section of Schoolsucks.com, written by a student of unknown age. It is strikingly similar to the "instant message" example above. Both writers have used random capitalization and broken spelling, and disregarded almost all rules of punctuation. The writer of the above essay also did not know how to cite properly a source in MLA format.
Different societies have different means for handling this issue. For example, the French government, in an effort to maintain the solidarity of its language, has decreed that the word "e-mail" be replaced by "courrier electronique" (electronic letter), while a start-up company should become known as a "jeune pousse" (young plant). The United States, however, will not take such bold steps to protect its national language. Here, the problem is not so much one of adaptation (or lack thereof), as it is one of viral growth.
The American solution to the issue is simply to assimilate such changes into mainstream life. If a word processor user, for example, types a colon and a right-parenthesis, resembling a smiling face as show
.... dumbass :-P
IANAL but write like a drunk one.
My recommendation in regard to the non-CS core classes with a math foundation is to get a broad exposure to them
I would go a step further and say that you should take elective courses that may not even have a math foundation. Take a humanities course or two (sociology, history, philosophy, anthropology, etc.). Computer-savvy types are sometimes a breed apart from the folks who actually end up using their software, and taking courses to learn about people instead of math and machines for a change will help you identify with other perspectives better. If you want to go beyond being a code-monkey (ie. someone who doesn't have to "worry about India") you'll need those skills.
I also highly recommend taking a business, management or marketing course or two. You're boss is certainly going to have background in that area. I also agree with Joel on another point: Taking an English course is mandatory for success.
I know that CS and engineering school workloads can be harsh and it is hard to fit those sort of courses in but I ended up being able to take more than required by taking a couple night courses during work terms.
One last point about courses to take. I disagree with Joel on a minor point: You should take a course that involves assembly language in preference to a C course (or maybe in addition to it)--typically an EE/CE Microprocessor Systems Design. THAT is the way to truly program close to the system. If you have a solid grasp of the low-level behaviour of a computer then some of that can rub off in your high-level programming work--sometimes even in a language like Java there are benefits to approaching a problem as a state machine for example. I think that a lot of bloat and resource consumption comes from coders who do not have a grasp of these concepts.
Other advice:
Co-op and internship programs make you more employable than an excellent GPA will by itself.
One you have a GPA above 3.0 it is less of a factor for employment. After 5 years experience your GPA will be almost meaningless anyways.
If you want to stand out don't just do what is required or you think you'd be good at. Be different, and actually take some courses purely out of personal interest. I think I was the only EE in my class to take two Canadian History courses for example. Those sort of things get noticed when your first job applications include transcripts.
Keep learning new things even after graduation, whether it be something like MCSE or RHCE, or community college courses on running your own business and so on. Not all the time of course--maybe just one thing a year, just to keep your brain in gear.
If you want to keep your tech job and not worry about India, you won't do it by just being a programmer--you'll have to get into high-level design, research or management roles. Simply coding to specifications is becoming the future "assembly line" job and you have to accept that. Beyond entry-level positions it is probably going to be outsourced or temporaray contract work in a lot of cases.
More specifically, I still love working as a programmer/analyst where I can do everything from collaborative design work to writing and debugging code to supporting the live application when it's "done" and running in production. Even writing documentation can be fun ... sometimes.
There isn't quite as much design work at this job as there was at my last, but that's the nature of multi-vendor software work when you're using someone else's interface specs much of the time.
The fact that I can create things and put them out there on a corporate system for thousands of people to use (and sometimes even depend on) still fascinates me, though. It still makes me happy to finish a project, still makes me a little nervous to cut something over on a live system for the first time, and still feels VERY SATISFYING when I finally find and **SQUASH** the damned bug that's been making my code look bad over the past couple of days... Grumble, grumble.
If you love programming, don't worry. While I suppose there are boring positions out there where little independent thought is needed, it's been my experience that there are a lot of better ones as well. And if the work is boring, find a way to channel your energies into side projects that aren't so boring. There's always something interesting that needs to be worked on...
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.
> classes that are written entirely in txt msg spk that U or I do ! understnd.
That's not text message speak, you fool; it's encryption!
The anti-slashdotism here on Slashdot is extraordinary. I must admit to being rather surprised whenever I see comments like "slashbots don't know nothin" or a recent post ...I hate slashdot with excellent spelling and descent grammar. Responses to them are generally stated that slashdot is worthless.
Amazing.
GENERATION 26: The first time you see this, copy it into your sig on any forum and add 1 to the generation.
I heartily advise that CS majors also take at least a few courses in neuroscience and psychology. Programming is all well and good, but there's nothing quite as exciting as understanding the computer in your own head. Psych courses come in handy when it comes to dealing with other people and understanding yourself. There's also plenty of exciting opportunities in neuroscience and cognitive science for computer models of brain systems.
you must not be RONALD REAGAN or GEORGE BUSH SENIOR!
.50 armor-piercing sniper rifles have disappeared from that thar Intarwebs.
It's amazing how all the references to the US supplying Osama Bin Laden with Barret
He has 8 good points, but along with the supporting arguments, there is biased rhetoric which as no use.
High GPA comes to mind; High GPA is hardly EVER relevant. What is relevant is what classes you did take, and if you did pass the course or not.
I often think of people with a 4.0 grade point average, and wonder if there is any thinking they can do for themselves aside from obeying orders.
Not only will you get, er, "more well-rounded" just by TRYING to impress/understand/exploit the opposite sex (pick your method) but let's face it, if you can't get laid in college you probably can't get laid at all. Take your best shot while it's available.
Instead of listening to Joel, whoever he is that admits "I'm so hopelessly out of date that I can't really figure out AIM", here's some better advice from young programmers. 1. Don't go into programming. You cannot compete with off shore programmers. 2. If you are dumb enough to do anyway, always get jobs at the top notch companies, ie Fortune 100. 3. Who you work for is more important that what you do. 4. Worry about your career early on and don't just think that doing a good job is all there is. 5. Work on your own product and company along the way so you can leave the rat race behind. 6. Never stop learning. 7. Learn about selling and marketing. 8. Always think 80/20. 9. Don't confuse urgent issues with important issues. 10. Always use feedback to improve your thinking and actions. If you're still programming at 45, you screwed up big time along the way. :-)
-Nazz
I just went through a lengthy layoff myself, but as you say, if there's something you love to do, it's gonna take a lot more than a couple of years without a decent paycheck to keep a person from trying to do it again. :-)
:-) (I've had two so far during my career).
Whether or not you can "make a living" at it depends on a number of things, I think. Location and luck are two of them. Your standard of living might be another. I bought a house almost exactly a year before I was laid off and got married over a year AFTER I was laid off, and yet I still own a house and am happily married, so those two things are possible even while being an *unemployed* programmer. Just a little more challenging at times, that's all.
I also think both having a dream job and living the proverbial American Dream is possible, but it isn't necessarily going to come to you on a silver platter.
I had my dream job and I lost it, but I found another one after almost three years which comes damn close to what I had before. Some things are worse, some better. I had to move across the country away from family, etc. But I'm still writing code, still able to support my PC-fiddling and DVD-watching habits, and still living with a wonderful woman.
Hopefully I'll have a few years here so I can recover and prepate myself for the next layoff.
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.
The article is full of common sense; and he's right about India. If you are just a programmer, you are not adding much value to your company; if you are a developer, it is highly unlikely that you will be seeing your job head off to India.
I live in New Zealand which is hardly the centre of the developmental universe. Here in Christchurch we have a thriving electronics industry working on radio communications (Tait Electronics), ethernet switching (Allied Telesyn), innovative laboratory instruments (Syft Technologies), navigation (Trimble and Navman); that means a lot of room for developers. We tend to create products here, but manufacture offshore. Only Tait Electronics manufactures here in Christchurch. Everyone else uses a contract-manufacturer, here or overseas.
Having said that, it's a small market so don't expect to skip from one job to the next. This place got hit by the last economic downturn just like everyone else. It took me two months to find my current job after my last redundancy. Even though my previous position was made redundant, that position did not got to India; the company refocused it's business on hardware instead of consultancy. You need to be a certain size to do consultancy/services and we weren't that big. You can be a lot smaller if you generate your own IP.
Also, I'm not sure that doing a CS is the right way to get into software. Yes, you will get a wonderfully structured introduction to CS theory but you might find the introduction a bit academic withoput sufficient grounding in reality. Frankly, the people I have had trouble working with since I sterted full time employment back in 1989 have had CS backgrounds. The people that I've always got on with started out as engineers, physical scientists or mathematicians. I started out as a Natural Philosopher (i.e. physicist) before being seduced by the computer and, in particular, by the embedded side of things.
Mind you, I am a practical person. I don't find much beauty in abstract theories and multiple layers of abstraction. Perhaps this is why I find CS people a bit hard to work with. Also, the embedded world is full of real-world things that require controlling. I find this fun. I do not find the innards of an enterprise level web server to be as attractive to me.
Joel seems to be having fun making products that people want. That seems fairly meaningful to me, and is a lot more than a lot of people achieve.
I'd prefer something like this:
:-)
CALL BLKTRA(INBUF,OUTBUF,NUMCH)
but I'm an old Fortran fogey.
The routine above invokes the BT (Block Transfer) instruction on the mainframe its compiled on, BTW, which is optimized for mass storage buffer transfers and is *lightning* fast...
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.
There are many folks who have education up the wazoo and not a lick of common sense. These folks are often a blight on any job that requires troubleshooting.
There are many folks who have sharp minds, but not a lick of education (So sharp but empty minds). These people are a blight on any job that involves responsibility. You will find MANY of those people here on Slashdot.
And the 2 groups are critical of each other and blame each other for why they can't get a good job.
The folks who have both don't need anyone to blame, so they don't make quite as much noise.
(If at first you don't succeed, do it different next time!)
and why should I give a rats ass about what he thinks I should do?
Here Joel, this is for you: work out at least five times a week, don't eat french fries, and read the classics, especially Shakespeare. Don't forget to stay abreast of current events. Do all this and you'll thank me later.
....as they climbed into their planes: "I am just glad I have a chance to give my life for my country. I just love my work."
And that same dynamic has played itself out down through the years as people did stupid things at the behest of those at the top of the social hierarchy. The young men running headlong into a hail of enemy bullets at places like Gallipoli, and hundreds of other foreign fields.....
And if you said to them that they were crazy, they would either look at you like YOU were crazy, or else denounce you as a traitor.
eat shiat and bark at the moon
First off, several people have made comments about how structured education is a bad thing and there's nothing in it you couldn't learn from a book. As much as I'd like to agree with these people at times, it seems to me that this is not entirely true. Although I do not enjoy high school, it has taught me some things that I actually have an interest in but would usually not be capable of starting on my own. C++ for instance. However, I feel that the structure of my school detracts from the learning experience. I get 4 hours of homework a night, with projects as well, and have very little interest in any of this work. I get home at 5:00, so it is 9:00 when I am done (on a good night), which leaves me 3 hours per night to pursue my interests (I do the projects all weekend), depending on how long I can hold out (and how much coffee I have). This has left me devoid of all energy, and seems to be bringing my grades down as well. This leads to a lack of faith in myself and a feeling of emptiness, as if the whole world is better and more capable of acomplishing things than I am. I am left feeling that I have learned nothing.
If any of you have had an experience like this, than I am not sure how you can be so energetic while naming the "merits" of public school. Maybe this is just a high school thing, but I have only 3 teachers out of 9 who don't avoid me or give curt, unhelpful answers whe n I ask questions.
Perhaps this is not true of many of the teachers at many Colleges, but it has left my self confidence and will to learn decimated.
I am not disagreeing that GPA is not important, because frankly many people in HR or who make hiring decisions are not properly trained to do so and will throw out a non-4.0 resume haphazardly. Of course, good self-marketing skills are more important if you can get past these people by making good contacts elsewhere in the company, because that will ultimately get you a job.
However, I must say that this is not the end-all decision maker. For instance:
-------
(long, boring account of my getting around the GPA issue. You can skip this)
When I was an undergraduate, my GPA was not spectacular. It was not bad, and was certainly within the B range, but it was not a 4.0, which many people seem to hold as the determining value of whether someone will be a spectacular student/employee. However, during my undergraduate work, I carried two engineering majors (Mechanical Engineering and Electrical Engineering), and graduated with my EE degree a semester early--and would have graduated a year early were it not for administration issues. In this time, I did research in a myriad of areas, including designing a hybrid electric vehicle, working on artificial vision for the blind, autonomous robotics, electro-optics, and VoIP. I also worked as an intern at a local defense contractor. Frankly, when I interviewed for the defense contractor, they asked for my unofficial transcript within my packet. I sent them a list of all of the courses I had taken, grades and GPA omitted. That GPA-minded company, in starting from the front of my packet and working backward to the transcript, probably forgot about my GPA completely. A few interviewers asked, but it was after packet-review. When they asked why I should be hired over all of the people outside, I asserted that they might be 4.0 students, but they don't bring a broad, creative background to their work. If they had a problem and wanted the same, memorized solution over and over again, then hire them. But when that solution doesn't work practically and suddenly they are faced with the same solution from a room full of people, I will be the one to always bring them a plan B. I was hired over the other applicants.
Taking this work and research history to a graduate school, they admitted me...while I was still an undergrad. (So, I was both a grad and undergrad.) GPA was barely an issue. I ended up with a full ride in a very nice program because of all of the "extras." I have been admitted to grad school as a full-time student twice now, and neither time required a GRE (the GRE is typically a requirement at our university), and neither time was my undergrad GPA an issue. I now hold a 4.0 in grad school (where a lot of the 4.0 undergrads do not), and have a job lined up.
Of course, that doesn't mean that everyone within the college--especially the bean-couters--were happy about this. You have to be prepared to face some backlash when you totally throw the system out the window.
(/long, boring account of my getting around the GPA issue.)
-------
Yes, this was long, but I want people out there who are hard workers without stellar GPAs to realize that they don't have to give up. It is important, indeed. But, your college experience is what you make of it. If you pursue a lot of extra areas, have a broad educational background (as you mentioned), do internships, learn to work in team situations with people you might not fit in with or may fit in with wonderfully, build professional networks through your projects, and show yourself as a hard worker, it can indeed work out. There will always be people for whom the GPA (or GRE scores...which is fun to explain the lack of in my case) is their determining factor, but you might also keep in mind that if that is their end-all method for hiring, that the people hired might not be the hardworking and fun individuals you want to start your career alongside, and probably won't have the social networks to launch you into better careers in the future.
If you just go to college to get
*-*-*-*-*-*-*-*
"We are Linux. Resistance is measured in Ohms."
It's much more likely that s and t are two arbitrarily-chosen, contiguous letters, in the same vein as x and y, u and v, p and q, etc.
:P
Perhaps s for 'string' and t for 'the next string'.
"Ask me about Loom"
Teach Yourself Programming in 10 years by Peter Norvig has always been the all time favorite. I think every budding programming to read it.
-http://uthcode.sarovar.org
Senthil
I interview a lot of job candidates. I think Joel's advice is good -- very good -- but it isn't all there. That is: Blow off the CS, or rather, don't major in CS.
If you want to get a technical degree, don't go to a real college. Go to a trade school masquerading as one. In Chicago, we have DeVry, IIT, and to some extent (depending on your program) DePaul.
But I don't advise that really. Go to a real college with a real collegiate program, major in physical sciences, social sciences, the humanities, or math COMBINED with a bunch of electives in the other disciplines and you'll learn something CS doesn't typically teach you: To have a broad base of knowledge about the world that your computing can connect to.
He's right: Take C, if you want to do hard-core programming. I'd go further -- take (in order) Java, then C, then assembler. Don't let them make you take COBOL!!! (DePaul was doing that for a while, as was DeVry.)
And take a data structures class, if one of those above wasn't coupled with one.
If taking classes in compilers, operating systems, AI, etc. is important to you, consider doing it as a master's degree. Go to those tech schools, if you need to. Also, you can generally sit-in on all those classes in college, while doing your real work in sciences and liberal arts. Do any of the work you feel like and get the basic ideas, so that you can read all about it, or take a master's program class in it if you love it.
But use college (which is often much more expensive than those tech schools) for what it's been designed to do for over the past 700 or so years: let it turn you into a thinking, logical, well-rounded person.
That's not to say you shouldn't be doing computer stuff in college. But if you work on free software projects in school, you'll learn what the other guys learned in class, and you'll have killer resume line-items after graduation. As in: "Worked on open source project froboz 3.1 to 3.4 as part of a team -- coded parts of bad block collection, memory coalescing, garbage collection, blah, blah, blah."
GPA means a lot. Experience means much more. But projects!?!? Man, can you get your foot in the door with projects! If it's something I as an employer actually use? And lo, I find your name in the docs? You're hired, big fella.
I'm surprised that Joel recommends choosing the courses that are based on programming, rather than mathematics. He goes to great lengths to mock some logic course he took and on that basis dismisses the whole of academic computer science. If you love computers, you probably spend too much of your free time hacking already, so why waste your years at university doing the same thing? Take the opportunity to learn some of the interesting stuff: especially you need to know about computability and complexity. The mathematician lecturers will expect you to work hard and pay attention, but much better that than being harangued about Java class hierarchies.
That said, if there are courses which involve interesting work on operating systems, writing a toy compiler or whatever, by all means take them. Just stay away from anything too trendy or too 'relevant'; you can learn that stuff by yourself.
-- Ed Avis ed@membled.com
You can get that kind of a deal today working in the public sector. I used to have a job at a Big Ten school. Work week was 8:30-4:30 M-F (35 hrs a week) with no pager or oncall or off hours work expected. Got 2 days of vacation per month, plus 1.5 days of sick leave per month. Plus 10 standard days off each year. If you get sick (or play hooky) enough, this comes to under 1500 hours per year, if you converted the sick leave to vacation at a 3:1 basis as was allowed you had 30 days off each year, 1540 hours per year.
In general, I approve of Joel's recommendations in this essay. That said, I would make a couple of additions:
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
At my school those on top academically were the best time managers (this was the most positive correlation), most talented, genuinely intrigued by solving the problems. They were also the ones playing tennis with their girfriends while the grinders tried to figure out thier assigmnets.
The middle of the pack was where most of the assigment copying happened. Where most of the real uber geeks with no social skills were. Where most of the bitterness lives (excuses...).
It was a small school I new every CS student in my year. I would hire any of the top 5 academically without hesitation. I would have to wade very, very carefully in the mid pack.
The parent to this sounds like it was written by some bitter mid packer who never actually knew any top students.
My generalization would be going for the top and I believe it would pay off. That is not to say you wouldn't miss gems, but they are exceptions in my opinion.
One of the best software designers I have ever worked with had only passing grades in school. But he did most of his University part time while working full time.
To me though the most important thing is the interview. You are going to get a stack a resumes that meet your requirements most likely. It boggles my mind that we continue to hire people that can't verbally communicate at all.
Good friendships, yes. Jobs? Not likely. My (UK) undergraduate degree was in maths, followed by a conversion to CS as a postgrad diploma (which basically means stuffing about 2/3 of an undergrad CS degree into an extended year). I've worked in a range of jobs involving software development, but my academic background has been both helpful in getting those jobs and useful while doing every one of them.
On the whole, I thought the article contained very good advice. That's particularly true of the suggestions about learning to speak English and getting relevant summer jobs, though the advice about programming/CS specifics wasn't bad either.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
Although C is becoming increasingly rare, it is still the lingua franca of working programmers.
:)
I had to wait three years before the C/C++ course was being offered at my local community college for the upcoming Spring semester. I pointed out to the dean that no one could graduate with a certificate or associate degree since this course was not being offered. I got the dean to substitute that class with the Java Intro class I took to get the certificate, and the dean updated the requirements that you could take C/C++ or Java.
Fortunately, it's being taught by the Linux Guru (who's the department chairman, BTW) and using OSS instead of Microsoft. Unfortunately, it's also being taught on the same night that a J2EE course is being offered. It's so hard being a Java programmer.
Are we talking about people who both have an interest in programming and academic background to match, but one has been travelling for a few months while the other did a software development internship? If so, I think that's a very hard choice to make.
As is often observed, someone keen and with aptitude will learn the contemporary tools of the trade in today's IT world very fast. Joel himself mentions interns learning two or three "buzzword skills" in a single summer, for example. This is certainly valuable experience, and will give you a good start in your first real job. Still, while not all programming languages are equal (whatever some people might say) it's going to take more than a 2-3 month internship to put you a worthwhile distance ahead of a talented field in the medium-long term. You'll start ahead of the curve, but the curve will still be the same.
On the other hand, the people skills, independent thinking, planning and organisational skills, and extra maturity that you develop on an extended trip to foreign parts will be with you for life. Looking at the difference a gap year abroad (or a year abroad as part of a language degree) has made to those of my friends who took it, and comparing it with the benefits some other friends and I got out of "relevant" work experience, I'm absolutely sure with hindsight that those who went abroad got more out of it in the medium-long term. The only question is whether the short-term benefits of "hitting the ground running" in your first job post-university will be adequate compensation, and personally, I doubt it.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
>> High GPA is not a guarantee of strong performance in the "real world."
I didn't say it was a guarantee, or the only facotr I'd use in selecting employees. I said it was an indication of someone who was competitive and could succeed, even if that success came about because they cheated like hell, slept with their teachers, "played the grade game" by taking the easiest possible classes, etc., etc. The "real world" rewards more than just the ability to score high on tests.
So, if I was looking for a software developer, I'd likely tend to give more weight to a candidate with a 3.0 and a degree in computer science than I would a candidate with a 3.9 and a degree in veterinary science. But, that, alone, would not guarantee I'd hire the 3.0 or reject the 3.9.
And, for what it is worth, the only time I've actually ever noticed GPA's is when I was reading through a stack of resumes trying to decide who to interview. I typically had a limit on how many to call in for an interview, so I used GPA, along with other factors, to rank and stack the resumes. So, yes, it was important at that stage, but not later. Once I met an applicant, they were on there own.
-- Slashdot: When Public Access TV Says "No"
What happens when the string isn't properly null terminated? How about if the buffer overflows? Arrogant assholes like you work at Microsoft, which is why they have so many bugs.
Um, userContent.css.
What part of "gestalt" don't you understand?
Joel's article is fabulous advice for new or soon-to-be CS majors. In particular:
1) Pay attention to your writing and public speaking skills. Even if you're not headed for a career in a big corporation these skills are _invaluable_.
2) I whole-heartedly agree with the suggestion for micro-economics, although I'm pretty sure that some of the concepts he mentioned, like NPV (net present value), are really probably covered in a basic finance course and not microeconomics. I'll disagree with his disparagement of linear algebra; it's a prerequisite for operations research and there are some very cool resource allocation problems that you can learn to solve in OR.
3) GET AN INTERNSHIP OR CO-OP!!!!!! A solid track record of previous employment in your field, more than anything else, is going to open doors for you after graduation. There are a lot of employers out there who'll be more than happy to have a bright motivated CS student working for them (and I don't mean fetching coffee). It also helped me because I was able to discover very early on what I _didn't_ want to be doing for 40+ hours a week and I was able to modify my course prior to graduation.
Good Luck!
Jared
There is a lot Joel doesn't know.
Sure, bug tracking software doesn't need rigorous verification, but i wouldn't fly on any airplanes that Joel wrote the software for.
does it get extremely old and tedious after awhile?
I've been asked this by friends that are very technically savvy but don't want to get fat and bored in front of a screen.
The answer for me was that it depends on whether you're willing to take risks whenever you feel it's time for a change, i.e. the problems aren't challenging anymore and you're not learning.
But generally I'd say that software development is a very people-oriented and collaboration-intensive activity. Certainly you can do solitary work, and that has a certain "midnight hacker" enjoyment quality to it, but in many team environments that's increasingly rare, especially if you perform daily integrations and builds.
And when you get very good at programming and design you can evolve into a coaching role where you spend a lot of time coordinating and helping others -- same technical challenges, but also a new set of ones, and again, a different kind of enjoyment.
-Stu
thats what i like to refer to as a good school. at least so long as you're still having to do work.
a lot of top name schools really arent all that special, they dont really encourage deep thought. they just have hard tests. and while there's something to be said for being able to pull off a gpa in that environment, there's a lot more factors when it comes to finding good coders. and you know what else, in the end, the process is no more than chinese water torture to prove yourself to the corps.
my suggestion for students? dont go to the big name schools. this might sound familiar; you were a star student, except you never studied for tests and skimped out on your homework. you've been hacking a decent part of your life. and now its time for college.
whatever you do, find a school which will encourage your creativity. big roaring top 20 programs with 2,000 kids in your class & major are not going to foster that creativity. you will be another slave to the machine, a machine designed only to seperate the wheat from the chaff. it will not be fun, and for the most part, it will not be educational. every other kid there will be just as bright as you and have half the social life to take away from studying.
your CS classes are going to be BS wherever you go. consider taking electrical engineering instead of cs, you know too much cs anyways. computer engineering is usually a very good middle ground (::raises hand, grad may 2005::).
in the end, you can present employers with your slew of groovy projects and your record for self-motivation. and you'll gain something else; a worthwhile education.
Myren
I enjoy my free time much more now that I have the means to do so than when I was a piss poor student.
I can puruse more of my real interests, travel, get to know many nice ladies, eat in the best places, etc.
Kill yourself learning when you have the chance, wasting your time "enjoying yourself" when you should be learning and studying is, IMNSVHO, a grave misallocation of a scarce resources and an example of diminishing returns.
IANAL but write like a drunk one.
I assume 4.0 is the best grade in the US, sorry but I am not familiar enough with your education system.
/. people should give that a rest, honestly.
Your assumptions are so wrong that it is not funny.
if somebody is getting some low grades it could be that they did not give a toss about that subject, then they were your derided degree 4.0 elsewhere, and they got your wet dream of 3.5. Not quite what you think you are getting.
As for clever people not having a life, I thing
IANAL but write like a drunk one.
Good proof reading requires quite a bit of time, and generally some technology, that you simply don't have for a simple forum post. If I am doing a scholarly paper that is important, here's my procedure:
/. post. I'm happy to spend the time to quickly slap something online, I'm not going to spend 3 days writing something just to ensure I don't have spelling or grammar errors. The story would be gone from view in that time anyhow.
1) Write the paper in a wordprocessor with a good spell checker, preferable Word 2003 that has been trained to my mistakes (Word learns your style and gets better at correcting you, espically for typing flubs).
2) Wait at least 12 hours, then re-read it. An immediate re-read is worthless, as I'll gloss over the mistakes since the text is still fresh in my mind.
3) Send it to someone else, preferably someone with better English skills thamn me, have them proof it, and send me the errors.
4) Integrate their fixes, then read it one last time before sending it out.
For a published work, it would be even more intense. Now, I'm sorry, but I simply can't do that for a
An even further problem is that even the first step, spellchecking, is unavailable. I got spellbound when I was told about it, greatly excited by the idea of a browser spell checker, and found it sucks. It's so bad it's worthless, because usually it can't figure out what a word should be and I end up having to go feed it to a smarter spell checker. As an example I misspelled piece as peice. Common mistake people make. piece was the fourth word it listed as a possible choice. Also another word (I don't remember what) I inverted the first two letters and it had no suggestion.
So yes, proof reading is the process to get your errors out, but the people that assume it should be done for off-the-cuff web posts are just idiots and like being pedantic because they think it makes them look smart. Along the lines of proof reading I'd also spend the time to outline the paper and think about structure of the arguemnt in an important document, not just write off the top of my head as I'm doing now.
I certianly agree that people need to work at good english, as in not using IM/l33t/retard speak, not abrevating every other word (like using U, give me a break, you is a three letter word, you can handle it). However people are overly pickey about the correctness of informal chat-type posts. Many (most?) of us can't type very well, and that alone creates many errors.
You clearly lack the skills to be reviewing CVs of other people.
Do your company and yourself a favour and either outsource or delegate this responsibility.
If you were reporting to me I would take this responsibility away from you.
When you have so many CVs you either are not narrowing the position well enough or you are lucky and are trying to fill a position for which there is an abundance of skilled people, in which case there are metholodiges and people expert at them to filter the different candidates.
IANAL but write like a drunk one.
Blah blah blah. Pontificate Pontificate Pontificate.
Students are valued based on their grades. You can be very smart, be learning all kinds of things in all kinds of fields, and it doesn't matter for shit. All anyone cares about (parents, teachers, future employers) is your grades.
To blame the students for concentrating on grades and ignoring learning is rediculous, the entire structure of our education system teaches kids from the time they are 5 that their worth is either grades, or sports. Learning is irrelivant. Experiencing life is irrelivant. Doing is irrelivant. All that matters is the rating your teachers give you (or scoring touchdowns).
So why would you expect kids to do anything but trying to take the easiest way possible to good grades?
None of that needs to involve a school, or a piece of paper to validate the money you spent on that school. Education doesn't mean paying a bording house to make boring tools blather at you for a few years. You can get an education that way, and some people need to because they learn best in that way, but you don't have to.
I didn't need to go to school to learn to program, a few books and just plain doing it is all it takes. Other people cannot do that. I didn't need to go to school to learn molecular biology, reading and being an assistant worked great. But again, some people need a formal teacher telling you what to learn and when, or they cannot learn.
Education is great, and being educated in a wide variety of things is absolutely important. It simply doesn't have to involve a school.
Having fewer characters in the source code is not "effecient". And if you ever have faith that code does something without understanding it, you need to be fired and sent straight to McD's. There's nothing as frustrating as having to take a half hour to decipher some asshats "succinct" code to find out if it actually does what the comment above it claims it does.
I want to work for Sriram Krishnan now.
Oh, and Joel? You've lost all respect I ever had for you. You sound like those imbiciles that I talked to at the last job fare.
They deserved the buzzword-language monkeys they hired out of the fare.
With all this discussion of GPA I am sure a lot of the international /.ers would like to know how it is calculated.
In Australia for each subject you get one of the following grades:
85-10 High Distinction
75-85 Distinction
65-75 Credit
50-65 Pass
45-50 Pass Conceded
0-45 Fail
At the end of the course a WAM (weighted average mark) is calculated. This involves the application of a forumla with progressively higher weighings to 2nd and 3rd year subjects and will end with a number between 0-100 (well 50-100 if you are graduation)
This only comes into play to qualify you for postgraduate study and for the conferral of an award on the degree. Eg. If you managed a WAM of over 75 your degree would end up reading Bachelor of Computer Science (with Distinction).
But I have no idea how to translate that into a GPA. There are a few sites that explain the GPA formula but not what consitutes an A-F and whether it is consistent across all colleges
This article sugests a company to intern at, but, as is the same everywhere else I look, they all require you to be in college or graduate school. It seems to be impossible to find an internship for high school students, and was wondering if anyone here may know any place(s) where I could search for high school internships.
/Not exactly on topic
//Probably too late anyway
His point, as far as I can tell, is twofold.
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 hands of a motivated man are very useful, but they don't equal the experience of learning from a trusted and qualified advisor, especially if you get to be a part of his or her research program.
The real college experience has nothing to do with being told to "shut the fuck up". Book learning is static, a college experience (by the fourth year) should be dynamic, learning the bleeding edge of things that haven't been put in the books yet. I'm sorry yours didn't turn out that way. =)
Yes, yes, yes. That's the whole point. Where you can and do go to school is not as important as knowing more than how to write a Hello World program.
Sig not available, please try again later. If the problem persists, then the submitter is an idiot.
Maybe there's a bug in your model, maybe there's a bug in your rules. It ain't so easy to get rid of bugs.
But hey having a theorem prover, a bit like having a calculator, gets you a little bit further forward.
What about the people who are doing college in India ?? Shouldnt the article be named "Joel gives college advice for programmers in the US"
(ps. who also happen to be americans for atleast two generations.)
http://heather.cs.ucdavis.edu/Archive/CMMHype.txt
m l.)
Date: Wed, 10 Mar 2004 23:22:07 -0800
From: Norm Matloff
To: Norm Matloff
Subject: false claims of quality of offshored development
To: H-1B/L-1/offshoring e-newsletter
I've been saving up some material which will thoroughly address the issue of the quality software development which is offshored to India. The Indian companies claim that their work is not only cheaper than that performed in the U.S., but it is actually of higher quality than the U.S. work.
Those claims of higher quality made by the Indian firms is highly misleading, as I've explained briefly in the past, but I've been planning a more detailed posting on the matter. The issue came up on last night's Lou Dobbs Show on CNN, which seemed to catch Dobbs by surprise. (Transcript of Dobbs at http://www.cnn.com/TRANSCRIPTS/0403//09/ldt.00.ht
GPA is a number that tells many employers only one aspect of the new hire. I am Dyslexic and currently have a GPA of 2.85, yes not 3.85. I try my best in every class. GPA does not tell you what you learned in a class. In my programming classes I have a 3.5 GPA that is because most of the exams are not multiple choice. I have to write out many concepts I am being taught or worse write out pseudo code, but other courses are not the same! For example, in psychology, which I have a minor in I hold a GPA of 2.5, currently, because most exams are multiple choices and as a dyslexic I tend to do better in exams, that focuses on concepts not pure facts. Take classes you can say even if I get a good grade or bad grade what will I get out of it? That same question made me switch from Computer Science with a Mathematics degree toward Computer Science with a Economics Degree with a minor in Psychology. Before I went to college I worked full-time as a programmer at the University of Chicago Physicians Group. After working for a year I leaned that school will help me more than work. I now only take classes I think will help develop my character as Plato had intended University life to do. Good grades are nice, but the learning experience is what you should be in school for so remember if you et a C in a class it is Average and no one in this world is Above Average as much of our society may think. The rest of Joel's words are bible read it do it if you want a nicer job. Just remember grades are just one piece of the equation. Just focus and do your best and have fun while your at it! PS THAT DOES NOT MEAN GET BAD [D,F] GRADES EITHER!
The best economics book I have come across is "Human Action" by Ludwig von Mises. The entire book is online at http://www.mises.org/humanaction.asp
If the poster was referring only to the article- its flamebait- but for aspiring programmers in general... he's got a point.
It's got Stuff, contributing to the conversation...
Someday we'll all be negroes
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, which I think is a good way to end this rant (highlights mine):
-Stu
> While in school, I partially funded my studies by writing...various ...
> assigned projects for sale to fellow students.
>
> I...have been an entirely upstanding citizen in the years since I left.
Probably because you haven't been in a situation where you were tempted to break the law for money again.
You've proved you're happy to throw aside rules and societal conventions for money; the question now is only "how much?"
For the rest of the world, having someone knowledgeable structure the information into a sensible series of steps makes learning much easier---and the time spent much more efficient---than simply hunting around the 'net, especially for complex or difficult areas such as math or algorithms.
Saying "college isn't perfect for the highly self-motivated" is no more useful than saying "college isn't perfect for those with datajacks allowing neural downloads"---neither group is all that common in real life.
> I went to class, because I was afraid of being
> murdered, if I did not conform
You're likely to find life much easier if you don't have paranoid delusions. That might---honestly---be due to a chemical imbalance, and that is perhaps the only time when chemical treatment is a good idea.
Seriously---if you truly were afraid of being murdered if you didn't go to class, you almost certainly would benefit from psychiatric evaluation and care.
Okay. Here are my thoughts on the GPA issue.
I was granted my BS in CS 3 weeks ago. I finished with a 3.3 GPA. I was the VP/P of the local ACM chapter, and I was part of a community choir and the Vice Chair of the associated board of the non-profit organization.
My course-load was not math-intensive, but it was a fairly rigorous curriculum. When given a choice, I opted for the more difficult classes. My technical electives were graduate-level courses, and I still managed to graduate only 4 and one half years out of high school. I did that while holding down a series of increasingly complex part-time jobs.
My final job this past fall was at a National Labs as an intern. I was hired with a 3.3 GPA, despite the normal requirement of a 3.5 GPA because I had impressed my (current) boss while he was giving a lecture in one of my classes in the prior spring.
Now that I am no longer eligible to be an intern, I was informed that I would be unable to continue my employment for the Labs because my GPA (unchanged) was too low. My boss would like to keep me, but the stodgy VPs will not even consider an engineer/scientist hiring package that does not include an UG degree GPA of at least 3.5. Period.
I never stressed about my GPA. My GPA always fell between a 3.0 and a 3.5. I was very consistent. I am still unable to keep this job that I enjoy. Now I know. At least I have a high quality internship on my resume, with a security clearance.
I was depressed about this for a while. But then I realized, it is not my loss. I will eventually find a great job, and apply my talents to a company that appreciates that there really is more to life that knowing how to play the academic game. School is important, but there is a GPA threshold, like Joel says, that can eliminate the inept, without discounting the value of not being a shut-in for 4 or 5 years.
Just my jaded two cents.
Cheers.
"There may be the odd genius who does great things despite this but too many others (/.ers included) never learn the humility and disciple that comes from going through a university education."
;)
Good points, however school isn't the only place to learn discipline and humility.
I always shudder now when I see advice written for graduates and career-starting people.
The advice is almost always obvious "Get a good GPA!" but never practical "if you didn't get a so-good GPA, here is how to compensate..." It is almost always written by people who were lucky in life (money, connections, looks). It is almost always not applicable to people like me.
So here is my four 2.079 Yen.
Advice for people seeking jobs out of college is like advice on losing weight. It is everywhere, it is always the same, yet people keep packaging it in different ways. If you are getting career advice from Joel, then you are not utilizing your university to it's fullest. Shame on you! What are you paying tuition for?
If you want advice about getting good jobs when you graduate, talk to your professors who teach courses in subjects you wish to pursue in your career. Ask them. And do it your freshman or sophomore year.
The only people who start asking about how important a GPA is are those who are struggling with their GPA. My advice? Get as high a GPA as you can. That's it. Enough said.
In my experience, people who are interviewing you for the job are just as likely to be dumber than you as they are to be smarter than you. Don't assume anything on their behalf. And act like an adult. When I was in boot camp, I told my mother that if we had only listened to our mothers, boot camp would be half as long. Why? Because they taught us things like stand up straight, look people in the eye, comb your hair, don't walk and eat at the same time, tuck in your shirt, etc. etc. The same applies to interviews. Sounds trivial, doesn't it? You would be amazed...
Realize that a university is a social institution, with all that that implies. Our society places certain assumptions on a diploma and the people who carry them. (Whether those assumptions are valid or not is irrelevant to your situation, but knowing what those assumptions are, is.) It cuts down on the "get to know me" process. The lower-tier school you go to, the more you have to prove yourself. The less contacts you have, the more you have to prove yourself. The less work experience you have, the more you have to prove yourself. This is not a whine or a fatal blow to your opportunities. It is a fact.
Which leads me to my last piece of advice. Depend on nobody for your success but yourself. This does not mean to burn all bridges and go it alone. Use every opportunity (people/places/thing) that you have! But always remember, in the end, you alone will get you to where you want to go. If a door slams shut, go to the next one. Never give up, never give in, and always believe in yourself. Sounds trivial, doesn't it? You would be amazed...
Every thing I know I learnt on slashdot
Sanity is the trademark of a weak mind. -- Mark Harrold
(The context being that Joel prefers to hire students who have good scores even under non-CS classes.)
The problem in this argument is straightforward: you can choose your job, but there is hardly a choice on what subjects you study. (Even if there is, you may not have been wise enough to make the right choice. Isn't experience the name we give to our mistakes?)
Really, what use is Strength of Material to me, which was part of my first year CS engineering course in India? Why should I score an 8.0 there? Even if I do, how pertinent is it to my job as a programmer?
On another thread, if I love what I am doing and chose my job for what it presented to me, why would I feel 'bored' there?
Religion is the politics of spirituality.
I see that your lack of life experience probably leads you to believe that the solution for children that cannot stand the prison called school is to drug them. Let me inform you that there are two cultures concerning "facts". At world-class universities people tend to believe in a negotiated reality in which "facts" are backed up by rational observations and arguments. Elsewhere dissenters who do not accept the official dogma tend to be tortured until they remain silent, flee, or have their lives destroyed.
When I got to a university, I had an excellent coworker, whose hobby was finding solutions to Einstein's field equations. He later became an expert witness in the "Secret of the H-bomb" case. We got along fine, even though my interests go beyond his. I am interested in developing the unified field theory that Einstein was unable to find, because the necessary mathematics had not yet been developed within his lifetime. Not being satisfied with the "leaked" nuclear weapons explanations, I chose to conceptually retroengineer the H-bomb to show that disformation was being "leaked" to hide the fact the U.S. had a vast nuclear superiority over the Soviet Union, rather the opposite "official" propaganda version.
Needless to say, neither of our interests were supported when we were public school students. My friend created a network of falsified documents, so that he could work at the university when he was underage. I, unfortunately, did not have a nearby university to which to escape. Since I was four my family have been refugees from death threats. I have had to put up personally with insults, beatings, torture, and have had to flee the use of armed force.
When I was in sixth grade my teacher destroyed a project I was working on that used an industrial standard type design rather than the design he had given. Fed up, I gave up expecting anything out of school and started to get up at 6:30 each morning to study college science and mathematics. Since I am self-educated, it is difficult to play the social game of being a physics professor. It sure beats the terror of being outside of the university environment, however.
School is what you make of it. If you have the desire to learn the institution provides you the opportunity. If you choose to cheat because you want the easy way out and just get that piece of paper, so be it. You will not fool the industry, especially as an electrical engineer. The paper will be meaningless if you cannot back it up with knowlege.
> Stop worrying about all the jobs going to India.
I have to agree with some of the things Joel says. For instance, people do worry too much about jobs going to India, etc. Every industry has it's ups and downs. Lets face it, there are a lot of worthless IT people in this country because some really good advertising exec at a prestigious tech school managed to convince some kids at McDonalds that an MSCE would make them smart and rich. Hopefully, these people will go away soon. Then things will balance out.
> Learn C before graduating
I also agree. In the 90s when the Internet exploded, the tech industry was way over rated and anyone with a heart beat got a job making web pages. People jumped on the Java bandwagon cause C and C++ were not "web friendly" and all of a sudden became too complicated and not portable enough. Yet to this day, I still haven't seen one decently functioning app written in Java. "Write once run anywhere" became "Write once debug everywhere". What a joke! I think what separates the men from the boys are concepts like pointers and memory addresses. We need to get back to the basics. Sure, C won't help you make a web page, but who cares! Aren't there enough web pages already???