Is It A Good Thing That Computer Science Is 'Cool Again'?

from the maybe-not dept

Computer science is cool again. At least, that's what the headline at Network World says. Apparently, CS enrollments are up for the first time in six years, driven by "teens' excitement about social media and mobile technologies." I'm a CS grad student, so you might expect me to be excited about this development, but I'm not actually sure it's such a good sign. It's great that there are more people considering careers in the IT industry, but I worry about people going into computer science for the wrong reasons. In my experience, if your brain works a certain way, you'll love programming and will have a successful career in the software industry. If it doesn't, there probably isn't much you can do to change that. So I'd love to see more kids explore CS, but if, after taking a couple of classes, they're not sure if CS is the right major for them, then frankly it probably isn't. If you don't enjoy programming, you're almost certainly not going to be a good programmer, and you're not going to be either successful or happy in that career. The fact that you like Facebook or your iPhone definitely isn't enough reason to be a CS major.

I think it would be better if colleges focused on expanding the computer training that non-CS majors receive. Almost every technical field involves manipulating large datasets, and so the ability to write basic computer programs will be a big productivity boost in a wide variety of fields, from economics to biology. Most people aren't cut out to be full-time programmers, but lots of people could benefit from a 1-semester course that focuses on practical data manipulation skills with a high-level scripting language like Perl or Python.

Reader Comments

Couldn't agree more

Most people aren't cut out to be full-time programmers, but lots of people could benefit from a 1-semester course that focuses on practical data manipulation skills with a high-level scripting language like Perl or Python.

I wish this was something some colleges/universities did. After learning Perl, I saw on just how much I was missing out on. Now, I'd argue I can get by generating, examining, and data mining large data sets (both numeric and text) with a text editor and interpreter alone.

Agreed

After teaching software for many years, more than 80% of people passed the software exams and projects, but only 20% are any good i.e. have the logical thought process and enjoy what they were doing. They were easy to spot as marking their assignments was a pleasure. Others got through by determination or whatever drives students to succeed.

Software writing is all in the approach to the package and has very little to do with the actual coding. Those who sat at a computer and started typing code as soon as an assignment was given were mediocre to average at best.

Re: Agreed

Those who sat at a computer and started typing code as soon as an assignment was given were mediocre to average at best.
My friend and I would always do that right after class.
But it was a always a friendly little competition to see who could get done first. We really enjoyed it.
I do enjoy the coding process and problem solving.

Agreed...

I came through CS with just about the last group of the original "CS is cool" wave, right about the time that the tech bubble burst. All the decent schools were so crowded that you had to have a perfect GPA and perfect test scores to get into the CS major, and if you did, all the classes were so crowded.

During orientation, we were told to expect that our four year bachelor degree would take five and a half years, mostly because you could never get the classes you wanted such that you could fit the whole program into four years. At least, not without doubling or tripling up the hard classes, which is just foolish to attempt in CS.

I would say that a good 80-90% of those people had no talent at all. They were constantly lost, had no sense of efficient logic, no sense of code readability, no creative problem solving skills, and otherwise just got by on sheer perseverance alone. Most of them end up as "implementors". They are told exactly what to make and how it should work, and the push through it.

They are a far cry from the few of us capable of actually designing, building, and debugging systems which are complex and still efficent.

Re: Agreed...

I agree as well...I can remember well my CS classes. There were probably 2-3 other people in the room who actually understood the material or even seemed to grasp the problem solving aspects of programming.

Honestly, I'm pretty much self-taught. I just read the text book in about two days, messed around with stuff and taught myself. Early on, I had a tendency to try and bite off more than I could chew. I would try and use the fanciest concepts that I could dream up, stumbling upon capsulization pretty much just from learning about functions (man, I thought function pointers in C/C++ were the most amazing things ever for a while...I still think so, but I like the abstraction placed on them in some higher-level languages). I always would get hung up trying to debug my program because of those 100,000 extra lines of code that I was writing where I was just over the horizon of grasping the concepts.

Experience has helped me get over that, but I still look back and wonder how many of my classmates actually have become good programmers...some of them couldn't code unless, as BillDivX mentioned, someone tells them what to do. I have a co-worker like that. He's good enough after that, but he's not gonna figure out anything on his own.

Personally, I feel that I'm gifted at algorithms, but I have a job as a code-monkey for now. I kinda hate the idea, but it's definitely changed my coding habits for good and given me more discipline. Breaking into a graphics algorithms field will have to come with time. Besides, landing a job your Senior year in college is hard enough. I'd say that I was really lucky to get anything (Nebraska is not really a technological epicenter of the world - it's the corn-husker state...what can you expect? I guess I could move back home to Texas).

My point is that I do agree with BillDivX, but I think that the ranks get quite mixed in the real-world...I think plenty of those "untalented" people end up in the jobs that others of us have (or at least, think we have) the talent for and would love to have ourselves. O well, time and patience may remedy that...or at least help ease the pain of it all.

Look to math performance

Math is a great indicator of someone's potential as a programmer. If you hate working your way through a new algebra problem (I'm talking early high school algebra), you are probably going to hate writing code. If, on the other hand, you love the way numbers yield to logical manipulation, and you feel a sense of satisfaction upon figuring out the value of x or whatnot, then programming will be a joyous discovery for you.

At least that's how I've always felt, but maybe I'm wrong. Anyone out there hate math, but love programming?

Re: Look to math performance

At least that's how I've always felt, but maybe I'm wrong.

Speaking as someone who was the only junior in his high school's Calculus II class, I think you're spot on. You don't have to be a math genius to be a good programmer, but I don't think you can be a good programmer if you hate math - there are too many similarities between the two, as you've pointed out

Re: Look to math performance

True, but I think that the best software designers and debuggers are actually artistic persons who are also gifted at math. The math-oriented people are exceptionally gifted at applying solutions to problems, but it's usually the creative ones that come up with GOOD solutions...also on that note...you don't have to draw, sing, paint, or act to be creative. I've known plenty of good mathematically gifted people who had creative solutions to math problems or were just good at finding a solution that may or may not have been textbook, but they found it. I'd say there's a lot of creativity in that too - it's just combining the stuff you already know with new knowledge to come up with something else.

Re: Look to math performance

Here's one! I always screw up if I'm just manually going through steps in a meaningless, abstract algebraic equation, but I love word problems and geometric proofs. It's not numbers that make you a good coder, it's logic, and the ability to set up equations. If you are going to judge CS ability by math tests, make sure the tests are all word problems.

That said, I've been coding for 25 years, professionally for 11, and I love the crap out of it!

Re: Re: Look to math performance

Arithmetic is to mathematics what spelling is to writing. There are many, many authors (and journalists) out there whose spelling is weak.

You are right, logic and problem solving skills (breaking a large problem into consumable chunks) are key to being a good programmer. It just so happens that most people start developing those skills in "math" classes which, in middle and early high school, are actually "advanced arithmetic" classes.

if, after taking a couple of classes, they're not sure if CS is the right major for them, then frankly it probably isn't.

I agree completely, except for the "probably" at the end.

The kids who will do good in programming will take CS whether it's "cool" or not. They're the ones who will teach themselves to program on this new "Turbo Pascal 1.0" from some startup called "Borland" after convincing their parents to shell out $2k for a new Kaypro II. They'll ace the AP Computer Science exam without ever taking a programming class in high school. And later on in life, they'll have a wife that gets upset that they spend too much time in the evenings working on their hobby coding projects. :)

From the first time I ever used a computer (an old Osborne "portable" that probably weighed 30 pounds), I simply *knew* that that's what I wanted to do with my life - to the point that I never had (and still don't have) a Plan B.

What About Actual Computer Skills?

While I think more people getting into CS is good to some extent, I would love to see more people that can actually build standard desktops and install Windows without hand-holding get into the field.

Oh, and passable spelling would be great, too.

Most of my friends in the major could barely write reports, let alone somewhat readable comments. Those same friends also tended not to have a clue how to snap together a desktop computer (because it seriously isn't that hard, so long as your motherboard manufacturer gave you a good header pin-out, of course!)

Re: What About Actual Computer Skills?

Why have people build "standard desktops" and (worse) "install Windows"??

Personally, I'd rather the people who take up CS write OSes and software that don't need users "to install without hand-holding".

These are (artificial) thinking machines. They should adapt to our skillsets. These are the first tools we've developed that should know how to work for the user, rather than force the user to understand the tool.

IMO, it makes no sense that people should learn how to put together a machine that can be mass manufactured for under $200.

Should some people learn those skills? Sure, those people who are going to create and repair hardware should. And those going into programming should have a decent understanding of the environment where their softwares will run.

But I see no benefit from having everyone learn the internals of computers. This would be akin to having everyone learn how to repair a car engine. It would be a massive inefficiency for everyone to learn the exact same skills.

Not for everyone

Another CS grad here.

My time in college and since has shown me four groups of people:

A lot of people, many of them very smart individuals, just don't have the ability to put themselves in the place of the computer (or system) in the manner required to be able to build good programs. A partial CS eduction might still benefit this group for a career in technical writing or even IT management.

Other people (again, many of them very smart) just switch their brains off when they sit down in front of a keyboard and monitor. These people are the stuff of tech support nightmares. They can use a computer, but only if the programs and hardware they rely on extremely well put together. Thankfully, as computers become more and more a part of daily life this group is getting smaller. That also indicates that if you bang them over the head with it hard enough, there just might be hope for them.

Then there are normal people. Yes, they do exist. With hard work and study, these people can make it through a CS program and come out the other side as productive graduates that would be a great addition to almost any team. It is a lot of work, though. For many of them, the rewards just aren't worth the costs.

Finally, you have the born programmers. A person from this group just 'gets it' from day one. They understand how a program is put together and why, and know how to assemble code that accomplishes the task. Often these are very smart people, but some of them are pretty dumb, too.

The main thing is that it's the manner in which you think that is important, not necessarily good you are at thinking.

Now, finally, to the point. I don't think it's a bad thing that more people are applying to CS programs. The things I've described above are not new, and over the years schools have become pretty good at weeding out those who are not well-suited to the discipline. Those who shouldn't become programmers normally learn this pretty quick.

Confused... why is a CS degree only good for coding?

I have an undergrad CS and an MBA. I help government agencies develop and implement enterprise systems. The CS degree was instrumental in helping me understand the technical implications of business decisions. So, to me, coding apps is really just one aspect of the broader IT career environment.

And was I a great coder? No, but I think I was pretty good. But I would probably agree that only a small percent of the CS grads are really good coders. However,only a small percentage of English majors are good writers so, I don't really see the point here.

Have to agree with Sneeje. I am cs grad but didn't care for the coding. I got the ideas behind it but it just wasn't for me. It seems everyone is taking about programing instead of cs as a whole. I like getting a new script that helps me with some networking but i don't think it would be what i want to do full time. Those freshman VB classes definitely weren't my favs but it at least game me and idea of how it worked. It also help other switch there major so something more to there liking ;)

15 years ago this happened... and it wasn't about "excitement about social media and mobile technologies"... it was about dollars... and it led to a decade of 'real' IT professionals fighting for jobs with McAdmins... eventually, the number of letters after your name stopped being a default measure of your IT worth...

By comparison, I much prefer people actually interested in technology getting into the field.

Programming...

Being a programmer was probably always the second option for me, behind being a musician.

Unfortunately for the former, I never really had much in the way of resources to use for too long - (the only computers I had for a long time were various kinds of Sinclair Spectrum) - and it was only in the past 5 years that I even got a PC. (I had a couple of Amiga's in between). (And I got that for music instead).

I remember learning Sinclair basic and finding it pretty easy, but never had any luck in finding some good guides for using machine code programs at the time. Later on I took a basic programming course in C, which was enough for me to decide I could do it if I really wanted to, but since I didn't have a computer at the time, I left it alone and haven't bothered with it since... Now I'm just waiting for a better computer (again) for my music...

Work With Real Code

As a Computer Science undergrad, half of my learning took place outside the lecture halls anyway. I'm not sure what it's like nowadays, but in my time (around 1980), there was a definite disconnect between what some of the lecturers were teaching and how the computer systems actually worked. The theory was useful, even essential, but it didn't really make any sense until you could put it into practice.

Nowadays, you can learn so much about programming by looking at real, working code written by other people. Put a Linux distribution on your PC, and have a play with it. Find a program you like? Go look at its source code. Maybe it's buggy, or doesn't quite have the features you want? Why not try fixing the bugs, or adding the features? It's a whole lot less effort than writing your own program from scratch. Plus you get the satisfaction of other people using stuff you've written.

So Wrong

This is so wrong. Just because someone doesn't like programming does not mean they can't have a successful career in the CS field. I recently graduated from the University of Maryland with a Computer Engineering degree and some of my best friends there hate coding. However they've gotten some pretty good jobs in other aspects of CS. It's a great background to have simply if you want to go into management and oversee programming projects.

Following the money...

Lately I've noticed that a lot of kids are getting into Computer Science for two main reasons: 1. They like to play video games, so they figure they'd enjoy going to one of these "video game programming" schools that are popping up everywhere, or 2. many of today's top-paying jobs are in the technology field. However, a lot of kids just aren't really programmers at heart. Personally, my brain works so much like a computer that computer programming just comes naturally to me, however a lot of kids sign up for these courses thinking they'll just be playing video games all day or be taking the easy ride to being rich, neither of which are true.