Follow Slashdot stories on Twitter


Forgot your password?

Joel Gives College Advice For Programmers 808

An anonymous reader writes "Joel on Software explains what college students should do with their lives. Interesting to note is how he justifies such trivialties as GPA scores and well-roundedness, the very things comments here tend to think are overrated. In short, learn to write English, learn to write C, and don't worry about India!"
This discussion has been archived. No new comments can be posted.

Joel Gives College Advice For Programmers

Comments Filter:
  • by BWJones ( 18351 ) * on Wednesday January 05, 2005 @02:36PM (#11265742) Homepage Journal
    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.


    • by Anonymous Coward
      The problem with school these days is that's it all about getting the papers to get a job. Period. If school was really about "learning to think" and "knowledge", why is cheating so rampant? 33% of all graduates cheated to get their bachelor's, at least here in Montreal in EE.

      When you see kids running around with books titled "How to get better grades", it's clear to me that school is nothing more than a holding ground for kids because there are no jobs for them.

      School is NOT about learning, it's about fi

      • Guess i was lucky, all thru school i was supported ( no, i was encouraged ) to veer off on tangents, and learn all that i wanted, on any subject i chose.

        I wasnt forced to conform in the slightest..

        However, that is both good and bad..
      • The problem with school these days is that's it all about getting the papers to get a job. Period.

        School is what you make of it. If that is your perspective, you will not take much away from the experience. School is not there to hold your hand and tell you what to think or believe. It is there to provide you with information you might not otherwise be exposed to. Schools should challenge you and provide opportunities to excel.

        With respect to cheating: If somebody cheats in school, they are going t
        • While I agree with the thrust of your post, I did find this somewhat amusing...

          I and others absolutely did not fit into the mold in college. The crowd we ran with was decidedly counter culture and the kids with the funny hair (us)...

          So you did fit into a group, and a fairly solid one that most people have no problem envisioning. It wasn't the "preppy" group, but it was a group nonetheless, and almost certainly displayed the same kind of requirements as the more "mainstream" ones. You may think not, ho
        • Negative. This is not the same as guided education.

          A fine sentiment. However, you confuse the average college experience with "guided education". Do you really claim to ignore the faults of teaching things the current American college way?

          I was immensely disappointed in the so-called Engineering Physics program at UMass/Boston. It had such potential, and it wasted it all on what could only be called "continuing ed". From that experience and other anecdotes, I can only have become the college pro
          • 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 hand
      • by Rakishi ( 759894 ) on Wednesday January 05, 2005 @02:52PM (#11266057)
        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
      • The problem with school these days is that's it all about getting the papers to get a job. Period

        bullshit. I have a degree in Aerospace Engineering. I've never worked directly in that field. I certainly did learn a lot of really cool stuff that I could never have learned on my own, however.

        Computers were a hobby, and getting a job in the field was because of that hobby. The education certainly did help, but I definitely did not get an engineering degree to "get the papers to get a job"

        In fact,

      • by jtshaw ( 398319 ) on Wednesday January 05, 2005 @03:10PM (#11266386) Homepage
        I don't know anything about your given situation, but I can tell you from some situations I have witnessed first hand that the "lack of support" is usually bullshit.

        Apathy is a huge problem at Georgia Tech, where I attended college. People bitch about how nobody wants to help them, about how professors don't offer any guidance, about how everyone is out to screw them. Fact is, the professors rarely even get approached by the students. How do you think these people that devote there lives to research and teaching feel with 99/100 questions they get are an attempt to get a higher grade? Most students show so little interest in anything other then grades it is no wonder the professors don't go out of there way to help more often.

        At any good school, GT included, if you make an effort to get to know your professors it really does pay off. Professors usually love to do research, especially in new and interesting fields. In my experience most of them are more then happy to assist there students in getting involved, especially if your area of interest overlaps with theres.

        If any of you are in college, or about to go to college, don't be fooled. Sure, everything they teach you there can probably be looked up in a library. However, where else are you going to be surrounded by so many people who have insight into so many different things? Don't throw away your chance to use the professors a bit and learn as much as possible.
        • by anum ( 799950 ) on Wednesday January 05, 2005 @03:40PM (#11266865)
          I think you hit this one: Apathy + an entitlement society means the kids don't care but still expect perfect grades.

          I think every kid should be forced to do one year of grunt work somewhere before going to college. I don't care if it is Peace Corps, picking up trash along the highway or working a minimum wage slot at the 7-11. I know a bit of 'real world' experience would have helped me focus in class.

          I know, I know... There is always a way to game the system and the upper middle class kids won't get their hands dirty. But a trip abroad is a good way to open up closed minds. Maybe that would be a good subsitute. I currenty live in England and it isn't at all uncommon over here for the kids to take a 'gap year' before going to university. It is actually kind of expected and the entrance system is built to handle it.

          Just my .02
            • I think every kid should be forced to do one year of grunt work somewhere before going to college.

            Absolutely true. I went to college straight from HS and I seriously believe that was a mistake. when I first got to college, my goal was to party unfettered by parental oversight. I did well at partying, lousy in school. It wasn't until mother passed away that I realized I had to actually become a self-reliant adult. Before this, my GPA was 1.99, after 3.88.

            Thinking back on that time, I see now ho

    • This presupposes you think that University is an intellectual exercise. In many cases, it is the thing furthest from. It's quite often just a rite of passage. Some "PhDs" will even admit to this.
      • This presupposes you think that University is an intellectual exercise.

        It was certainly my experience that it was and is an intellectual exercise.

        In many cases, it is the thing furthest from. It's quite often just a rite of passage.

        Is this personal experience or are you just talking loud?

        Some "PhDs" will even admit to this.

        Every PhD I know (myself included) will fully describe their program as intellectually punishing. After all the PhD is supposed to be granted upon completion of work that is n
        • by sphealey ( 2855 ) on Wednesday January 05, 2005 @03:03PM (#11266245)
          In labor economics, there are three theories of why people pursue higher education:
          • Experience good (fun to get - think MA in US History)
          • Capital investment (like buying a machine - think BS in Engineering)
          • Signal to prospective employers/mates - university provides the filtering and winnowing process that addresses the cost-of-information and loser's curse problems that affect a non-local economy.
          These theories are not mutually exclusive; in fact, all of them can be in operation at the same time. It is the differences among the roles and purposes of the three theories that causes this discussion to get so heated, here and on other forums.


    • anti-intellectualism here on Slashdot is extraordinary

      It's tempting to think that this is peculiar to the live-with-mom coding set, but it's no different than any other guild-like group of people with a particular set of relatively valuable skills. Say, sheet metal workers, or turbine mechanics. Those chores will not go away, and our economy will always support people skilled in those areas no matter how otherwise closed-in they might be within their own communities or industry cultures.

      But there will
    • Thank you! I could not agree more. It's really disheartening that these qualities are always discredited. In my opinion as a programmer these are two of the most important things you have to show for yourself. - A relatively high GPA shows that you can stay committed even if a project(/class) doesn't interest you. This is extremely valuable in the work place as you will get many mundane projects on your way to or in between working on interesting projects. It also helps employers distinguish between
    • by cnelzie ( 451984 ) on Wednesday January 05, 2005 @03:07PM (#11266328) Homepage
      ...a large part of being a citizen of the United States these days. When I was younger, I was in the arrogant land of believing that College Degrees were over-rated and worth very little on paper.

      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.
      • by oneiros27 ( 46144 )
        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 ha
        • Excellent point. I was lucky enough to have a couple jobs in high school that convinced me I needed to get a degree. Nothing like chatting with a man who's made a lifelong career out of managing fast food restaurants to motivate you.

          Granted, 10 years ago, it was possible to get a foot in the door of the software industry without a degree if you could show a proficiency in at least one programming language. But those with degrees were still able to get better jobs and salaries. Nowadays, you'd be hard

    • 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.

      Knowlege and education will always be valuable, in many ways. What does that have to do with college?

      Seriously, for too many students, college is a four year waiting period: waiting to get their tickets punc

    • by themusicgod1 ( 241799 ) <> on Wednesday January 05, 2005 @05:37PM (#11268787) Homepage Journal
      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.

  • Do what I do... (Score:2, Insightful)

    by Blapto ( 839626 )
    Actually write code. Get off of your donut encrusted seat and write code! Experience! Stop complaining... Arrgghhh.
  • Good advice... (Score:5, Interesting)

    by Omniscientist ( 806841 ) * <> on Wednesday January 05, 2005 @02:36PM (#11265750) Homepage
    I'm currently a college student who is going to be majoring in Computing Engineering. This article is something I should have read before I started my first semester at college, specifically the "don't blow off the non-CS classes". My first semester was mainly non-CS classes and it did hurt my GPA slightly (nothing I can't fix tho). He brings up an important part, I believe, in how necesarry it is that you must be able to convey your ideas through speech and writing well. The whole microeconomics thing is some good advice too. Ooh and its nice to hear that we shouldn't worry about all those jobs going to India. The only thing that made me scratch my head in the article was this passage in relation to Computer Programming as a job:

    If you enjoy programming computers, count your blessings: you are in a very fortunate minority of people who can make a great living doing work they enjoy. 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,

    I'm being a bit sarcastic here, but I've heard from too many people that punching out code all day at work makes them very hesitant to even touch a computer at home. For those who are currently computer programmers/engineers, would you say you really enjoy your job, or does it get extremely old and tedious after awhile?

    • Re:Good advice... (Score:3, Insightful)

      by B5_geek ( 638928 )
      I'm not a programmer (basic doesn't count anymore does it =), I am admin + help desk + repair tech + ...etc... one-stop-shop in our company. I do everything, and after spending 8 hours 'working' on PC's and various projects (MySQL, PHP, web) I go home and I spend 6 hours working on PC's.

      About the only thing I can't stand to do is the 'helpdesk' role to my family.

      "Mom, I don't know what 'thingy' you are talking about or how you broke it in the first place!"

      That just makes my skin crawl.
    • It depends on what you do at home. If you do the same thing at home that you do at work, then yes your not going to want to do it. Use your free time to do other things, something that you wouldn't normally have the option of doing in your day to day work, use the time to learn and expand your abilities.
    • That's something you'll have to find out for yourself.

      I for one got sick and tired of doing it professionally, but I like to do a little as a hobby and to learn new technologies.
      Other people I know i have been programming for decades (started in the 70's) and still love every minute of it. And still others burnt out completely. I guess it also depends on the jobs you have had.

    • "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?"

      It is, in a nutshell, like day to day living. You have your ups and you have your downs. This coming from somebody that still loves the concept, the doing, the statisfaction of programming - it is a bonus that I get paid for it; even when it sucks.

    • Re:Good advice... (Score:3, Insightful)

      by Swamii ( 594522 )
      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.

      I've been 'punching out code' at the same job for the last 3 years, and nothing could be further from the truth. You write code at work, then go home and play some Age of Mythology or even write some code for my personal projects; frankly my computer is my lifeline (queue the jokes). On top of that, I'm married and have kids - fact is you don't get a whole lot of free time when
    • Like any job you do 8 hours a day 5 days a week, there are going to be times when it is tedious. But it is usually the peripheral parts that are tedious. Meetings, restructures, office politics, come-to-jesus meetings, and so on ad nauseum. Programming would be much more enjoyable without all that garbage, but they are part of having a job. So you put up with them.

      I work Java all day at work, and when I get home I spend my spare time working in Python and Zope. I enjoy both in different ways, and both
    • 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?

      Well, if you get bored, you can always read slashdot...

      Seriously, there are boring and/or bad jobs in just about any field, including CS ( to me, it's the "IT" side of things that sucks eggs ). Find a project or job category that you enjoy, and do that if you can. Of course, anything can get old- some people at some point in their lives just need to cha

    • 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 wor
    • 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
    • Re:Good advice... (Score:5, Insightful)

      by saddino ( 183491 ) on Wednesday January 05, 2005 @03:07PM (#11266319)
      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?

      Short answer: it depends.

      Long answer:

      When I was in elementary/middle/high school, I used to spend long hours programming and couldn't get enough of it.

      When I was in college I found myself too distracted by other things to program.

      When I was working full time (programming) for a company, even on projects where I worked solo on design and devlopment, I was definitely too tired/spent to touch a computer at home (in fact, I didn't even have one at home -- but this is before the Internet made "being connected" all the time a necessity).

      However, as soon as I started doing independent contracting (and working from home) I found that the freedom to schedule my day allowed me to set aside time to program for pleasure. I wrote a couple shareware games, made no real money, but enjoyed having turned one of my passions (programming) back into a hobby.

      Now, I run my own company and spend all my time programming -- in essence I've come full circle and now my hobby is my career. From this point of view, I completely agree with Joel's quote, with a caveat: if you enjoy programming computers, and your programming is not "owned" by someone else, then you are in an extremely fortunate minority of people.

      So, to answer your question: yes, I really enjoy my job and it's not old or tedious in the least bit, but, it took me some time to get to this point.
    • Re:Good advice... (Score:3, Insightful)

      by wcrowe ( 94389 )
      I would say this in response: If all you're doing is banging out code all day long, you may not be a very good programmer, and you definitely have a crappy programming job, but don't worry... soon you'll lose your job to a happy Indian.

      OTOH, if you can get into an area which requires real analysis, puzzle-solving, thinking and designing, you've got a great programming job and you'll enjoy it.

      I'm happy to say that most of my career has been spent in the latter category.

  • YES (Score:5, Insightful)

    by Thunderstruck ( 210399 ) on Wednesday January 05, 2005 @02:38PM (#11265790)
    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.

    • Seriosly, bad communication skills generate huge costs in lost time

      So do spelling errors... :)

      • Re:YES (Score:5, Insightful)

        by g0at ( 135364 ) <<ben> <at> <>> on Wednesday January 05, 2005 @03:54PM (#11267046) Homepage Journal
        My girlfriend and I argue about this type of thing from time to time. I know you were just poking good-natured fun at the OP's typo, but I feel it is important in this discussion to distinguish between excusable errors due to transient mistakes (e.g. typos by someone who can spell), vs. consistent errors due to ignorance (e.g. mangled words and grammar from someone who can barely handle their native language).

    • I haven't seen any teens use "!" as not. I'm thinking that's sort of a geek thing.
      • And when talking about programming, there's many cases where code just says it more clearly and less ambiguously than human languages could hope to. Not that you should do that in a freshman comp class, unless the subject matter is very technical.
      • It is in fact a C programmer thing- it comes directly from C and AFAIK, only C-inspired languages use it. EVERY other computer language I know other than C, Java, C# and C++ use "NOT" spelled out.
  • by mOoZik ( 698544 ) on Wednesday January 05, 2005 @02:40PM (#11265818) Homepage
    * 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."

  • Just graduated (Score:2, Interesting)

    by neiko ( 846668 )
    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 (Score:5, Insightful)

    by RAMMS+EIN ( 578166 ) on Wednesday January 05, 2005 @02:43PM (#11265885) Homepage Journal
    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.
    • Re:My Advice (Score:3, Insightful)

      by hendridm ( 302246 ) *

      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.

      Hah! Wait until you get out and have to exp

  • Non-CS Courses (Score:5, Interesting)

    by ackthpt ( 218170 ) * on Wednesday January 05, 2005 @02:43PM (#11265887) Homepage Journal
    Microeconomics Joel touches on for what I consider trivial reasons. My recommendation in regard to the non-CS core classes with a math foundation is to get a broad exposure to them, including macroecon, chem, physics and of course, calculus (which is usually required anyway.) Why? Because it gives you opportunities to consider how you might approach problems or exercises in these disciplines analytically and how you might program modeling and such. I found on thing could lead to another, quite often, as classes can often be very interconnected in theories and information and were inspirational for lots of experiments in coding. Broad experience in coding is essential, unless you like to play the high-risk game of specialization (big bucks, but little call for your skills)

    Non-math courses help develop a personality and there's no shortage of need in that department, where I've worked. Learn some general psychology, socialogy and language. A well exercised brain is more creative than one that only dwells on one aspect or type of challenge.

    I found many formulas and ideas from classes outside CS contributed greatly to offering information and processes which normally may not have occured to me.

    In short, you're in school, make understanding the concepts behind your classes your main focus, socializing and entertainment when you can fit it in, not the other way around.

  • Enjoy your summers (Score:5, Insightful)

    by RadioheadKid ( 461411 ) on Wednesday January 05, 2005 @02:44PM (#11265917)
    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!
    • Any job will teach you at least some valuable skills, programming or not the very least any job where you have coworkers will teach how to exist comfortably in an environment where you are dependant on other people to get things done. Now, as for the whole beach/camp vs. intern argument ...I say do both. The internship I had with Whirlpool in St. Joe, MI (right on Lake Michigan) was great. Get off work every day at 4:30, and have 5 hours of free time to go to beach and enjoy the sand and the weathe
  • by Anonymous Coward
    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)
  • Response to Joel (Score:5, Informative)

    by alphakappa ( 687189 ) on Wednesday January 05, 2005 @02:45PM (#11265940) Homepage
    Here is Sriram Krishnan's response [] to Joel's advice
  • I wish (Score:3, Insightful)

    by matth1jd ( 823437 ) on Wednesday January 05, 2005 @02:47PM (#11265974)
    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."

  • The best advice... (Score:4, Insightful)

    by Not_Wiggins ( 686627 ) on Wednesday January 05, 2005 @02:49PM (#11266009) Journal
    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.
  • True confessions... (Score:5, Interesting)

    by rah1420 ( 234198 ) <> on Wednesday January 05, 2005 @02:50PM (#11266020)
    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.
  • 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 a
  • Good Internship (Score:3, Interesting)

    by Ironsides ( 739422 ) on Wednesday January 05, 2005 @02:53PM (#11266079) Homepage Journal
    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).
  • GPA useless??? (Score:4, Insightful)

    by Sebastopol ( 189276 ) on Wednesday January 05, 2005 @02:53PM (#11266083) Homepage

    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!

    • by Roadkills-R-Us ( 122219 ) on Wednesday January 05, 2005 @03:04PM (#11266263) Homepage
      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!
    • Re:GPA useless??? (Score:3, Informative)

      by psykocrime ( 61037 )
      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.

      That's a fine approach, as long as you're comfortable with knowing that you're going to miss out on some really talented people that way. Sure, you'll hire some good people along the way, but
    • Re:GPA useless??? (Score:4, Interesting)

      by Jerf ( 17166 ) on Wednesday January 05, 2005 @03:21PM (#11266554) Journal
      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.)
  • Its . . . (Score:4, Funny)

    by JJ ( 29711 ) on Wednesday January 05, 2005 @02:56PM (#11266125) Homepage Journal
    . . . amazing how much bad grammer and poor spelings holds back you.
  • by WormholeFiend ( 674934 ) on Wednesday January 05, 2005 @02:58PM (#11266163)
    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
  • by Doverite ( 720459 ) on Wednesday January 05, 2005 @02:59PM (#11266183)
    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.
  • English (Score:3, Funny)

    by csbruce ( 39509 ) on Wednesday January 05, 2005 @03:04PM (#11266268)
    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."
  • by jeif1k ( 809151 ) on Wednesday January 05, 2005 @03:07PM (#11266316)
    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.
  • by FreshFunk510 ( 526493 ) on Wednesday January 05, 2005 @03:07PM (#11266322)
    (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.
    • I also was a little put off by his discussion of that class--it sounded to me like he didn't really have a good understanding of how proofs work, and, more generally, theoretical mathematics and computer science work.

  • People skills (Score:5, Insightful)

    by Lord_Dweomer ( 648696 ) on Wednesday January 05, 2005 @03:12PM (#11266410) Homepage
    I would recommend that any Slashdotter considering going into a tech related field do something at college to brush up on their people skills, whether it be by joining lots of clubs, taking a negotiation class, or even *gasp* taking a marketing class to learn how to communicate to an audience.

    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.

  • by saddino ( 183491 ) on Wednesday January 05, 2005 @03:17PM (#11266498)
    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?

  • by Wind Son ( 259878 ) on Wednesday January 05, 2005 @03:29PM (#11266679) Homepage
    Good article. I agree about communication and people skills being valuable to programmers. I'd add one other thing that has me pulling my hair out as both a developer and as a manager of developers: the lack of fundamental business knowledge. Developers need to figure out where they fit into an organization, how organizations are structured, and what considerations they need to take into account that are based outside technology but have deep technological impacts.

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

  • by tyrione ( 134248 ) on Wednesday January 05, 2005 @03:30PM (#11266708) Homepage

    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

  • by jd ( 1658 ) <{moc.oohay} {ta} {kapimi}> on Wednesday January 05, 2005 @03:34PM (#11266777) Homepage Journal
    First off, the practical value of a degree depends on which educational philosophy the University or Polytechnic subscribes to. If it teaches subject "facts", then it's likely outdated and outmoded knowledge that is of little value in the real world. On the other hand, if it teaches you HOW to learn and HOW to obtain/evaluate information, then it is credible, even if the subject material covered IS ancient - you're then equipt to update what you know.

    Second, the "job prospect" value of a degree, GPA, certification, etc, has nothing to do with the quality of the subject matter. It has to do with the fame of the place. A Cisco certification is going to land a network engineer a job, even if they know bugger all about networks but can pass exams without trying.

    These two should never be confused. Good scientists, researchers and engineers will remain good, even if they have little or no paperwork. You can identify them because they get good results. Crick and Watson didn't need certifications in genetics to do DNA research, they needed some modelling straws, a few stolen photographs, imagination and phenominal intelligence.

    On the other hand, hiring managers and Human Resource divisions aren't equipt to evaluate candidates on practical skills, because they can't be expected to be experts in all relevent fields. They rely on test results, exams and other easily compared data. They have to.

    The best "college advice" anyone can get is to learn how to learn (important to actually DO anything) but ALSO focus on the quantifiables (because you'll never get a chance to DO, if nobody believes you CAN).

    The day and age where people with actual skills could make their own opportunities has long since passed. There are no "self-made" people out there. Success and failure depend on a twisted mess of trust and codependency in the job markets, COMBINED with actual skill in the field. You need both. (Stupid, but that's the way it is.)

    High scores only mean you can do exams of the type you were set. "Multiple Guesswork" exams are common and require no skill or knowledge beyond being able to eliminate the obviously wrong. (In a typical multiple choice exam, you're set 4 possible answers, of which two are often so far out that they're tied to the paper with a bungee cord. By eliminating those, you're guaranteed a score of 50%. If you can eliminate "unlikely" answers, you'll do 75% or better.)

    "Good" practical tests of real "real world" cases are rare. Practicals are typically simplistic and free of typical problems. However, those "problems" are often not "noise", but characteristics of the cases in question. So, eliminating them renders the case study meaningless.

    eg: Programs that can't run into memory problems, require CPU cycles, or have sync problems with threads, are not real. Everything costs, and programming is about figuring out how to maximise the benefits while staying in the costs - complexity, cycle count, financial expense, RAM, etc. The reason for the bloat in modern programs is that costs are neglected in education and therefore understanding isn't important to get a good test score.

    Other examples would be latency-free infinite-bandwidth networks. Or parallel code that doesn't consider Ahmdal's Law. Or microkernel OS' that don't consider the expense of the added layers. Or real-time systems where components are running at such disparate speeds that they cannot function together.

    If you don't know why things happen, you can't know what to do about them. Having a bunch of "facts" is merely having a religion - received wisdom with no backup or proof that all too often conflicts with what people actually see.

    You've got to be "initiated" in the religion of the job market, if you are ever going to be hired. But you cannot afford to believe in it, if you expect to do more than blindly and robotically follow a set script. Sure, many employers WANT robots,

  • Internship available (Score:3, Informative)

    by Animats ( 122034 ) on Wednesday January 05, 2005 @03:35PM (#11266789) Homepage
    Joel says "get an internship", and we have one. Paid, even.

    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.

  • by leshert ( 40509 ) on Wednesday January 05, 2005 @03:49PM (#11266992) Homepage
    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.
  • by spoonyfork ( 23307 ) <<moc.liamg> <ta> <krofynoops>> on Wednesday January 05, 2005 @03:56PM (#11267065) Journal
    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.
  • by Chris Carollo ( 251937 ) on Wednesday January 05, 2005 @04:05PM (#11267187)
    ...if you can't explain why while (*s++ = *t++); copies a string, or if that isn't the most natural thing in the world to you, well, you're programming based on superstition, as far as I'm concerned...
    Yes, you should be able to decipher what that code does, but I'd seriously question anyone who saw that as second nature, and you'd get a talking-to if you were one of my programmers and actually checked in code that looked like that.

    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.
    • ...if you can't explain why while (*s++ = *t++); copies a string, or if that isn't the most natural thing in the world to you, well, you're programming based on superstition, as far as I'm concerned...

      And if you can't explain why you should never use this to copy a string, then I don't want you coding at my company. (Hint: What if t isn't null terminated, or len(t) > memory allocated to a?)

      And if you think strncpy(2) is the solution, I still don't want you coding at my company. (Hint: If char a[256

  • by jordandeamattson ( 261036 ) <> on Wednesday January 05, 2005 @06:40PM (#11269694) Homepage
    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!


  • Very bad advice (Score:5, Informative)

    by Stu Charlton ( 1311 ) on Thursday January 06, 2005 @01:33AM (#11272845) Homepage
    This piece was an exercise in ego, with a couple of decent nuggets thrown in.

    But this line takes the cake: ...if you can't explain why while (*s++ = *t++); copies a string, or if that isn't the most natural thing in the world to you, well, you're programming based on superstition, as far as I'm concerned...

    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):

    First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute.

    Second, we believe that the essential material to be addressed by a subject at this level is not the syntax of particular programming-language constructs, nor clever algorithms for computing particular functions efficiently, nor even the mathematical analysis of algorithms and the foundations of computing, but rather the techniques used to control the intellectual complexity of large software systems.


    Underlying our approach to this subject is our conviction that ``computer science'' is not a science and that its significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology -- the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Mathematics provides a framework for dealing precisely with notions of ``what is.'' Computation provides a framework for dealing precisely with notions of ``how to.''

Karl's version of Parkinson's Law: Work expands to exceed the time alloted it.