Our family got hit by the flu a couple of weeks ago. We crept into our beds, nibbling aspirins and squinting at the bleak winter sun and our hungry cat from beneath our blankets. To pass the time, I signed up for an audible.com account and got a teaser of Hemingway’s “A farewell to arms,” which I feverishly started listening to. The beauty of the book strikes me – intricate, harsh, poetic – and after 30 minutes, I started thinking, “can software be like this?”
Can it have the same traits of beauty? Remember, I had a fever, but let’s explore that thought for a minute or two.
From time to time I have heard people say “that is a beautiful piece of software” – and I instantly knew what they meant; it wasn’t just the UI (or perhaps not the UI at all), it was something about the flow in the application, how you interact with it, the integrity of its functionality, the stubbornness it has when sticking to one domain or solving one problem. It’s how the software opens your eyes and lets you solve your tasks in new and intuitive ways, without getting in the way.
Can this “beauty” of software be quantized or industrialized? Perhaps not, just as it is with other works of art, but I think there might be some common traits.
Please note that none of these are strictly related to technology; the choice of scala or ruby or F# or cloud or mobile or NoSQL or whatever won’t make an app beautiful (not in my eyes at least). Although I can definitely appreciate beautiful code or software architecture, it’s not a required trait for beautiful software in the end-users’ hands.
A key requirement for creating a beautiful app is a true product vision, nurtured by its creator(s), the product owner, and the product team. This vision needs to engulf the whole product from day one, and can’t be expressed in a backlog or as a user-story. It’s a gut feeling and drive that has to be there, and it has to be allowed to thrive without being pushed back by processes and analysis. This can be a tough call to make for management; trust the vision of the product owner to navigate the product through the storm, even though some decisions or priorities might not be in line with what competitors are doing or users are asking for.
Here comes an attempt to boil this down to some hands-on advice:
I’ll give an example of mine. Many years ago, I did screenshots mainly by alt-print-screen and ms-paint. It worked fine and got the job done. Then someone showed me SnagIt, a tool for creating screenshots, and I was completely blown away. SnagIt added so many useful twists to screenshooting - I had never imagined how much better and fun it could be. And just when I thought I got it, I discovered more features that made my screenshots even more appealing (because that’s what it’s all about). Snag-it had (and still has) all the above: integrity, usability, and innovation.
I’ll end with another beautiful experience: Chet Baker and “That Old Feeling” (opens on spotify) – which is just what I get when working with beautifully crafted software out there, hopefully made by you!
P.S. Do you have a great example of “beautiful software”? Please share in the comments below for us others to marvel at – thank you!