62

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?

15
  • 60
    "Computer science is no more about computers than astronomy is about telescopes." -- Edsger Dijkstra Mar 17, 2011 at 22:18
  • 1
    @Dr. Zim BDD, DDD?
    – Dave O.
    Mar 17, 2011 at 23:44
  • 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. Mar 18, 2011 at 1:27
  • 10
    It matters when you don't have one
    – Aditya P
    Mar 18, 2011 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!
    – user6791
    Mar 18, 2011 at 14:14

29 Answers 29

135

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.

13
  • 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. Mar 17, 2011 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, 2011 at 20:28
  • 65
    On the other hand, I've seen people with degree who still fail at most of this list :) Mar 17, 2011 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. Mar 18, 2011 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. Mar 22, 2011 at 1:13
89

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.

10
  • 28
    +1 - very true, but in 40 years I wont give a damn. Mar 17, 2011 at 19:37
  • 3
    @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. Mar 17, 2011 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. Mar 17, 2011 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, 2011 at 23:24
  • 3
    @phooji (load "legacy-c-sharp-routines" ...) :P
    – Mark C
    Mar 18, 2011 at 1:43
38

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.

8
  • 5
    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, 2011 at 10:33
  • 16
    @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. Mar 18, 2011 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, 2011 at 20:16
  • 1
    The day that the best jobs no longer require a degree is the day universities no longer have students to support their programs. Mar 22, 2011 at 1:07
  • how often does Anders use his ;) Apr 25, 2011 at 10:37
23

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.

25
  • 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. :) Mar 17, 2011 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. Mar 18, 2011 at 7:18
  • 14
    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, 2011 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. Mar 18, 2011 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. Mar 18, 2011 at 17:32
14

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.

1
  • 1
    Why? CS is all about solving the complex problems, whatever the nature of a problem is. CS should be useful even if you're not programming anything at all - it is a descendant of a forgotten but still essential cybernetics.
    – SK-logic
    Mar 18, 2011 at 10:06
12

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.

12

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.

1
  • +1 - lol, I can't argue much with this. Though, I loved discrete math. Had a great professor who did lots of Yoda impressions. Mar 22, 2011 at 13:15
10

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.

9

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.

17
  • 24
    Easy there, tiger. Mar 17, 2011 at 18:58
  • 24
    "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 Mar 17, 2011 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? Mar 17, 2011 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. Mar 17, 2011 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. Mar 17, 2011 at 21:52
6

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.

5
  • What is your definition of "coder" and "programmer"? To me, these can be the same, and are in contrast to "computer scientist".
    – Mark C
    Mar 18, 2011 at 1:45
  • Coder just writes the code, doesn't necessarily think about different design paradigms or thought processi that are applicable to making better code. Programmers actually think about the code that they write, and approach it from a top down perspective instead of a bottom-up code first perspective. Mar 18, 2011 at 5:47
  • What is your definition of "code monkey" and "programmer"? The programmer can think on ways to solve the problem that the code money can't...
    – Coyote21
    Mar 18, 2011 at 9:56
  • Passion isn't awarded by a degree. Its just part of who you are. Mar 22, 2011 at 13:19
  • @P.Brian Sometimes it just so happens though that your passion awards a degree, and is further spurred by the attainment of said degree. Mar 23, 2011 at 1:45
5

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

0
4

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.

6
  • One of the best programmers is an economist that works exclusively in Excel/VBA and R. He has done some amazing things in excel.
    – sal
    Mar 17, 2011 at 20:32
  • @sal Writing things in Excel and R doesn't require a CS degree. Writing Excel or R most likely would.
    – Alnitak
    Mar 17, 2011 at 21:55
  • @alnitak - Writing Excel or R doesn't require a CS degree either. That's kind of the point of my response and sal's
    – JohnFx
    Mar 17, 2011 at 22:38
  • @JohnFX: I graduated with Latin honors from one the top-twenty CS programs in U.S., and that credential alone stills gets me through the door (I also hold an MSCS from another reputable school). I started out in the field as an enlisted computer operator and programmer straight out of high school. I received my initial computer systems and software development training from the U.S. Navy and the National Security Agency; therefore, I worked in the field without a BSCS for a number of years. All I can says is that it was literally like the heavens parted when I completed my BSCS. Mar 18, 2011 at 18:29
  • @bit-twiddler - is that meant to support or rebut my answer? It seems like it supports my final assertion that it matters if you have a post-grad or big name school degree.
    – JohnFx
    Mar 19, 2011 at 2:42
3

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

3

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.

4
  • TIOBE is crap for determining how much a programming language is used. It's a measure of how popular a given language is on the internet (in terms of number of references), not in terms of lines of code written. Mar 20, 2011 at 14:44
  • Due to its language-specific variabilities, LOC are irrelevant across programming languages, and thus cannot be used to measure programming language usage across industries. And the popularity of language searches on the internet act as a partial proxy for the depth and interest of usage (or lack thereof)... if you are aware of the inevitable bias. By itself, **the TIOBE index mean nothing - only a fool would think otherwise; and only a fool would think that that what I'm stating. Mar 21, 2011 at 13:06
  • When taken in addition to other indicators (such as job searches and product type development), it helps in estimating trends in technology usage. In other words, it is useful or useless depending on what you use it for, how you use it, and with what other indicators it gets combined with. Mar 21, 2011 at 13:07
  • My point is you seem to be using that index to make a statement about the use of a programming language, which is not what that index measures. I misspoke when I said LoC written -- but there's no good way of saying "amount of code written" which is what I meant. TIOBE is a popularity contest, and in that race Java is going to blow away everyone else for as long as it's the linqua franca of introductory programming courses. (Not because that means those students don't know anything else; but because students are usually louder than professionals. (i.e. yours truly) Mar 21, 2011 at 14:28
1

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.

1

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.

9
  • There are other subjects that only CS and computer engineering majors tend to learn such as computer organization and computer architecture. Learning how to build computers from sequential and combinational logic makes one a better software developer because it gives one insight into what is really going on inside of a computer. Furthermore, the first programmers to work with a new processor need understand concepts such as hierarchical memory and I/O, pipelines, block-set associative caches, control units (microcoded and hardwired), and the difference between scalar and vector processing. Mar 18, 2011 at 1:42
  • How will collegiate study of CS provide better exposure than in a lab where it really matters with a qualified mentor who knows not only how it is supposed to work and how it actually works?
    – JustinC
    Mar 18, 2011 at 2:34
  • @bit Agreed. Yes, my answer is rather glib. It was intended to be that way for a reason. Mar 18, 2011 at 4:51
  • @justin I'm not quite sure what you're trying to say. How many programmers work in a lab, let alone with qualified mentors? Mar 18, 2011 at 4:57
  • @JustinC: One learns how things work in a lab (technician level). One learns why things work in upper-level computer organization and architecture courses (engineer level). If you purchase a couple of upper-level college textbooks on computer architecture and computer organization, you will see what I mean. Mar 18, 2011 at 5:23
1

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.

1

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......

1

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.

0

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?

1
  • 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. Mar 18, 2011 at 12:05
0

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.

0

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.

0

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.)

0

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.

0

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

0

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.

0

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?

-1

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.

-1

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.

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