Ask HN: How important is a CS degree?
I'm currently a journalism major and I do freelance web development work for money. I like software development a lot more than I like journalism at this point, but I'm 4 years deep in journalism requirements. I'm thinking of minoring in CS or switching majors entirely, and my question is, how important is a CS degree? Should I just finish my BA in journalism and then just do software development work, or is it worth pursuing?
11 comments
[ 5.9 ms ] story [ 48.7 ms ] threadNot all these will ever be relevant, but they indicate your level of ability and your areas of interest.
Do you know what the time complexity is of Quicksort, and why? Worst case? Best case? What about Heap sort?
Do you know how to use regular expressions? Could you write a parser for lisp?
Can you write a recursive fibonacci function? Imperative?
Can you find the shortest path in a graph? Can you calculate the diameter of a graph? Its radius?
Can you compute in a random permutation of n elements the probability of a cycle of length k, when 2k>n? Does that question make sense to you?
Do you know the difference between inner-, outer-, left- and right- joins? Do you understand the implications?
Chase down which of these interest you, and put them into practice. If you are knowledgable and have example code to demonstrate, it actually helps if your degree subject isn't CS.
Sometimes.
(some further questions added in edit)
The biggest consideration for me in your position would be the requirements to switch majors. I imagine you would be looking at quite a bit more school. Unfortunately, a CS degree requires a lot of classes which build on each other which Journalism doesn't require, so I'm betting you would be looking at another couple of years in school at the least.
Personally, I wouldn't bother, but school wasn't for me. I dropped out to go into web development and I'm rarely asked for a resume and I have never been asked about my educational background. I feel like communication and good writing skills are important for dealing with people, so you should be strong in that area as a Journalism major.
The caveat in this is that freelance web development will eventually get old (stressful, tricky to balance work and life, etc) and I don't consider web development to be software development. If you were to stop now you would likely continue the web development track and perhaps never get out of it. If you were to complete a CS major then you may be presented with opportunities that you would never have thought of as a web developer (job offers on graduation.)
Important things to do, regardless of your degree if you want to program for a living: 1. know what the hell you are talking about 2. have experience in the things you want to do 3. become known in the community
Expanding: 1. If you say that you know what the hell you are talking about, and your O(n^2) algorithm for computing something for someone's app used to work but now falls to pieces with more widgets, then you really don't. Learn how to design and analyze algorithms to fit the task at hand. I don't know how many times I've cleaned up someone's O(n^2) or O(n^3) algorithm to O(n) because either they didn't know the language or just weren't very good, but it's at least 20 times at this point. If you want to self-start, check out MIT's OpenCourseware. It has a free computer science education that will result in zero paper. Lectures are available online for free.
2. Don't just read a bit about a new technology that you want to get a job doing, actually use it. There are free VM solutions that will run on your hardware and OS combination, which will let you run and test any number of software configurations to see what it's like.
3. If you're really using the software, and you don't run into a bug, then you're not really using the software. Report bugs, fix bugs, get involved. Every project needs help; the more you help people, the more you are known; the more you are known, the better your resume.
There are people who have never had a problem getting a job without having a degree. And there are some people who haven't been able to get a position, regardless of their degree. Personally, my degrees have opened doors that would otherwise never have been open to me. And the education that I have acquired in school has been invaluable to actually performing my duties as a chief architect. In my experience, there are just some things that you are only likely to have been exposed to during the course of education and related further exploration.
Ultimately it's a matter of what you want. Do you want paper? What if the paper can increase your lifetime earning potential (do you care)? What if you are so good that you can do better without the degree slowing you down? If you were 1st or 2nd year, I'd say switch majors. At 4 years... I'd say go with your gut. If you're guts are wrong, at least you went with what you thought was right, and not what others thought.
If you want to keep doing Web development, I won't lie to you: you are probably not going to use 75% of your CS course knowledge. You'll be hacking in JS, HTML, CSS and some backend language, and will probably only come across a CS-related challenge once every year or so. (Depending on your clients' industry and requirements). Your biggest challenge will probably be scaling, but that's something you may never even run into.
If you're talking about more corporate-oriented desktop or integrated software development, you will probably be using more of your core CS skills.