Tuesday, April 07, 2015

To College or Not To College?

diploma One of the ongoing arguments in computer science is if a university degree or study is necessary in computer science. Basically I think it boils down to “do you need a college degree to be a good programmer.” Of course computer science is more than programming and I don’t think there is too much disagreement that a real computer scientist needs formal training. But a programmer? That is where the debate gets heated. An interviewing manager once told be that he almost didn’t agree with interviewing me because I had studies computer science in college. Yep, having a CS degree (well a degree in Systems with a lot of CS courses) was held against me. Recently I saw a couple of interesting takes on this question.

The first article makes an interesting claim that many hiring managers these days are loath to accept. The second article is a little more accepting of the value of a CS degree – authored by someone with two CS degrees. Key point from Hadi Partovi “My short answer: to be a fantastic software engineer requires a combination of both the education background AND the real-world hacking experience. Neither is a substitute for the other.”

One also has to be careful distinguishing between types of computing degrees. Computer Science is different from Software Engineering which is different from Computer Engineering. The curriculum guidelines for computer science programs from ACM/IEEE are more geared to computer science than just programming or software development for example. If you are planning on writing code for a living then Software Engineering might be a better choice than Computer Science. On the other hand if you want to do really new state of the art things that have never been done before computer science might be a better case than hacking along or Software Engineering.

Generally though I think the ideal is some of both – school learning and learning on your own. Self learning tends to get focused in narrow directions even more so than school learning. I’m talking concepts not applications here. It’s very easy to learn a few tools and see them as solutions to all your problems. School will likely force you to learn new conceptual tools.

These days most school programs encourage students to learn new programming languages and platforms on their own so a good student has to be something of a self educator. I also encourage students to get involved in large projects. If the curriculum doesn’t offer large projects, and most do no, then find a friend or three and create your own large projects. Today’s hiring manager wants to know what you are passionate about and school projects alone will not cut it.

Lastly in my pitch for college is all the things other than coding that you will learn. Communication is one thing that every jumps on and it is very important. But I also think that the liberal arts and other “general education” requirements help make people more well rounded and interesting. There is also the matter of picking up domain specific knowledge and vocabulary that will help anyone understand the world around them.


Anonymous said...

You may not need a college degree to be a "programmer". But nobody should be aspiring to be a "programmer"; people should be aspiring to be "system designers".

It's the difference between knowing how to add and knowing how to compute actuarial tables. It's the difference between knowing how to drive and operating a commercial limousine service. It's the difference between growing a house plant and operating a 100-acre farm.

To do any of the latter, you'll need advanced training.

Garth said...

Every time I get a guest speaker from the tech industry that is one of the questions I ask for the kids to hear an honest, real world answer to. In every case the emphatic answer has been pro-college. Business to not seem to want to hire programmers. They want to hire people who can do more than program, people who understand the systems they work with, and that understand the underlying basis of coding. They want to hire people that know how to learn. They have all said the biggest thing college teaches is how to learn. Self trained programmers are just too limited in scope.

Dan Kasun said...

So here's the question: are colleges actually teaching kids how to do more than program? Are they actually learning the critical thinking and problem solving skills required to succeed - not just in programming, but in just about any discipline?

And the next question is: are colleges doing that teaching in the most efficient, effective, and economical way?

IMO... the answers are: maybe, and definitively NO.

And I think that's the problem... it's not that people don't think college education has value... it's just that just about everyone knows that it probably isn't worth the investment that most students (parents & taxpayers) put into it.

So... if we're trying to teach life skills and critical thinking, wouldn't the first test be whether or not a student would choose to poorly invest a large sum of money? AS far as I see it, anyone who pays more than state-school, in-state tuition prices for college should have a ding against them for their lack of financial and economic judgment. :)