I find it awkward when people describe technology as beautiful - especially software they wrote. Why? Well, because people and technology are different.
- People
- When you build friendships you want them to last indefinitely.
- Even if you don't build a close friendship with a person, you should still care what happens to someone after your interactions are done.
- You tend to not want people you really like to leave your realm of interaction.
- Technology
- For any technology I create/use, I don't expect it to last forever.
- I enjoyed my first 80286 based computer but I don't care that it was recycled and turned into something else.
- I really liked OS/2 but I don't want to use it now since I have no use for it.
Technology described as beautiful feels awkward 6 months later when something comes along that outshines it. To me, beauty tends to imply perfection in some way. Is old technology still beautiful? Is someone prone to dismay when a request to change/replace it occurs? Does someone fight change because their beautiful technology can't be made better? How does someone take a criticism (especially if done in a way intended to spur improvement) of their beautiful technology?
Technology is a tool. It can be well designed. It can fit a need well. It can even be easy/nice to use. If someone starts to call it beautiful or "My Precious" then I wonder how well they will accept it when it is time for changes or replacement?
I've seen a few articles discussing how software should be beautiful. In the end there are usually specific engineering traits that really represent what they describe as beautiful. Such as:
- Ease of use/interaction/integration
- maintainability
- ease of debugging
I think it so much easier to stick to engineering terms and principles because it can be less subjective. I know each of my examples above is subjective as stated but it is POSSIBLE to perform analysis of each and produce actual metrics. I can track how long it takes to integrate different competing technologies into a system and use that to define "ease of integration". I can track how many hours it takes to add a new feature to 2 equivalent technologies. I can determine how long it takes to go from bug report to root cause identification. Given metrics like those, I can do something useful like compare them within the context of some need that I have. If someone just tells me that technology X is beautiful - it doesn't really tell me anything. This is especially true when a new competing technology arrives. Is it "more beautiful"? Is it a better fit for my needs?
Using engineering terms means that you don't get into the "my technology is more beautiful than yours" useless conversations. This is important as needs change and you need your technology to keep up. A metric indicating that "it is 20% faster to get a new feature into technology Y" goes far in helping make decisions. Even if you don't have numbers, a "the developers identified issues faster" is useful.
In the end, I don't want a bond with my technology - I want it to perform some task within some given constraints. If some other technology can do a better job then I want to know the what/why/how much given some type of metrics.
- Scott
1 Chronicles 16:27 New American Standard Bible (NASB)
27 Splendor and majesty are before Him,
Strength and joy are in His place.
Strength and joy are in His place.