Musicians And Programmers: Why Have One Genre or Technology?
I have been thinking about how close musicians and programmers truly are. I am more confident than ever that programming is functional art. By functional, I mean art that performs some function (aka architecture). The metaphor of a band or orchestra comes to mind immediately. Agile methodologies have brought back the notion of what we always knew to be true: small teams of dedicated programmers can accomplish great things. It seems the mainstream is just catching up even though there have been several books in the past that touched on this subject (Peopleware and Pyschology of Computer Programming just to name two). Much like small groups of musicians can perform great works of music (think chamber music, rock music, etc). Now, these musicians have to work tightly together to make sure that they don't make noise. The same is true for programmers, if we don't pair and communicate, we get noise as well (broken code). Neither is a pleasant experience for our customers (for musicians this is the listener of course). And while a big team can pull off a project, it's rare. It seems the parallel in music is huge orchestras and they are big undertaking (and rare as well). Musicians spend a lot of time studying music (if they are any good), just like we spend a lot of our time studying code (you do study code, right?). I could go on with how we are alike, but I think you get the point. Programming is art and programmers should interact like artists...
So, you're thinking, "Yep, Blaine you're right! I've read this a million times though...What's the point?" Well, I'm going to state my point right now and it's going to seem to be out in left field. My point is we shouldn't bicker about which language is better because it's a moot point. I know, I know, I've been spent a lot of time blogging on why I think certain languages and technologies are better and I will continue doing so. By now, you're probably rolling your eyes and thinking, "Crap, he says arguing about languages is dumb, yet he's still going to do it...What a dummy!" Well, I think computer languages and technologies are like genres of music. I love heavy metal, electronic music, lounge, and weird stuff. Does it mean my tastes are worse than someone who loves classical or jazz? Or even someone who just listens to punk? NO! It's different tastes. Now, ask a musician that question and you will get snickers. It's the same snicker you hear when someone says that language X is better than language Y depending on who you talk to. But, it's all a matter of taste. It's what you like...It's what makes YOU more productive. Smalltalk makes more productive than any other language I have ever used. But, another programmer might say the same about Lisp and another about Haskell. Hell, we can probably find programmers who will scream that java is the most productive for them.
Are they wrong or am I wrong? I don't think any of us are. But, I am frustrated that our industry thinks that there is one genre of music that all of us have to make. How many musicians would be frustrated if the only kind of music that could make was bubblegum pop or freeform jazz? There would be some happy musicians (because they would be making that music anyway) and a lot of frustrated others. I think programmers are in this boat right now. I have the luxury of currently working in the language that I love using, but I know a lot of us who don't. Why can't teams of programmers (much like bands of musicians) get together based on their love for a certain genre of technology? I think the teams would be more productive and the programmers much happier. Now, you might think this might lead to tunnel vision, but you know what? I don't think so. I would love to work with programmers in other languages much like musicians cross genres to get the creative juices flowing. It works the same for us. I might decide to go back to my main love, but I might have new ideas to apply. It would be much better than what we have now.
Anyway, what do I expect to come out of this? I guess I would like to see our industry diversify much like there are different genres of music. I hate one choice. It would be like being forced to listen to one type of music along with everyone else. How boring. Now, I will keep talking about my love of Smalltalk and why I think it makes more productive because I would like to convince programmers to try my genre of technology and fall in love too. It's like playing a song you like for a friend and trying to get them to like it as well. Is the song better than what everyone else likes though? Nope, it's different and fits my tastes perfectly. Hell, I wouldn't be a metal fan if somebody hadn't played me my first Judas Priest song and I wouldn't be programming in Smalltalk if someone hadn't gotten me to use it. So, expect for me to bash less and show off cool things.