views:

298

answers:

10

I'm surprised by the number of general education classes computer science students must complete to get their bachelors. For example, I must take:

  • three English classes
  • two history classes
  • public speaking
  • economics
  • biology

I hardly think these general education requirements are unique to the university I attend. My question is (for those of you who have degrees), in what ways have these general education requirements improved your career as a programmer?

+1  A: 

The communication skills are vital to a successful career in most application areas. The economics would potentially useful (if well taught) for a business-applications developer. The biology might provide interesting metaphors and a different perspective (or not).

I'd caution against becoming to narrowly-focused, but I'm not going to be hard-nosed about it.

joel.neely
+1  A: 

You don't need those to program. You "need" those to communicate effectively with your coworkers and clients. If you want to take only programming classes you should probably go through an associates program instead. Personally I can't attest that those types of classes have actually helped me in my work place but they have broadened my mind in general.

Joe Philllips
+13  A: 
  • three English classes

Communication is far more important than ability to program. Otherwise you'll consistently program the wrong things. A person that interviews as a capable programmer with excellent communication skills wins the job over the expert programmer with mediocre communication skills in most cases.

  • two history classes

I can think of reasons in my life how this has been helpful, especially when communicating with others (shared cultural knowledge, comparisons to enhance concept discussion, etc) but I think one can be a competent programmer without knowing a lick of history.

  • public speaking

The timid programmer is never happy doing work he can't explain or control the direction of - and this requires public speaking skills.

  • economics

I can't tell you how much a sound understanding of economics helps in programming - the allocation of scarce resources indeed. It's very, very, very useful to understand how this works. Not only that, but frankly you can't make a living in a capitalist economy without understanding how it works - you'll get taken for a ride if you don't.

  • biology

Same kind of thing as economics - biological systems have many lessons for computer science, especially in the areas of AI, fuzzy logic, etc. Anyone who's done a brute force algorithm in parallel understands how a bacterial culture works. But this is one where a good programming might not know this and it won't negatively affect them.

Keep in mind that university isn't just to get a degree and kick you out into the world.

Also, keep in mind, that most programming jobs involve something other than the business of software development. You might end up coding software for that molecular lab and understanding biology suddenly becomes pertinant.

These basic courses give you a grounding, or foundation, on which you can move around in different jobs and understand how things work. A lot of it comes back to communication - these diverse fields represent different processes, and having knowledge allows you to understand and give analogies that you might otherwise struggle with.

Adam Davis
Amen to all of that. Great answer!
Drew Hall
Perhaps you went to school before I did, when high school actually taught you something useful. I can't say that any English class I ever took taught me the first thing about how to communicate with people.
Ed Swangren
Bah ... what a borrrrrrrrring, correct, sterile answer!
Hamish Grubijan
+5  A: 

These general courses may not have made me a better programmer, but they have definitely made me a better person.

Communications skills are important regardless of the profession, but maybe more so for programmers who don't get out much.

sykora
+1  A: 

In my first two years of my Computer Science degree, I only had to take 9 courses, out of a possible 20, that are classified as 'computer science'. The rest are either electives taken from outside the CS department or other required classes (Statistics and Calculus immediately come to mind).

It is supposed to give you a variety of ways to communicate and to practice communication in different ways.

Not only is this a useful skill for the real world, but you probably don't want to become one of 'those people' who don't have anything interesting to talk about and only know things related to Computer Science.*

*No offense to those who think they fit into that category.

Nick Presta
+1  A: 

Remember that university is more about learning to learn; you'll acquire skills that will allow you to grow and adapt to changing technologies and practices.

By taking different courses, you're exposed to different aspects of our world, and different ways of learning about them. Things like time management, problem solving, communication, etc, are all key to being a successful professional. If you truly enjoy computer science, then your programming skills will develop naturally in the course of your career - it's the other courses that you might not think belong in a Bachelor's comp sci degree that will help you to do what you enjoy doing!

Imagine writing a program that helps biologists in their research, for instance. That first-year biology course suddenly seems that much more useful.

Charlie Salts
A: 

This video by Alan Kay is long, but very interesting. Alan Kay, in case you don't know, is one of the inventors of Smalltalk, and has been at the forefront of the software world for decades. In this lecture, he talks, among other things, about how valuable study of the arts and humanities are for images and analogies that feed the process of creating useful software. You also might look at this coding horror blog entry that cites an MIT grad saying he used nothing he learned at MIT in his work. Thinking that your time is best spent on computer science stuff is a serious misapprehension, IMHO. I graduated in 1981 and all I ever used from what I learned in school was Hex arithmetic, and I haven't used that much in the past two decades.

Leonard
+3  A: 

The general education is part of what the university experience is about. If all you were expecting was to learn how to program, then that's just job training, and you should have gone for a two-year degree at a technical college. A university offers more than just job training.

If all you learn is how to program, then what will you write programs about? Unless you're planning on writing compilers and other developer-support tools, you'll need to know about something else. I'm pretty sure the journalism program at my school required its students to have a minor or a second major. That ensured that its graduates would be able to write about something, even if they didn't end up getting a job on that particular beat. I think computer-science programs should have a similar requirement.

If you take the right science classes, you suddenly become a much more attractive hiring prospect for various medical-technology companies. Maybe something from the Linguistics department will count toward those English classes; have any interest in natural-language processing? Even if they don't count, and you end up taking 18th-century British literature, you will come out of it educated; worse things have been known to happen. There's more to shared cultural experiences than what's found on YouTube.

And heck — you might even take a random class to fill out your schedule and discover a passion you never knew you had, and then programming becomes just a hobby. Nothing to be afraid of.

Rob Kennedy
Your quotation "what will you write programs about" is profound to me. It hits home that most programs are written to solve very real problems. Frequently these problems come from areas other than CS.
Barry Brown
+1  A: 

Those classes did not help my career at all. Then again, the comp sci classes didn't either. Except for the fact that I got a diploma when I graduated, which is what employers look for. 100% of the skills I use as a professional software developer come from real world experience.

recursive
A: 

I would say it depends on the nature and quality of the classes. In my highly subjective personal experience, those "general education" classes tend to lack analytical approach ant therefore to suck. My classes of history and native language were all about memorizing a set of dates and a set of rules respectively, as far as I can remember (and, by the way, that's all I can remember about them). Useless except for your memory training. While at the same time I read more analytical books on the same subjects, and those were both interesting and mind-broadening, even if not ever applicable in any kind of practice.

Headcrab