Monday, January 14, 2008

Coding Horror on Teaching Computer Science

Coding Horror shares thoughts on what teaching computer science should be about. As a full time programmer, I'm inclined to care. But as a person who came to be a programmer via running nuke power plants for the Navy, maybe I shouldn't be bothered.

Well honestly, I do care. Programming is as much about getting the code into production as anything, as CH states. It is more about solving real problems and daily issues, and finding bugs than discussing which O(n) algorithm is best.

Oh yes, programming is about which is best, but that takes up a fraction of the time to get real code into production. Seldom, or never in my case, can I just make a program change in isolation. Theory is great, where you consider a system in isolation. But take that same piece of code out of the classroom and into a complex working environment and suddenly it's not so simple.

Daily programmers deal with the complications of dependencies between portions of software and systems. Dependencies more complex than most schools would even try to cover in class.

Then there are conflicting goals in real world software development. In the class rooms, it's usually much more clean cut. Make this report, import this data, create a data entry screen. In the real world there are users. Users, the great corruptors of your beautiful design. Users, who have no inkling of what beautiful code is, and don't want to know what a compiler is, or why it isn't working today. Users care about the F3 key doing what they want it to, or the double-click making things dance on the screen.

CH is right, many schools are not preparing their graduates for the real world of programming. Programming where you and three other coders need to work in the same code. Programming where appearance is not only equal in importance at times, but sometimes more important than implimentation. Programming where your source control software is buggy. That's real life programming.

Honestly, I'm with CH, coders should work in the real world while they learn. To be a programmer you need to program.

My 2 bits? If your goal is to be a programmer, then start doing it long before you even get to those classes. But you say, how do I do that? Easy enough. Start simple, code a javascript application to serve up random images on your home page. Move up to writinga php script to read the list of commenters on your Wordpress blog. Practice all types of SQL commands over any database you can get your hands on.

I could go on, but like any field, the learning is in the doing.

/rant off.

No comments: