Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have a degree in computer science. It has been great for opening doors, getting a job. As far as helping me in the professional field of C# .NET programming (the most popular platform and language in the area I work if not the entire united states on hands down the most popular OS in the world) its hardly useful. Why do you think it helps you as a programmer in your professional career (outside spouting off to prims algorithm to impress some interviewer)?

In today's world adaptation, a quick mind, strong communication, OO and fundamental design skills enable a developer to write software that a customer will accept. These skills are only skimmed over in the cs program. In my mind, reading a 500 page C# book by Wrox offers far more useable a skillset than 4 years of the comp sci math blaster courses. Many disagree. So, why does a computer science degree matter?

share|improve this question

closed as not constructive by Walter, ChrisF May 3 '12 at 12:06

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

55  
"Computer science is no more about computers than astronomy is about telescopes." -- Edsger Dijkstra –  Eric Lippert Mar 17 '11 at 22:18
4  
Memorization is not enough. It takes the education to know how to use Reg Ex and the experience to know when to use it. I would include reading books as part of the education. Job related experience seldom encourages you to do things the right way. –  Dr. Zim Mar 18 '11 at 1:27
10  
It matters when you don't have one –  Aditya P Mar 18 '11 at 7:00
2  
I had a 2.8 too, Pretty average. But we were mostly taught C/Java and some web stuff, No C# stuff. Anyways I think CS is the "next best thing", because CS 4 year programs aren't exactly easy and it does show you can work hard to get the degree. Why does it matter anyways? it gets you the job! –  Mercfh Mar 18 '11 at 14:14
1  
@luis.espinal I question those statistics. I doubt 70% of all code is in C (think of all the silent Fortran, COBOL, PL1, and Rexx ticking happily away). A plurality, certainly, but a vast majority, I am skeptical. There are a lot of embedded devices, but the number of embedded devices doesn't say anything about original source. Once it's written for the first specific device, its generally good for all subsequent devices of the same; and presumably, a lot is reused for close derivatives, whether in the same line of a later revision, or in a different line from the same product family. –  JustinC Mar 20 '11 at 3:32
show 10 more comments

29 Answers 29

up vote 135 down vote accepted

Why a computer science degree?:

  • I worked with a developer who stored thousands of items in a HashTable and then only iterated through the values. He never accessed through a hash. He obviously didn't know how a HashTable worked or why you would use one - a CS degree might help with that.
  • When working with regular expressions, it seems easier for people with exposure to basic automata theory and formal languages to reason about what's going on and troubleshoot their expressions - a CS degree might help with that.
  • A developer fresh from school may be able to decompose problems in various paradigm mindsets (OO, functional, logical) immediately, while a new non-degree developer needs experience before they can do the same.
  • Schools teach computational complexity. Non-degree developers may feel what's best but a formal understanding is sometimes nice, especially when explaining results to a colleague.
  • A degree offers an introduction to many models of the machine - hardware, OS, common data structures, networking, VMs. With these models in the back of your mind, it's easier to develop a hunch where a problem lives when something goes wrong. Again, non-degree developers build the same models but it takes time.
  • Expert guidance through any discipline may help the learner avoid dead-ends and missed topics. Reading is great but it's no substitute for a great teacher.

This is not to say that a CS degree is necessary to be a great developer. Hardly. Some of the best developers I've worked with have no degree. A degree gives you a running start. By the time you graduate, you've (hopefully) written a fair amount of code in various languages and environments to solve many types of problems. This puts you well on your way to the 10,000 hours required to be an expert.

A second benefit is that it shows employers you're able to commit to a long-term goal and succeed. In many companies, I believe that's more important than what you learned.

share|improve this answer
4  
+1 - This makes sense. Expert guidance has probably helped me in ways I do not recognize. I still wonder if 4 years of general education trumps 4 years of industry experience, assuming both developers are equally motivated to learn. There is a certain level of discipline I feel I did not have before the degree, that certainly counts for something. –  P.Brian.Mackey Mar 17 '11 at 19:46
4  
Learning proper terminology and spending a lot of time with other people learning the same material are also benefits that go along with that expensive piece of paper. –  sal Mar 17 '11 at 20:28
65  
On the other hand, I've seen people with degree who still fail at most of this list :) –  Joel Gauvreau Mar 17 '11 at 20:44
1  
Gee they might have heard of graph theory too. That might make partitioning applications into clients and servers, networks, DAGs and trees a bit simpler. –  Tim Williscroft Mar 18 '11 at 1:52
3  
@JustinC - Your assertion "degree holders tend to defend them for any reason because they have them" is one of the fundamental reasons I asked the question. I have seen this blind irrational defense first hand. The opposite also holds true. –  P.Brian.Mackey Mar 22 '11 at 1:13
show 8 more comments

In 40 years, I expect .NET and C# to be nothing more than a grievous pile of legacy code on obsolete operating systems.

But the fundamental computer science concepts will be just as lively as they were when Shannon, von Neumann, Knuth, Dijkstra, Hoare, and the others dug them out of the grounds of formal logic and math...over 40 years ago.

share|improve this answer
23  
+1 - very true, but in 40 years I wont give a damn. –  P.Brian.Mackey Mar 17 '11 at 19:37
2  
@P.Brian.Mackey: I would guess that in 10 years C# will be on the road out, and in 20, it will be more of a memory, and in 30 years from now, it will require grey-hair old code archeologists. People who tie themselves to a given set of tools obselete themselves. I have had the good fortune to read old papers on system software from the late 1970s and early 1980s. Of those software systems, very few are in today's radar. Maybe 1 or 2 (Unix and Lisp). Although today's install base is larger, I expect a similar thing to happen. –  Paul Nathan Mar 17 '11 at 22:51
4  
@P.Brian.Mackey Say what you will, but I plan to still be kicking in 40 years, and 80 years from now too if I have a say in the matter. –  Matthew Scharley Mar 17 '11 at 22:53
2  
@Paul Nathan: To further your point, some of the fundamental underpinnings of programming hail from the 1930s (e.g., en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis ). I wonder if/how we'll be writing code 80 years from now :) –  phooji Mar 17 '11 at 23:24
2  
@phooji (load "legacy-c-sharp-routines" ...) :P –  Mark C Mar 18 '11 at 1:43
show 4 more comments

I use almost all the CS I studied in school (*) every single day at my job. If you want to work in programming language design, search engine optimization, quant analysis, or any similar field, I suppose you could do it without a relevant degree, but it seems like an awful lot of stuff to have to learn on the job. I am not particularly highly educated given my line of work; many of my colleagues have PhDs in computer science and several of them have been professors of CS.

Getting my degree was tremendously worth it for me; it has paid for itself many, many times over both in dollars and in satisfaction.

That said, I thoroughly understand your point. Most people who program computers have jobs that do not require a CS degree; they require, say, a solid community-college-level background in practical programming plus keeping up with current industry trends. And that's fine. You don't need a degree in marine biology to run a successful aquarium store, and I think that aquarium stores are awesome. But it's awfully hard to get a job at Woods Hole if all you know how to do is raise goldfish.


(*) I have a B.Math in Applied Math and Computer Science from Waterloo.

share|improve this answer
4  
I remember one of my CS professors saying something to the effect that only 2% of you will actually get a job where you get to deal with computer science principles on a regular basis. –  red-dirt Mar 18 '11 at 10:33
13  
@el fuser: Indeed; now, an interesting question that is perhaps germane to this discussion is is the purpose of higher education merely to be training for a particular job? I do not believe that it is. Universities are not vocational schools; their function is to create knowledge through research and expose students to that universe of knowledge. That this might give students job skills seems to me to be a side effect rather than a goal. At Waterloo we were explicitly told that we would be taught theory, not practice. –  Eric Lippert Mar 18 '11 at 14:03
1  
The creation of original research in a collegiate setting though, in general and regardless of program, rarely happens prior to being beyond the period of training called a bachelors program. Research happens before that, but generally study of genuinely new material is reserved for those in a masters or doctoral program. In other words, you are often steered away from discovery, but towards some reinforcement of what is already known. Undergrad research is more about the process of research than growth of any particular body of knowledge. Private research has a different goal. –  JustinC Mar 18 '11 at 20:16
show 5 more comments

It matters because technology does not remain static. Computer science is the basis for all digital technology. Most self-taught programmers last exactly one technology cycle because they lack the fundamentals to survive a major paradigm shift. Sure, there are exceptions to the rule, but a strong foundation in computer science greatly increases the odds of surviving a major paradigm shift.

share|improve this answer
4  
I didn't know what a bit-twiddler was until I read Coders At Work. I'm guessing you've survived a paradigm shift or two and are speaking from experience. :) –  ranomore Mar 17 '11 at 20:38
3  
I disagree. It's easy to access resources that teach the fundamental concepts online (and is rewarding to gain the ability to find them on your own). For instance, academicearth.org/subjects/computer-science is a good place to start. Detailed information about newer architectural patterns is freely available for study, see chromium.org/developers/design-documents/…. Often, the freely available materials online are much better and more up to date than what you'd expect from a local college. –  Evan Plaice Mar 18 '11 at 7:18
13  
I think you've got it exactly backwards. A programmer is never done learning. Self taught programmers have demonstrated their ability to acquire knowledge without the need for the formal setting, the externally imposed deadlines, etc. which is exactly what one needs to survive changes in the market. –  Mud Mar 18 '11 at 7:35
2  
(cont) If you're talking about software paradigm shift... What paradigm shift? OOP isn't exactly new, neither is functional programming. Databases have been around for a very long time. Floating point numbers have been standardized since 1985 (IEEE 754). The only major shift I see is the shift to distributive processing systems (hugely networked systems that scale out vs up and programs that take advantage of many core hardware platforms), and the transition to a standardized international character set (UTF-8); both of which aren't really covered in compsci. –  Evan Plaice Mar 18 '11 at 7:43
2  
@Mud and Evan: I guess that you missed the "Sure, there are exceptions to rule" portion of my posting. I am assuming that both of you are young and unencumbered. That dynamic will change as you age. I have been in the field for over thirty years. I have watched a lot of self-taught programmers flame out after the stress of raising a family enters the picture, and the amount of time that one has to learn fundamentals on one's own approaches zero. I would love to have this same conversation when both of you reach the age of 40. –  bit-twiddler Mar 18 '11 at 17:32
show 20 more comments

It depends what you want to do. If your goal is mainly programming business software in the large, where the business problem and practical complexity management issues are the hard part, then yeah, a CS degree isn't going to help much. If, however, your goal is to program stuff where the main difficulty is on the technical end, then a CS degree is more useful. (Though I don't have a CS degree, so I feel like a big hypocrite for saying that, so feel free to add "or self-teaching in CS subjects".)

I'm sure there are plenty of programmers out there who are great at managing complexity, programming in the large and solving common business problems, but would be absolutely lost if you asked them to write a memory allocator, or a parallelism library, or a collections library, or an operating system, or a compiler, etc. I'm sure the opposite exists to a decent extent, too. Both have their place and deserve respect, but a CS degree helps much more on the technical side.

share|improve this answer
show 1 more comment

I don't think a CS degree is an absolute indicator that a person is a good software developer. In fact, I started my career as a programmer with a math degree, but with a strong CS bias (math and CS were integrated in my program of study). I think there are two reasons why it matters, overall.

1 - Because Engineers are not the Front End for Recruitment

Human Resources people are. And while I picture many people rolling their eyes, I say "thank goodness!" What's more important - that you let the engineers make stuff (or break stuff), or that you make them sort through 1000s of resumes and do 1000s of interviews?

So, we have HR people and HR people screen the candidates until we get to a key group that can be screened by engineers. HR people have learned over time that having a CS degree is a pretty strong indicator that the candidate knows something about developing software. Hopefully they also know that writing software for 20 years is a good indicator that the candidate can write software.

2 - Because having some sort of system about learning about CS is better than none

CS is a huge field with lots to know. And it's changing all the time. These days, I can safely say that the 75% of the coursework in my undergrad has become irrelevant to my career. And that my master's coursework from 5 years ago is depreciating rapidly. But when I started, I was glad that I paid a big institution to teach me something about computer organization, networks, good software engineering process, object oriented design, compilers, and the syntax/semantics of a major programming language that was currently marketable.

And I was glad it was in an environment where someone was paid to explain things to me when the book/website/lap project was not innately obvious.

And I was glad that I had access to a laboratory where computer health and the SDE were not my problem - I could more or less lock in and focus on a small part of the problem rather than also having to fix all the tools needed to solve the problem.

And while the courses didn't explicitly teach good communication, I think the only way you can really learn that is by working in teams - which IS a major part of many leading institutions offering CS degrees.

And a schedule with frequent feedback (ie, grades and exams) that let me know whether I really understood what I had been taught.

Those things combine in my mind to be worth more than any book on the subject, but it's certainly not the be all, end all. There's certainly things I would not mind seeing institutions of higher learning improve, and I think that about 10 years after you've graduated, the degree you originally recieved is less important than the work you've done since.

share|improve this answer
add comment

For me, the reason is I know they've been through some rough courses, and didn't give up. Some of the courses like Compilers, Data Struct, Discrete Math(and others) tended to wash a lot of people out of CS programs. Having a CS degree means you worked hard and paid a price(long nights getting programs to work), rather than going out for fun.

share|improve this answer
show 1 more comment

To me it is a question of mindset.

Your mindset defines how you will approach a given problem, and allows you to consider a wider range of opportunities than those not schooled in the concepts.

A typical example is the "Travelling Salesman" problem where you know that it 1) is NP-complete for the general version, so you have to try all possibilities but 2) that if you know more about the problem you can either approximate within a certain limit or say that you know that A-C is always longer than A-B + B-C (which is true for distances but not for prices) allowing you to solve it in less time.

Another example is Numeric Analysis, where you need to know that in order to minimize numeric inaccuracy you must approach your calculations differently than the mathematically straight forward way. This takes theoretical knowledge and is unlikely to be picked up on the way unless you've been explicitly bitten by it.

share|improve this answer
add comment

Really? Wow.

So you are telling me that C# and OOP skills are sufficient and you can devise your own algorithm for randomized sorting and decipher the finer nuances of how to deal with NP complete problems in real life?

C# and OOP are fine, but if you are trying to do anything which is non-trivial logic design then you need the fundamentals of computer science in place.

Dude, you won't even know which C# container to use if your data structures or algorithms skills are not up to the mark.

Lets grow up, now.

share|improve this answer
22  
Easy there, tiger. –  whatsisname Mar 17 '11 at 18:58
21  
"devise your own algorithm for randomized sorting and decipher the finer nuances of how to deal with NP complete problems in real life" ya I can't stress enough how much of my day to day real life job consists of these activites.... /sarcasm –  qes Mar 17 '11 at 19:27
4  
What I am saying is that 95% of the people I work with and have worked with in the past spend near 0 time devising algorithms. I spend the majority of my time making code more concise and easy to read. Very little time is spent on "finer nuances". In fact, I would find it interesting to spend a little time at least sorting up a workflow on a whiteboard...something that I've only done myself. Do you regularly discuss NP complete with your coworkers? What line of work are you in where you need to write custom sorts instead of implementing functional programming languages? –  P.Brian.Mackey Mar 17 '11 at 19:30
3  
@P.Brian.Mackey: Software development is an up or out profession. How many software developers work for your organization that are over the age of 50? As a software developer ages, a CS degree can mean the difference between having a job and being unemployable. While I presently hold undergraduate and graduate degrees in computer science, I received my initial training in this field from Naval and DoD technical schools back in the late seventies. All of the guys with whom I served who did not bother to complete a CS degree after leaving the military are no longer in the field. –  bit-twiddler Mar 17 '11 at 20:33
7  
Why is it everyone seems to blindly accept the assumption that a formal college CS curriculum is required to have any knowledge of CS concepts? Maybe it's a failure of their deductive reasoning. I guess they need more CS courses. –  qes Mar 17 '11 at 21:52
show 12 more comments

I'm supposing you really didn't get too involved with the degree then, just took what you needed to and got out, or went to a school that looked at CS majors as "coders" not "programmers". Also, some of my best/favourite "CS" classes are ones that - at least in my University - are under the Electrical Engineering department. My exposure to various architectures and styles has been ever so important and my degree has facilitated that in a "controlled" environment.

Classes that aren't just algorithms and cutesy fluff:

  • Compilers
  • Operating Systems
  • VHDL / Embedded Systems
  • Assembly and Micro-controllers
  • Software Engineering

And finally a class that beat the crap out of me that was just algorithms and data structures - Artificial Intelligence. There's things that going through the University system will greatly expedite in the learning process, and I would consider what has been learned to be invaluable when job hunting later.

share|improve this answer
show 5 more comments

My opinion is that unless you are applying for "Computer-Sciency" positions, any degree that implies a focus on computer skills is pretty much equivalent.

In fact, many of the programmers I know got a degree in a completely different discipline. The best programmers I know have degrees in Civil Engineering, Linguistics, Economics and Finance.

In the end, once you have some experience your degree becomes a pass-fail test for a recruiter. That is, unless you got it from an impressive school or a post-grad degree it doesn't matter so much what your major was.

share|improve this answer
show 6 more comments

for me and many of my colleagues it hasn't (none of us have had CS degrees)

share|improve this answer
add comment

OK then what about

If you have gone through the following subjects:

a.Computer Architecture and Organization

b.Software Engineering

c.DBMS

d.Basic Electronics

e. Basic Digital Electronic Circuit

f.Microprocessor

g.Compiler Design

Do you think all the above are just for formality.. Do remember the above points makes "good programmer" a "great programmer".

Go through this to read about importance of electrical and electronics subjects

share|improve this answer
add comment

I have a degree in computer science. It has been great for opening doors, getting a job. As far as helping me in the professional field of C# .NET programming (the most popular platform and language in the area I work if not the entire united states on hands down the most popular OS in the world) its hardly useful.

70%+ of code is written in C (as there are more embedded devices than high-level applications). According to popular job searches like dice or the TIOBE index, Java is the most popular programming language for the enterprise (as there are more Unix/Linux back-end servers than Windows servers.) There are more smartphones and tablets (the computing platform of the future) running some variant of Linux or Mac OS than Windows, programmed on anything but C# or .NET.

Look at your router at home, look at your cell phone, look at the computer inside your car, look at the freaking microwave at home, at the controllers inside your home A/C system, inside your phone and your work fax and printer/scanner. Look at the number of computerized appliances (which outnumber windows systems.)

Do you think they are programmed in C#?

If you truly believe that .NET or C# are the most popular platforms in the world, you might want to go back to your CS school and ask for a refund.

Why do you think it helps you as a programmer in your professional career (outside spouting off to prims algorithm to impress some interviewer)?

Maybe because there is a lot more about programming than doing basic development dynamic web pages and enterprise applications? For that you don't even need a BS degree, a AA suffices - I know because I started my programming career with an AA degree and slowly but surely worked towards a CS and then worked through grad school while working full-time as a developer.

There is embedded development, there is device driver development, there is operating systems development, there is algorithm development, signals, communications, network protocols, database engine development, filesystem development, distributed computing, compilers. Not research, but actual work in for-profit organizations. Barring the naturally gifted, one typically cannot hack it in any of these industrial fields without a CS degree (sometimes not even with a BS degree.)

A person that gets a CS degree and pays attention to it knows this. How come you do not?

In today's world adaptation, a quick mind, strong communication, OO and fundamental design skills enable a developer to write software that a customer will accept.

OO came into existence because of CS. And most people who think they do OO cannot even do a good job. Just look outside and look at the crappy state of software (in particular in Java and .NET, not to mention PHP.) A solid CS background (or a graduate degree in some sort of engineering) does not guarantee 100% good understanding of OO and analytical skills, but it typically helps. OTH, not having a basic CS background is typically a red-flag when it comes to OO and analytical skills. We have enough empirical evidence in the industry to back this claim.

These skills are only skimmed over in the cs program.

Depending on the CS program and depending on the student. At least for me, I saw plenty of good courses on design, OO analysis, commercial tools and practices, we had co-ed courses with local companies and internships, corporate-funded projects and research, technical writing, you name it. Sorry, I cannot relate or understand this statement.

In my mind, reading a 500 page C# book by Wrox offers far more useable a skillset than 4 years of the comp sci math blaster courses.

Again, depending on the work you do. Even on the enterprise, I've used my CS to actually fix things or improve. All that involving modeling, architecture, distributed computing, security and high performance, high availability and fault tolerance. I learned all that stuff in CS.

There is nothing wrong with using a Wrox book to get a context-specific, technology-specific skill set. I do so myself. But my CS background gives me the context to work on. Without my CS background, all I would be able to do would to program, to code (which is all I could do when I only had a AA degree at the start of my career.)

Many disagree.

Surprising, isn't.

So, why does a computer science degree matter?

Who do you think come up with google, hadoop, cassandra, or high performance database engines? Who do you think write the Windows OS kernel? Who do you think program the beloved tools you use to do your C# development.

One thing I'm sure of is that the tools you use to do C# development, there is a CS guy behind it.

Whether you need a CS degree or not depends on the type of work you do, the type of work you want to do, the type of job you are capable of doing.

There is a lot of work in the enterprise and web development that does not require a CS degree. I grant that. I also know that the world of programming is a lot wider than just those two fields, with many fields (most of them actually) requiring a CS degree or more.

You have a CS degree, how you do not know that is a mystery.

share|improve this answer
show 4 more comments

There are some basics that I remember seeing in my CS courses that have been quite useful at times. The Waterfall process and its steps have been something I've used repeatedly in my career with some variation for Agile where it isn't quite as rigid in steps but the same steps are there.

Problem solving skills and various algorithmic heuristics can be helpful at times too. There is something to be said for the indirect benefits of a CS degree. For example, learning how to justify an answer to show why something is correct is just one of a few skills I refined in university but I'm not sure how obvious it would be that this is a benefit at the end of the program.

share|improve this answer
add comment

I agree with Thorbjørn Ravn Andersen point regarding the mindset. That is the main thing you develop with a good CS curriculum.

It basically comes down to understanding things like data structures and algorithms. Not that you can't learn this on your own, but a good CS curriculum will provide better exposure.

share|improve this answer
show 9 more comments

Writing

In enterprise software development, it is vital to be able to write code and to write. By that I mean: writing email, bug reports, technical docs, etc. Both writing and coding requires the clarity of thought and appropriate economy of expression.

Between 2 software developers, my bet is that the one with a CS degree from a solid university (strong CS program, and required electives in the humanities) has both skills. (True, this isn't a guarantee: people from the humanities can be great coders and top-shelf writers; lots of CS grads are coding machines who can't write, and so on.)

Reading

A mentor of mine claimed that he could judge developers by what they read. The original post mentions WROX books. In my opinion, someone with a CS degree is more likely to seek out such professional IT books and be able to use them effectively. If one can handle CLR, then one can handle "Professional C#".

Math

Math develops logic, proof, rigor, etc, and the side-effect is that it assists writing. Though most business IT does not require intense math skills, the person with a CS degree will have it when necessary. This is a much better way to go through life than living without it, and wondering what you've missed in school.

share|improve this answer
add comment

I guess it really depends on the quality of the CS program you went through. I do know what you mean, most of the code I write on a daily basis is just standard VB.Net, get the data from the SQL Server, put it on the form, save it back to the database, make some reports. Wash, rinse, repeat. (Very boring at times) The CS program I went through, apart from covering the theory and fundamental knowledge, did teach a lot of practical stuff. We covered areas like software design, database design, and project management. Learning programming languages was the easy part, the design and methodology of creating software systems was what I took away from my college experience. We were given projects based on real world problem, sometimes even designing software systems for other departments on campus.

As programmers we obviously have the ability to learn on our own, its a necessity in our field. I do have to say I'm very glad to have gone through the CS program. My professors were amazing and taught me quite a bit. My classmates were great fun people and we had a lot fun nights in the computer lab. To tell the truth, I kinda miss those days......

share|improve this answer
add comment

It is all in the ability to live vicariously.

If you skip the degree, you probably will have to learn the lessons in a very personal way (aka the hard way). Lack of a degree doesn't mean you will take the harder road of learning by trial and error; however, the degree guarantees you exposure to a treasure chest of previously gained knowledge that others had to earn by late nights, frustrated programming sessions, and generally "doing it the hard way."

The truly excellent person will not discard what others have found to be true, but will instead challenge it until they know the knowledge's limitations, and then play with the "system" of newly gained ideas until they make it their own. It's standing on the shoulders of those who came before, and living out the solutions of years gone by without having to rediscover them.

Of course, a person with a computer science degree isn't always the better candidate. There are those unique individuals who've been led to the stream but (for some strange reason) refuse to drink from it.

share|improve this answer
add comment

I am a 21 year old who has just finished a CS undergraduate. I feel that however great you are in programming, if you are a CS grad, you will be already exposed to various fields. So if you want to learn new stuff, you not be afraid to explore even if it is irrelevant. If you are an expert in a technology or programming language, good. But I don't think you will be adventurous and be willing to look into other technologies. Thats how you get yourself dirty (and quick too). You wont brood that what you explore will be irrelevant since it is not going to help you earn money. (You have already studied a lot of irrelevant things in your CS UG ;) ).
It is the passion in CS that you have after graduating that makes you a Software Professional.
Anybody Agree?

share|improve this answer
1  
You can't make the assumption that someone won't be interested 'looking into other technologies' just because they don't have a CS degree. This is a fallacy. –  WeekendWarrior Mar 18 '11 at 12:05
add comment

Well when I entered in CS, I thinked that wow, I'm real good as I'm and I'm not going to learn anything here... After 5 years, I only learned to work as a team, and some things from engineering that separate me from someone who can write only code and someone who can think on what he does before he codes, in short, it has teached me to think before I even type a single letter in my text editor or ide.

share|improve this answer
add comment

For getting a job using an open source language it does not mean squat. Most companies recruit based on ability rather than qualifications and languages such as PHP have a hobbyist reputation menaing that people can have talent without having ever studyied CS. The only time it helps if you are getting a job using .Net languages as most hobbyists will not want to shell out thousands for a licence only to mess around with at the weekends, hence somebody looking for a first job in C# will probably only have 2-3 years experience.

Of course commercial experience is the really valuable one as it demonstrates your ability to deliver quality code to deadlines.

In conclusion, it gets you interviews for working with non open-sourced languages.

share|improve this answer
add comment

A degree from Collegue or University, means you studied and have some knowledge of C.S., some basic stuff that is required for a real world job, even if you have to learn other stuff by yourself.

Besides, when a I.T. recruiter has to find a Soft. Dev., and 500 applicants send their resume, and have to interview unleast 50 of them, having a degree on your resume, helps both the recruiter, and your chances of getting hired.

(from a Software Developer who studied some H.H.R.R.)

share|improve this answer
add comment

Probably this doesn't help much, but now that I learned assembly and all the knowledge involved I feel a more complete programmer and I'm sure this will happen again when I'll go to the uni. I mean, I mostly use C or VB, I don't need to know what's a wait state in order to do my programs, but simply know what's going on behind my code is great! And knowledge helps you to write better, faster and more maintainable code. A computer science degree gives exactly the knowledge required to write great code in my opinion.

share|improve this answer
add comment

software engineering today is an experimental science not applied mathematics.

Computer science degrees emphasize algorithms, how much of you day job involves implementing or even using novel algorithms and data structures?

How much involves dealing with layers of frameworks and the leaky abstractions? How much is trying to determine what some API actually does - rather than what the docs imply? How much is testing and deciding how to test?

For all that a physics or chemistry degree is much better training than having memorized Knuth

share|improve this answer
add comment

It matters because recruiters have an indicator that you are not completely clueless about what you are supposed to do, but it does not necessarily imply that you really know what you are doing or that you are doing it in a technically convenient way.

There're brilliant people with degrees who love what they are doing and are really good programmers and there're also idiots with degrees who are really bad programmers and don't even know some fundamentals. There're brilliant people without degrees who can develop anything (business software/compilers/an operating system) and there're idiots without degrees who don't know how to use a hashtable properly.

share|improve this answer
add comment

Absolutely correct, computer science degree does not matter much; which is why your only choice should be to get an engineering degree instead.

In interviewing candidates with various backgrounds, the one trait which stands out for those candidates who did not have any degree is this: lack of technical communication skills and lack of discipline. These are fundamental traits learned when getting any science degree (I'd say even more so with an engineering degree).

With most things being equal (and a single round of interviews often comes up with "about equal" candidates), I would hire the person with engineering degree first, the computer science degree second, and the no-degree third. However, there are ways to make things very unequal in the comparison, so that anyone can beat out even those with a pedigree degree - but that's a separate question isn't it?

share|improve this answer
add comment

For a programmer ... it doesn't much (other than maybe opening doors to interviews, as you said).

For a CS job (research, algorithm analysis, formal language thoery and design). You're unlikely to learn these things in any other non-math based program.

//Disclaimer: my degree is in IT so I had to go back for all of those other courses to perform in my line of work.

share|improve this answer
add comment

I have a computer-related degree. What helped me get my first computer role was the fact that year 3 was a work placement as an IT Administrator. I recommend work placement schemes within education.

share|improve this answer
add comment

protected by Community May 22 '12 at 5:46

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.