Wednesday, August 03, 2005

Joel on Software - Hitting the High Notes

"Five Jim Davis's -- creator of that unfunny cartoon cat, where 20% of the jokes are about how Monday sucks and the rest are about how much the cat likes lasagna (and those are the punchlines!) ... five Jim Davis's could spend the rest of their lives writing comedy and never, ever produce the Soup Nazi episode of Seinfeld."

I'm surprised he didn't mention Google as an example. Google would go very well with Apple as an example wouldn't it?
I think Joel is right about the talented programmers versus the average programmer. I've stared at code that evolved over the years, and you can tell the difference between code that was first written by the first talented programmer, and then code that was latched on over the years by others. There are other factors involved as well, but still.
I was disappointed with the article though. I kept waiting for when he will explain what a talented programmer actually is. I guess its different for different people. When I was living with my roommates, me and one roommate were in the same class. We had a project where we had to write a simple program to do some calculations (I dont remember what exactly). A third roommate studied our code as he planned to take the course next semester, where he would probably have a similar project. The friend complained about how confusing my roommates code was, and how simple mine was to read and understand. This statement struck me because I had been really ashamed of my code until then, because I had written it quickly fifteen minutes before it was due (it was a very busy semester :) My friend had spent a day or two on it, and I thought his would be better. I guess the time constraint got me to write simple, clean code that worked!
There are other factors that make a segment of code elegant. It could be things like:
  • is it scalable

  • is it modular (does one thing and does it well?)

  • ...

And ofcourse since "beauty lies in the eye of the beholder", it just depends on the beholder. I guess thats why I am one of those people that consider code as art!