Does a PHP programmer need a CS degree?
I’m proud of my degree. It makes me happy that I have one and that I can consider myself worth more to people in the business world because I have it. But I’m a programmer, and my degree, well, let’s just say that it has something to do with a language and that’s where the similarities stop.
I have a Bachelor of Arts in English. English lit., English language? I don’t know. It doesn’t specify. It’s just English. Yet, all this time (for nearly 6 years, at least), I’ve been a Web application programmer in some sort of professional capacity.
During the dot com boom, degrees didn’t matter at all. If you could program, you were hired. If you had experience, even better, but, now, it seems that a degree is becoming more important to weed out potential candidates for a position. After all, programmers—especially Web programmers—are a dime a dozen.
Pair that together with the folks in India who are willing to accept your outsourced programming jobs for quotes as low as USD 5.00 an hour (and even lower), and you can see that the job market is getting stiffer all the time.
So, when I was asked to submit my resume to what would become my new job, it didn’t surprise me in the least that they had a Bachelor of Science in Computer Science listed in their job requirements. What did surprise me were the types of questions I was later asked in a sort of quiz to know my strengths and weaknesses.
I was asked about Fibonacci numbers, tries, parity, and more, questions that are basic knowledge to a CS 101 student, no doubt, but to a mere PHP programmer and student of English literature, I was unfamiliar with the terms.
Well, needless to say, I got the job, but the questions and the nature of the IT industry got me thinking. Do I really need a computer science degree to continue in this line of work? No doubt, it wouldn’t hurt.
What do you think? And, if you say “yes,” what’s the best way to go about obtaining it? On-line or through classes at a traditional school?
11 Comments
A degree looks good on paper and can certainly help in getting jobs but i've found nothing beats experience.
I've seen programmers with degrees who can't code and also programmers without degrees who can code in their sleep.
So i don't think you need a degree to continue in your line of work but it can help you get started on the path.
I've been lucky enough to have had employers who go for experience over qualifications. Qualifications to me have always been a personal thing and not a career thing, but milage may vary ;)
(i do have a degree (computing mathematics) but i'd still be where i am without it.)
You know, there's a rather high percentage of us with English Lit. degrees who've programmed all of out careers.
It was either law school or hacking for me. I'm happy with my choice...most of the time.
When I got out of high school I looked at the CS route. The courses they were offering were going to qualify me for a job as a professor of computer history, so I opted to go for practical experience. Five years later, I'm making the same amount I would be if I had the degree - the only difference is now I have five years of practical experience instead of a four year degree that spent two to two and a half years on remedial English, Math, and "culture".
A few years ago I was at a Christmas party with one of the guys in accounting department at the university I was going to attend. He'd had a few too many so he was willing to lay it on the line for me - "but it's not about getting an education, it's about getting your "dues card"." I couldn't have summed up my thoughts on a diploma better. I've seen too many messes created by "professionals" to put much stock in what papers decorate their walls.
I've always been the independent learner-type, so what has worked for me, might not work for you, but for someone with the focus, I would recommend educating yourself. It requires more discipline, but for me the payoff has been much better. When I feel there's an area I need improvement on, I go down to the local Barnes & Noble or get on Amazon.com and pick up a book targeting that area.
I think a computer science education is very valuable. Experience is not a substitute. A degree in computer science gives you a strong theoretical foundation, and experience builds upon that with practical (applied) knowledge. Neither is a substitute for the other.
I value my computer science background enough that I've been trying to decide how I can afford to pursue a Masters or PhD in it.
The benefits of a CS degree are not immidiate on most cases. The goal behind a CS degree, or any degree actually, is to educate the person in all the theories that are out there or have been out there. This is to ensure you are not only prepared for the latest hype, but you also know why the current hype is there and you will also know why the next hype will come. This makes you much more prepared to handle the next stages in computer development and maybe even take a part in making them a reality.
That said my university hasnt thought me that much, but I do know functional programming and some other stuff. Will they ever come in handy? Dunno.
I agree with Chris Shiflett's comments above. I too would value a PhD or at least a masters in CS. Maybe someday with things like “OpenCourseWare� (OCW) we can all afford to become educated to the degree that we feel necessary.
Experience vs. education. For me I think that you really need both. I chose the education route first (I work well in a class room situation) and then out in the world to learn how it really works. I personally see education as a way of learning the general basics - laying a good foundation. There I learned not just how to program but all the theory behind it. So now even though I may not have done something I can sort of understand how it works. You however are probably beyond that.
For you I would say that getting a degree is more a matter of dotting your i's and crossing your t's (not too mention making you more marketable in the work force). I say get it - doesn't hurt much and you may occasionally learn something. And you may be able to get more money for it.
Online vs. traditional classes. Hands down - traditional. Names sometimes count not to mention the whole "college experience". Yeah - I went back to school at 25, married, with a kid - and I still joined a fraternity (delta sigma pi) and a couple of associations (AITP, ACM). Any networking helps. If not for this job - then the next.
(I have an ABET accredited (as if it matters) CIS degree rather then CS - less math :), but it minors business.)
I'd like to echo what Chris Shiflett said : having a degree gives you a lot of theoretical background to work with, and therefore, a better framework in which to express your ideas. However, it's only half of the equation. I've come across a lot of self-taught programmers in the past who were excellent, but spent a lot of time re-inventing the wheel out of ignorance, or found it difficult or impossible to communicate their ideas. I've also come across a lot of highly-qualified but inexperienced programmers who wrote totally unmaintainable code and didn't document it.
Well, here in Peru you can probably do better (make more money) if you get a more administration related degree (Business Administration, Industrial Engineering, etc.) and then just get a certificate by Microsoft or Cisco. If you get a CS degree you are more likely to end up being a technician.
Strange how many English Lit. degreed people end up as web developers (myself included) - there has to be some kind of weird connection here :)
As for whether you need a CS degree, it's a clear no from my experience. However, I noticed that my experience with computers in general (I started programming when I was 9 with a Commodore C64) gives me some in-depth knowledge that can make quite a difference: the company I work for has an ongoing policy for hiring apprentices, and I have been able to compare my experience with theirs. In general they have a completely different approach to the subject - they simply don't care about the internals, they just use what they find. The knowledge that I was able to learn by myself over the years by testing a lot of different technologies they still have to learn, and can mostly only learn in theory.
To sum up, I think having a CS degree is not needed of you are experienced, but can be helpful to strengthen your current position. If you are just starting in the business, it is IMHO quite an asset unless you are a wizard :)
However, it is important to remember what a computer science degree actually is. It is the study of computational mathematics. Computer science is not there to teach you how to program. It is to teach you what programs are and how they work from a theoretical stand point.
They are there to teach you things about O notation, and data structures, and all the things in between that allow you to deal with things at a consistent theoretical level. IE: Can you mathematically PROVE your algorithm runs in this time? Not very useful for anyone writing code, but great for those cases where it absolutely must ben proven.
To put it in a practical context lets say you are designing some system, based on requirements. Pre coding. Part of this system is something like say.. a spell checker? How do you actually *write* a spell checker. How do you determine if a word is in your dictionary or not? How do you create suggestions if the word *is* misspelled.
Without data structures and knowledge of some pretty slick algorithms you have to spend a lot of extra time figuring it out. Someone with a CS degree can probably tell you that you could very easily store an entire english dictionary in a Trie tree with a great memory space savings. Your lookup time will be O(n) where n = the length of the longest word in your dictionary. They could then easily tell you that a less memory efficient approach, but more processor friendly approach is using a basic hash, its lookup time is O(1). In real world terms, a worst case performance if 15 iterations is fine, so we choose the Trie tree for the space savings. Away you go implementing it if you already know the data structure. Else you may struggle with it longer. That is where the value of the CS degree comes in.
Something to think on.
Random