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.
- Here’s a Thing: There’s No Correlation Between a College Degree and Coding Ability
- Does college make you a better coder?
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.