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!"
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?
* 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.
When you see kids running around with books titled "How to get better grades", it's clear to me that school is nothing more than a holding ground for kids because there are no jobs for them.
School is NOT about learning, it's about fitting in a given society. You can learn FINE on your own. Books exist, libraries exist.
If anything, schools are anti-intellectual. When I was in school, I was always going off on tangents and exploring all kinds of fields on my own. Did I get *any* support or encoouragement? No. None. Zero.
Follow the group, don't go too fast, don't go too slow.
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
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.
In school: what you put in is what you get out. Want to cheat and not learn anything, go right ahead but I doubt you'll be making as much money as me in a decade or two. Talk to the Professors, show interests, discuss things, do research, etc.
Also: Go to a better school then or get a better advisor. First of all the whole "you can learn it from a book just fine" is BS imho since unless you know which book to get you won't have a fun time. In addition, for many things the feedback you get on projects (or even just doing the thing assuming it's hard enough) is more valuable than anything else.
As for "tangents" let's see I'm a Junior now and I've taken courses in: Math, CS (including grad courses in AI, Robotics and Genomics), Statistics, Psychology, Philosophy (Bioethics, and now I know the main arguments for a dozen important issues), Physics, Biology, History, Writing and a few others. I learned something in all of them, I took classes much harder than what I should be taking and while I didn't get an A in them I learned much more than if I took a class where I did get an A easily
I've always thought that if you have a 4.0 grade average, and you have anything less than a massive course load from the best college in your major, you must not be challenging yourself.
I have a Master's Degree in Comp. Sci., and I did not graduate from my undergrade with a 4.0; it was around a 3.5. I had something like a 3.8 in major, but I preferred to challenge myself outside my major. (MSU made that easy with their "Honors College" program, which gets you out of the generic crap courses, provided you replace them with real classes. So, for instance, instead of the Generic Social Studies classes that you normally hear people bitching about, I took several real psychology classes; if you can't find something that you like, what the hell are you doing in college? (That program also got me into the hard math courses no questions asked, and I was able to make several other nice substitutions for harder courses that were actually easier for me in a way because I liked them.) In the event you recently started attending or are thinking of going to MSU, I highly recommend hooking up with them.)
I had an English History class that I got a hard-fought 2.0 in. While this is one of my weaker grades, I'm also proud of this one; it was solidly in the middle of the pack in that class, which was eight other history majors. (Woohoo, two hour essay tests with four questions, graded on grammar, spelling, and historical synthesis! Pity that class wasn't labelled as one of the "writing intensive" ones, it beat the snot out of the one I had that was actually labelled as such and I'dve preferred to spend those credits elsewhere.) I also took the advanced physics and never got a 4.0... but I understand it better than those who took the standard one. (Non-calculus based mechanics leaves you with a bit of an inferior understanding, but non-(multi-variate-)calculus electromagnetism is nearly a waste of time!)
So no, I didn't carry a 4.0, because I pushed myself as hard as I could. I, too, would be concerned about someone who got a pure 4.0 in undergrad, and would want to examine their transcript closely, to make sure it wasn't loaded with too many "basketweaving for jocks" equivalents. A pity there isn't a way to have a "difficulty adjustment" for GPAs; I know that my "grade performance average" would end up higher than quite a lot of the "grade point average" 4.0s.
As others have pointed out, college is what you make it. If you find that your classes are so easy you could just read the book, take harder classes. Self-fulfilling prophecies, anyone?
(I don't say this stuff to brag; frankly I don't give a shit what the average Slashdot denizen thinks of this. I don't much respect the majority of you anyways when it comes to things like this; quite a lot of you are spoiled little snots when it comes to academics. But if it helps even one person get something good out of college, it's worth it.)
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