Programming as a Fine Art
Joel Spolsky, a popular blogger and software development guru, has called for changes in the way programmers are educated.
In essence, Spolsky, who is CEO of Fog Creek Software, and author of the popular "Joel on Software" blog, said he believes there ought to be the equivalent of "a Julliard for programmers" so that talented students can learn the craft.
Spolsky said he thinks many schools are "dumbing down" their curricula. Spolsky's post originated as a response to a paper written by two Ada language experts who dissed Java for having an adverse effect on students as a first programming language.
"The real problem is that these schools are not doing anything positive to attract the kids who are really interest[ed] in programming, not computer science," Spolsky said in his blog. "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."
Moreover, said Spolsky, "It would be a huge magnet to the talented high school kids who love programming, but can't get excited about proving theorems."
Spolsky said he believes students who come out of a program like the one he espouses ought to earn BFA (Bachelor of Fine Arts) degrees because he views software creation as an art. I do not disagree with that.
Said Spolsky: "When I said BFA, Bachelor of Fine Arts, I meant it: software development is an art, and the existing Computer Science education, where you're expected to learn a few things about NP [Non-deterministic Polynomial] completeness and Quicksort is singularly inadequate to training students how to develop software."
I was intrigued by Joel's thoughts on the issue of programmer education and I wanted to hear other viewpoints. So I thought of a few of my friends in the industry whose views I tend to trust and I asked what they thought.
The first person I asked was Roy Singham, CEO of ThoughtWorks, which prides itself on hiring some of the most artisan-like developers in the business.
"I am certainly highly in favor of liberal arts courses for undergrads-in my perfect world the percentage of required liberal arts classes would increase-as it encourages a wider set of knowledge," Singham said. "Although I recognize some geeks want to get on with it."
When I first read Joel's post my immediate reaction was that he had a great idea. Then I started to think of how many folks I know who excel in the programming side of the industry but who had no initial intent to get into programming. Yet they caught the programming bug either later in their college days or even well afterward. And so I began to think this Julliard for programmers thing might be limiting in that such schools would only attract and accept the "best of the best" and leave all the rest of the folks behind.
My theory was that these Julliards of programming would create a software power elite or a master class of developers, but that could ultimately lessen the number of programmers the industry so badly needs. And as Roy Singham also pointed out: Many of his "superstars" either have liberal arts degrees or no college whatsoever.
Bjarne Stroustrup, the creator of the C++ language and a computer science professor at Texas A&M University, told me my thinking was "misguided."
Stroustrup said the top universities attract the top talent. "The professors nurture it in the direction of their interests, which are not the practical skills of programming," he said. "Also, it is easy to fall into the other ditch: mere hacking. An institution focused on programming could easily degenerate into a training institution."
Still, Joel makes some really good points. In addition to The Julliard School in New York there are other cr???me de la cr???me institutions that turn out top-notch artists such as Berklee College of Music in Boston, Yale School of Drama in New Haven, Conn., and the Peabody Institute in my hometown of Baltimore. I don't see why there could not be equivalents in the software development world.
I contacted Carl Franklin, a Microsoft Most Valuable Professional and host of the .Net Rocks Internet audio talk show for his thoughts. I was interested in Carl's thoughts because not only is he a programmer but he's also a musician and he attended Berklee. Said Franklin of Spolsky's idea: "It's an interesting idea. I wonder if the students who would really thrive in that environment wouldn't also thrive without it. Although there is a lot to be said for formalizing it."
Meanwhile, Singham said, "I 100-percent agree with Joel that programming is an art. This is probably one of the cornerstone beliefs of ThoughtWorks."
Stroustrup added that there are many aspects of art and engineering in system development-of which programming is part. "That's the problem with the 'computer science' view: Building a system is also a practical skill, requiring practice/experience," he said.
As I said, I agree with Spolsky's notion that programming is an art. But not every artist is a Picasso. And not every programmer is a Bjarne Stroustrup. For every developer doing groundbreaking coding in the Web 2.0, parallel programming, or complex simulation spaces, there are a dozen more that are doing the run-of-the-mill programming to keep their daily operation running. For every programmer writing a masterpiece, there are a dozen more turning out the sofa paintings you see advertised for sale on the weekends at your local Holiday Inn. The average work that a programmer does can be described as "get stuff from a database, change it, and put it back."
James Gosling, a Sun Microsystems vice president and the creator of Java, summed up the situation succinctly: "We don't need a Julliard for Programmers (yet), we need Basic Training."