Software architecture artistry
Software architecture artistry
I'm not sure how many people outside the field realize it, but developers don't just love developing solutions because we get to play with a computer - we love it because we’re creating works of art.
Each solution is a work of art; in some cases the beauty of it is visual – often the beauty may be in the way the pieces of the app interact, how the user’s data is protected, or the cleverness of an algorithm.
Let’s compare with another art form
If you’re an amateur photographer, you know that creating a good picture requires more than nailing the basics: depth of field, shutter speed, and noise. They facilitate the end result, but the composition is the crucial piece – how you use the positioning of objects, the lighting, and other effects to tell a story or convey an emotion.
For developers, a good software solution involves more than the basics: writing code, understanding objected oriented programming, and knowing a development framework. Like photography, the “basics” are still an important part of a solution and facilitate the end result. However, the crucial piece is the composition – your object model, the structure of your algorithms, and how you use technology to achieve your goal.
Can a non-developer appreciate the art of a solution?
Art can be appreciated by “non-artists”, but can a non-developer really appreciate the art of a software solution? Just about anyone can evaluate and form an appreciation for a photo, painting, or book. Maybe not at the same level as an artist, but they can appreciate it nonetheless.
If we’re talking about the software or hardware interface of a solution, then it’s easy to say that they can be appreciated by a non-technical user. However, if we’re talking about the architecture and the implementation of a solution, then it’s difficult to say that it can be appreciated by a non-developer. The code it’s written in is completely foreign. The frameworks involved don’t matter to anyone other than developers. Architectural diagrams don’t cut it, because they assume a technical understanding of how to read the diagram.
Some ways to visualize the software architecture
I can think of a few ways we may be able to show-off the art of a software solution to make it more consumable for non-developers. If a suite of automated tests has been developed for the system, a report of the test results may be one such showcase. Whether you understand the requirements of the solution or not, seeing that it has successfully passed 200 tests looks impressive.
Another visual may be a dependency graph, which depicts how the different parts of the system communicate. A poorly designed solution may look like spaghetti with lines going every which way; a cleaner solution would display in a more orderly/less chaotic fashion. I’m not sure that would really speak to a non-developer, but it’s a good example of a different way to look at architecture.
I’ve got some other ideas I may explore later, but what are your thoughts? Have you seen some cool ways to visualize a software solution as “art?”










