I have been thinking a lot about software development in the last few years, and came to that realization as well. The soft factors in software development are so strong that it is at least as much an art than a science. Software needs creativity. Software needs design. Software needs esthetics. Software needs beauty.
And the best part is: When software is beautiful, it also works better. It can be maintained better, extended better. And eventually, it is just smoother, faster, more stable.
When I was a teenager in highschool, I was not a technician at all. I actually graduated in subjects such as: French, German and English literature, Latin, Philosophy, and a big part of the cursus was also about fine arts. I also spent quite some time writing French poetry, doing calligraphy and drawing, as an outlet to my creativity. Since I started writing software, I don’t feel this urge anymore. The creativity is totally invested in writing better, more beautiful software.
All of us who have a passion for software know this urge to refactor and make the code slicker, more compact, or even just more beautiful. Even though no new feature is added through this rework, we feel that urge because we are not satisfied until the software complies with our criterias of beauty and design. That’s no different from the urge to write poetry at all. Looking for the best word expressing a concept is not different from looking for the best design for a functionality. That’s all art.
Obviously, when you do client application development and especially UI as a main activity, the beauty aspect is even more important. With new UI technologies like WPF, Silverlight or Flex enabling developer-designer collaboration, these factors reach a new level. But the beauty should go beyond UI. The abstract, non-visual beauty of a software design, of elegant code is a critical part of a component. OO can be truly beautiful.
One thing which often goes forgotten is understanding that it has social implications too. I see at least two:
- “Old school” developers have to adapt, not only to new technologies, but also to the art and the esthetics. Because of the soft factors, other skill sets are needed to create beautiful software.
- It’s more difficult to find qualified developers now than it has ever been.
I know this last statement to be true in at least 5 countries: Switzerland, Sweden, USA, India, Australia. I have no reason to think that it is any easier in any other country. And here I totally agree with Joel: We need schools to understand what the new challenges are, and we need a new audience to understand how great it is to program software.
In the moment, apart from the professionals, nobody really knows how much software development changed in the last 10 years or so. The media don’t talk about it, and I fear that even the schools are not well prepared to deal with this. Maybe it’s just time for software schools to start looking for new skill sets in new circles, and let artistic-minded persons become better software engineers.