Various and Sundry
First of all, I'd like to comment on OOPLord's post about poetry. Just a couple of comments:
1. Thanks for the plug! I have always thought that good code is art form. It has to grow instead of built. More about that in a minute.
2. OOPLord is 100% correct. Listen to his wisdom, young ones.
In my opinion, great artists are born (not trained). They just have a knack for it. Great developers are also born. The way computers work just comes naturally to them. There are also levels of this skill in the development world. Some developers are born to be procedural developers. Some are born to be OOP developers. Some are born to be legacy Cobol developers (although, hopefully, this is being bred out of our world).
Unlike OOPLord, I have wanted to be a developer all my life (well, after I went through wanting to be an astronaut). It's pretty much all I have ever been good at. I have also had the pleasure to teach developers, and throughout all of this there has been one constant.
Code = Art!!! This can't be denied. I have watched poor developers and I have watched great developers and the two are drastically different. Let me explain:
I can't draw. OOPLord is an amazing artist with pencil and paper. Me? No. I can draw a few geometric shapes, various faces, simple stuff. But, don't expect me to turn out a comic book cover. Just not going to happen. When I watch a poor developer code, it reminds me of me trying to draw. Every line, either pencil or coded (like that? pretty cool little double meaning there, don't ya think?), is extracted painfully from the source. Every line is slightly wrong. Either it is in the wrong place or it doesn't contribute properly to the whole. It's apparent.
Now, I have watched master programmers write their code. It reminds me of watching a good artist paint or draw. Every line flows smoothly from the source. Each line contributes to the whole in such a way that the final product is more than the sum of its parts.
Also, as with most good artists, the final product grows as the creation process takes place. One again, I will explain:
Everyone is probably familiar with Bob Ross. He was the painter that used to have a show on PBS. Well, do you remember watching him? I was always amazed by the way that he painted all over the canvas. He didn't stick to any one place for too long. It seemed like there was no possible way he could use so many colors in such a willy-nilly fashion and produce a recognizable picture.
Well, good developers code this way. It's just natural. I used to have a co-worker that hated to watch me fix a problem or code new functionality because they couldn't stand to watch me open 15 programs and flip back and forth between them fixing things as the thoughts occurred to me. This is what I mean by a "grown" program. It's an organic process. Not a building process.
Many people laughed at the line in the movie Swordfish and at a similar line in the Matrix where characters claimed to "see the code in their head". But, that's mostly truth with good developers. Hang around them long enough, and one of them will at some point describe an epiphany they had while coding. When asked how they knew that, many of them will say they don't know. In these case, they "saw the code" in much the same way an artist often claims to see the picture in their head before they paint it or a song writer sometimes claims to have heard the song in their head before writing it.
Ok, so what does all of this mean? Well, I use it mostly as an admonition to management when asked for estimates. When asked how long some project will take, one of my favorite responses is "How long did it take da Vinci to paint the Mona Lisa?" The answer to both: It takes as long as it takes. You can't rush art.
If you don't let the art flow naturally, you end up with junk.
1. Thanks for the plug! I have always thought that good code is art form. It has to grow instead of built. More about that in a minute.
2. OOPLord is 100% correct. Listen to his wisdom, young ones.
In my opinion, great artists are born (not trained). They just have a knack for it. Great developers are also born. The way computers work just comes naturally to them. There are also levels of this skill in the development world. Some developers are born to be procedural developers. Some are born to be OOP developers. Some are born to be legacy Cobol developers (although, hopefully, this is being bred out of our world).
Unlike OOPLord, I have wanted to be a developer all my life (well, after I went through wanting to be an astronaut). It's pretty much all I have ever been good at. I have also had the pleasure to teach developers, and throughout all of this there has been one constant.
Code = Art!!! This can't be denied. I have watched poor developers and I have watched great developers and the two are drastically different. Let me explain:
I can't draw. OOPLord is an amazing artist with pencil and paper. Me? No. I can draw a few geometric shapes, various faces, simple stuff. But, don't expect me to turn out a comic book cover. Just not going to happen. When I watch a poor developer code, it reminds me of me trying to draw. Every line, either pencil or coded (like that? pretty cool little double meaning there, don't ya think?), is extracted painfully from the source. Every line is slightly wrong. Either it is in the wrong place or it doesn't contribute properly to the whole. It's apparent.
Now, I have watched master programmers write their code. It reminds me of watching a good artist paint or draw. Every line flows smoothly from the source. Each line contributes to the whole in such a way that the final product is more than the sum of its parts.
Also, as with most good artists, the final product grows as the creation process takes place. One again, I will explain:
Everyone is probably familiar with Bob Ross. He was the painter that used to have a show on PBS. Well, do you remember watching him? I was always amazed by the way that he painted all over the canvas. He didn't stick to any one place for too long. It seemed like there was no possible way he could use so many colors in such a willy-nilly fashion and produce a recognizable picture.
Well, good developers code this way. It's just natural. I used to have a co-worker that hated to watch me fix a problem or code new functionality because they couldn't stand to watch me open 15 programs and flip back and forth between them fixing things as the thoughts occurred to me. This is what I mean by a "grown" program. It's an organic process. Not a building process.
Many people laughed at the line in the movie Swordfish and at a similar line in the Matrix where characters claimed to "see the code in their head". But, that's mostly truth with good developers. Hang around them long enough, and one of them will at some point describe an epiphany they had while coding. When asked how they knew that, many of them will say they don't know. In these case, they "saw the code" in much the same way an artist often claims to see the picture in their head before they paint it or a song writer sometimes claims to have heard the song in their head before writing it.
Ok, so what does all of this mean? Well, I use it mostly as an admonition to management when asked for estimates. When asked how long some project will take, one of my favorite responses is "How long did it take da Vinci to paint the Mona Lisa?" The answer to both: It takes as long as it takes. You can't rush art.
If you don't let the art flow naturally, you end up with junk.