So my recent announcement of switching my Computer Science Minor to my Major and vise versa has naturally brought this question up. I try to think of it like this- if you had the option of being in the band or managing the band…which would you choose? The musician in me likes the appeal of the creative side over the business side. I’ve also done some research where companies like their IT managers to come from the Dev side because there is a deeper understanding of what’s going on.
I also found a couple of great articles that help explain my reasoning behind it:
An Introduction to Computer Science
By Eric SuhReader, this is Computer Science. Computer Science, this is the Reader.
Well, now that you’ve met, I’m sure that you will both be good friends. First, however, I think that you’ll want to know something about each other.
Theoretical Computer Science has its roots in mathematics, where there was a lot of discussion of logic. It began with Blaise Pascal and Charles Babbage in the 1800’s. Pascal and Babbage eventually tried to come up with computing machines that would help in calculating arithmetic. Some of them actually worked, but they were mechanical machines built on physics, without a real theoretical background.
Another person in the 1800’s was a man named George Boole, who tried to formulate a mathematical form of logic. This was eventually called Boolean Logic in his honor, and we still use it today to form the heart of all computer hardware. All those transistors and things you see on a circuit board are really just physical representations of what George Boole came up with.
Computer Science, however, hit the golden age with John von Neumann and Alan Turing in the 1900’s. Von Neumann formulated the theoretical form of computers that is still used today as the heart of all computer design: the separation of the CPU, the RAM, the BUS, etc. This is all known collectively as Von Neumann architecture.
Alan Turing, however, is famous for the theoretical part of Computer Science. He invented something called the Universal Turing Machine, which told us exactly what could and could not be computed using the standard computer architecture of today. This formed the basis of Theoretical Computer Science.
Ever since Turing formulated this extraordinary concept, Computer Science has been dedicated to answering one question: “Can we compute this?”This question is known as computability, and it is one of the core disciplines in Computer Science. Another form of the question is “Can we compute this better?” This leads to more complications, because what does “better” mean?
So, Computer Science is partly about finding efficient algorithms to do what you need.
Still, there are other forms of Computer Science, answering such related questions as “Can we compute thought?” This leads to fields like Artificial Intelligence.
Computer Science is all about getting things done, to find progressive solutions to our problems, to fill gaps in our knowledge. Sure, Computer Science may have some math, but it is different from math. Computer Science is about exploring the limitations of humans, of expanding our horizons and having some fun at the same time.
Here is an article by Bjarne Stroustrup, the developer of the C & C++ Programming languages:
Why Learn to Program?
Five years ago, the answer to “why learn to program” may have been simple: to get a nice, cushy job with beanbag chairs and a six-figure salary. Recently, the job market for programmers has lost some of its previous luster–no longer can anyone and his dog start a tech company, get venture capital, and pay programmers a combination of stock options and worth millions and a high salary.
This seems to have taken its toll on the number of prospective programmers; at some colleges, intro computer science classes are at all-time lows in attendance. This is a real shame because programming isn’t really about making the big bucks. Though you will certainly be well paid if you are very good, your doctor friends are unlikely to be jealous of your finances once they pay off their medical school loans.
They will, however, be envious of the intangibles.
You Can Play God
When you program, you are a creator. You go from a blank text file to a working program with nothing to limit you but your imagination (and maybe some issues like how long your program takes to run). Programming is like having access to the absolute best set of legos in the world in almost unlimited qualities. Even better, you can get all of your building materials completely for free (once you own a computer) on the internet. Amazing!
It’s also great fun to see someone using something that you made. Your ability to improve your life and the lives of your friends and family is limited only by your ideas once you can take full control of your computer. Moreover, your work can be extremely high quality because the limiting factor is not manual dexterity or other non-mental attributes. If you can understand a programming technique, you can implement and use it.
Automate Away Daily Drudgery
Programmers are famous for being lazy–in fact, being lazy is one reason people are drawn to programing. After all, why do something routine and repetitive when you could have your computer do it for you? Programmers have written all sorts of simple-to-use tools that make life easier for them–especially tools to manage the complexity of creating software (for instance, tools to help keep track of all the ways of making a program, or debugers to help improve their understanding of a running program).
But more than that, every programmer has a collection of simple tools that he or she uses on a day-to-day basis, from custom calendar reminder programs to processors for large data sets (especially useful for scientists!). Indeed, the physics community has a history of writing powerful tools that make their lives easier–one tool, HTML over HTTP, created by Tim Berners Lee, eventually became the world wide web. It was originally designed by a physicist programmer coming up with ways of simplifying his life.
Improve Your Computer Literacy and Know the Answer to the “Why” Questions
People are often frustrated by technology when it fails. Although operating systems such as Windows have become much more stable, there are still many security holes exploited every day. For a non-programmer, these issues are mysteries: the machine that never makes mistakes is full of problems, and who knows why?
Programmers, on the other hand, are familiar with the limits of the machine–what happens inside the computer when it takes several minutes to open large files, why a particular security hole is a problem, and why it’s so difficult to get large-scale software projects right.
They understand it because they’ve dealt with most of these issues in their own programs and work with the “stuff” of the machine (to varying degrees across different programming languages). This can lead to some exciting finds, such as realizing how you can earn thousands of dollars in Windows solitaire set to Las Vegas style. Maybe not as good as earning real money, but how many of your friends have made $32K on under an hour playing cards?
In sum, programming lets you work with your mind to free yourself to create things that are interesting or useful instead of being limited by the confines of what others have done before, and even when using those other things, you’ll find that you can better appreciate and understand them.



