The first thing I think we have to get out of the way is that programming and computer science are not the same thing. They are overlapping but clearly computer science is a lot more than just programming. Often times that means that programming doesn’t get the respect that it deserves. To me programming has always been something special though.
As long as I have been programming (about 35 years now) a common, recurring, and never ending discussion though is how to categorize programming as a discipline. Is it:
- A science (fully in computer science)
- An engineering discipline (software engineering)
- An art
- A craft (close to art but not quite the same thing)
There are arguments for all of the above. Personally I don’t think it is really a science though it is clearly dependent on science and science is dependent on it. I wish it were engineering but the engineering training in me believes that the lack of reliability in software today precludes us saying that we’ve made it there yet.
I am between an art and a craft. To me art creates something beautiful and requires a special talent. A craft requires some talent but training can do more for a lack of talent than it can with an art. It is with that argument in mind that I read a really interesting post by Joel Spolsky yesterday. In this post Joel makes a case for a BFA (Bachelor’s in Fine Arts) in Software Development.
The real problem is that these schools are not doing anything positive to attract the kids who are really interesting in programming, not computer science. I think the solution would be to create a programming-intensive BFA in Software Development–a Julliard for programmers. Such a program would consist of a practical studio requirement developing significant works of software on teams with very experienced teachers, with a sprinkling of liberal arts classes for balance. It would be a huge magnet to the talented high school kids who love programming, but can’t get excited about proving theorums.
It is an interesting idea. I can hear people yelling “but that is just a glorified trade school” but I don’t think that is fair. I think that there is a real art (and a touch of science and engineering) in creating outstanding software. Real trade schools focus on the tools of the hour much more than the concepts of all time. A BFA program could, should and probably would spend a lot of time on concepts.
I wonder if Neumont University’s program is like this? In any case it would be interesting to see a mainstream college/university adopt the BFA idea. What sort of interesting projects would they produce? As Joel points out universities used to be known for cool and important programming projects but we don’t see much of that anymore. And that I think is a sad thing.