I had another opportunity to speak to a group of students at Virginia Tech on Monday. I was on a 5 member panel talking to freshman "General Engineering" majors about computer science. General engineering majors haven't yet chosen a specialty such as electrical engineering, computer engineering, etc. The purpose of the panel was to talk about the CS major. The students filled out a survey before the session about their current thoughts on the computer science major and if they were interested in the major. The majority, like 99%, were not interested in CS. The two major themes of the survey were:
1. Computer Science is boring
2. They didn't want to sit at a desk all day.
The other members of the panel represented IBM, Lockheed Martin, and Eastman Kodak. Although I really liked all of them, they all managed to crack me up at one point or another. They tried their hardest to explain that computer science wasn't boring and you don't spend all day coding (one guy said 30 minutes / day was the average). I didn't say it, because I wanted to get invited back, but if you need convincing that CS is a great major, please major in something besides CS.
The best computer scientist could spend all day in front of computer and love every minute. If my programmers only spent 30 mins a day programming I would be an unhappy person. I don't know what goes on at IBM, but at a small nimble company your programmers should be coding / debugging at least 6 hours a day. The other 4 hours are for the meetings, designing, etc. The point I'm trying to make is that you should have a passion for computers, you shouldn't need to be convinced or talked into the computer science major. Sure, I wish there were more CS majors, but on the other hand, people who aren't passionate about CS won't make good developers. And let's face it, that is what CS is all about. Despite how often some professor tells you that CS is more than programming, that's not the real world. CS is about programming, it's about writing great software, and writing it as quickly as possible, with as few defects as possible.
Wikipedia lists the following fields in computer science:
* 4 Fields of computer science
o 4.1 Mathematical foundations
o 4.2 Theory of computation
o 4.3 Algorithms and data structures
o 4.4 Programming languages and compilers
o 4.5 Concurrent, parallel, and distributed systems
o 4.6 Software engineering
o 4.7 Computer architecture
o 4.8 Communications
o 4.9 Databases
o 4.10 Artificial intelligence
o 4.11 Soft computing
o 4.12 Computer graphics
o 4.13 Scientific computing
11 of the 13 fields require programming. CS is about programming, don't let the recruiters fool you. That's why it's important to find a job where you are working on interesting projects that are actually going to be released.
If you want to find people who will be great at computer science, you need to start at the high school level. I'm convinced that students who take any type of programming class in high school have a huge advantage in college. If you want more females to major in CS, start teaching them CS at the high school level. This panel would of been great for high school students, not for college freshman.
