We care about quality. Quality cars. Quality buildings. Quality software. But what qualities do we care about? I’m glad you asked. There’s this guy I’d like you to meet. That is, of course, if you haven’t already made his acquaintance.
That Guy in the Circle
Vitruvius was a famous Roman architect who lived about 2,000 years ago. In his ten-book opus, De Architectura, he identified three qualities which every building must possess – firmitas, utilitas, venustas, or firmness, usefulness, and attractiveness. When you think about it, these qualities are valuable in everything we make, not just buildings. Whether bridges, cars, clothing, or software, we want and need these products to be firm, functional, and friendly.
By the way, Leonardo da Vinci’s classic drawing of the dude in the circle is called “Vitruvian Man”. It’s named after; yes you guessed it, Vitruvius.
Let’s compare the qualities of firm, functional, and friendly as they have to do with physical buildings and software applications.
Regarding firmness, we need buildings to stand up, and not fall down, obviously, as well as to stand up to the test of time and weather. They should have space for as many people and things as necessary, and have doors that lock and alarms to deter illegal access, theft, and vandalism. In other words, physical strength and security.
Application performance testing and application security testing ensure we’re creating firmness in our software. We want to be ready for “Cyber Monday” when the crowds come crashing in, and be durable enough to withstand however many hours or days the application must “stay up”. We also need tight security to deter hackers from making us the next victim of ransomware, or any other nasty virus or malware.
Designing functional buildings seems obvious, but sometimes we miss things. Who knew? If it is a home, we need bedrooms, bathrooms, a kitchen, and living areas. (All with right sized closets!) If we’re talking about an office building or manufacturing facility; the needs are quite different. When these structures are built, there are inspectors involved every step of the way, ensuring everything is built to code. Everything needs to work for regular everyday activities. Hot water, cold water? Garage door opener? Key fits in the lock? We’re ready to move in!
Automated functional testing and manual functional testing seek to disclose the actual functional behavior of our applications. If someone enters a letter where a number is expected, it should gracefully let you know. If you click a link, the right page should open, and so on, and so on. Overall, it needs to meet or exceed the user’s expectations.
People like buildings to be user-friendly, and even attractive. “The Design of Everyday Things” by Donald Norman is a great book which reveals many foibles of human design. One of my favorites (or biggest pet peeves) is the exposure of horrible door design. You know the kind. Going into a building, and you can’t tell if you’re supposed to pull or push. Really! How long have we been making doors?! And what about hotel shower faucets? C’mon man!
For software, we desire user-friendliness: for it to makes sense, to be easy to figure out, and good aesthetics. If you build it, and it’s ugly and annoying, they will not come. Just sayin’.
Hire a good UX person to make your software intuitive and easy on the eyes. You’ll be glad you did.
Isn’t it fascinating how different these categories are, and yet they are essential in every great product? Let’s be glad that Vitruvius paved the way, and we have many companies who know how to ensure buildings and software are Firm, Functional, and Friendly.
In the comments below, please post any thoughts or experiences with success or failure of making software firm, functional, or friendly.
Sr. Technical Engineer