I graduated from the University of Idaho with a degree in Computer Science in ye olde glory days of the mid-90’s. Recently the Computer Science department sent an email to alumni asking them to describe how their education has helped them in their careers. Fair enough, happy to help. This being the Internet, where nobody knows you’re a dog, one of my fellow alumnus decided to fire off a response attacking the department for not properly preparing graduates because… well, he thought he was getting vocational training.
Note: I refer to “author” not as yours truly but the person who wrote the below email in italics and bold.
With all due respect, this "survey" feels like a complete joke and
hardly gives me any confidence in the U of I C.S. program. How do
you expect a couple questions like that to really affect anything?
As you can see, our anonymous author starts by offering his hand in the spirit of assistance and friendship.
The software world is going Agile and Lean. How much of that are you
teaching to students yet? If you really want to be a leading edge CS
department, you've got to be teaching people how to write good solid
clean code. Is test driven development anywhere in the curriculum?
I fundamentally disagree that “you've got to be teaching people how to write good solid clean code". While that’s certainly important, the goal of a Computer Science education is to give you a good foundation on the theories and practices of Computer Science. Not to teach you the latest fad to pop-up in startupland. Not to teach you “test-driven” development. Not to train students to be coding monkeys. Theory. Fundamentals. Got it?
When I graduated, I was sent into the world woefully under-prepared by
the university. I pretty much taught myself how to really write code
and on my senior project, I was the only person on the team that could
really even write any code - I ended up writing all the code for the
rest of the team - and they all got the same grade for the project
that they could not even write the code for.
Basically our illustrious author is saying he wasn’t a good student, didn’t give a shit, and would’ve been better off working at a llama farm. If you don’t take advantage of the educational opportunities when you’re in school, it’s your own damn fault - you only get out what you put in and professors really don’t care about students who aren’t interested. I don’t why it’s so hard for students to ask for help but I saw it all the time when I was in school, fumbling around in the dark because they wouldn’t ask where the light switch is located. The author goes on to state he’s God’s gift to programming and but for him, the senior project would’ve died a miserable death. Guess he’s so damn smart he couldn’t help anybody else. Jackass.
Since then, I've hired a lot of software developers and run my own
company for 15 years. Some of the best software developers I've hired
had *NO* college education. I'm not the only one that's had that
experience. It's making us software professionals question, more and
more, the value of a college degree in this profession. Especially in
this economy. I cannot in good conscious recommend to a talented
youth that they spend 4 yrs at the U of I before they enter the
profession. In fact, spending 4 years at the university might just
set you back 4 or more years modern development paradigms
As we continue our journey, the author states he’s succeeded in spite of his education and feels that getting a degree is “wasting” valuable time because you don’t learn bleeding-edge technologies.. The problem with modern development practices is they change so rapidly. I don’t even pay attention to the newest language, development process, framework, etc. unless I have a good reason to use it. Turns out thinking for yourself is pretty useful. Teaching students the latest fad is a disservice because chances are by the time they graduate, another bright shiny object is born which the lemmings soon adopt. If you’re taught basic fundamentals and theory, you have the tools to see through this chicanery. This poor fellow didn’t and is rather proud of his ignorance.
Now, you may be surprised that I don’t think a Computer Science degree is necessary to be a good programmer. Programming is rare amongst engineering disciplines in that a person can learn most of the trade by doing. It’s hard for a person interested in civil engineering to learn by building bridges or roads.
If you want to be a computer scientist, whether academic or professional, theory matters. A lot. I use the theoretical knowledge I gained every day. Technical writing, algorithmic analysis, data structures, computational theory, language theory, hardware design – all of this is critical. Was it obvious how useful this knowledge was going to be when I was taking the classes? No, but that’s the beauty of a university education – it gives you the skills necessary for you to continue your education. To do so, asking the right question is far more important than regurgitating an answer. That’s what the author, the ignorant bastard, fails to understand. All of the “modern development paradigms” I learned in school are dead or irrelevant nowadays but knowledge thrives because critical thinking is the gift that keeps on giving.
As an aside, I wish more students knew C. Memory management and pointer manipulation are skills that transcend languages and platforms. All too often I see programmers unable to understand what’s causing problems because they have too much reliance on the virtual runtime and lack the intellect to ask the right questions. Garbage collection is great until it gets to the point it isn’t and starts causing you massive headaches. High-performance computing requires a very detailed understanding of both software and hardware; it’s difficult when all you know are the characteristics and capabilities of the virtual runtime.
The U of I is in a position to make a difference, if you *REALLY* want
to make a difference and not just appease the same old system of
tenure and outdated instructors. The question is *WILL* you?
Ever notice your parents get smarter as you get older? As I look back, those tenured and outdated instructors (otherwise known as professors, a title that used to command a high amount of respect) were pretty damn smart, even brilliant. The author, a man amongst boys, creates his straw man, a common debate tactic used by numbskulls “to create the illusion of having refuted a proposition by substituting a superficially similar yet unequivalent proposition (the "straw man"), and refuting it, without ever having actually refuted the original position.” If you can’t or won’t answer the question, twist the question so it’s unrecognizable and plays to your position so you can safely protect your dogma.
I'd be interested to help you all in an advisory role if you really
want to change. I'd even be interested in moving back to Idaho if I
though I could make a difference. I graduated in 1986 and I'm at the
forefront of the Agile/Lean software movement. If you are just going
to keep on doing the same old government funded, barely sufficient
program that I experienced 20 years ago, I guess I'll keep on
dismissing the message (and I'm not the only alumni, I'm sure).
Ah Idaho, with your untamed wilderness, beautiful scenery, high mountain prairies, sparkling rivers and lakes – I miss you. Our author, who is so endeared with himself that only he can save students from a future of drudgery and misery, knocks down his straw man and offers to help in the same fashion as your friendly, neighborhood loan shark. He’s at the forefront of the agile/lean software movement (whatever that means) for Pluto’s sake! We should beg him to lead us! We’re saved! I’m guessing he’s somehow in cahoots with the zealots at 37signals.
In summary, do you need a college degree to be involved in the wonderful world of software development? No. College isn’t for everybody and that’s not a slam. It’s the fact that we need better vocational training in our secondary schools. We need to get away from everybody being shoe-horned in to college prep coursework in high school. Students need honest choices.
If you recognize the richness inherent in a liberal education, which the author in his omnipotence doesn’t, then you’ll learn far more than you ever knew to ask.