Slashdot Mirror


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!"

4 of 808 comments (clear)

  1. Response to Joel by alphakappa · · Score: 4, Informative

    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)
  2. Anti-intellectualism is actually... by cnelzie · · Score: 5, Informative

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

    --
    If you ignore the other uses of a tool, does that make the tool less useful, or you less useful?
  3. Re:Slashdot: Comforting Lies for the Cardboard Cro by psykocrime · · Score: 3, Informative

    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
  4. Very bad advice by Stu+Charlton · · Score: 4, Informative
    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.''

    --
    -Stu