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