The impact that perception and impression has on the experience of using software is often overlooked, in my opinion. Yes, it’s critical that software and tools operate correctly, and do so in a performant manner… but that’s simply a baseline requirement. What too much software misses, unfortunately, is that there is also an emotional and experiential aspect to user interaction.

What brings me joy, as a developer, is to create tools that work “as one expects”, or if they happen to cause surprise, it’s only the good kind of surprise (finding a $10 bill that survived the wash in the pocket of your jeans), and not the bad kind (remembering you had a $10 bill in your pocket only to find it’s no longer there).

I take inspiration from Don Norman (of The Design of Everyday Things fame) and Edward Tufte (The Visual Display of Quantitative Information). If you haven’t read either of those books and are even slightly interested in design, I highly recommend you do so.

Two of my publically-available open-source projects feature the kind of design to which I aspire:

  • xyzzybot (with fizmo-json): Still a work-in-progress, xyzzybot brings the glory of Infocom-style text adventures (Zork, anyone?) to Slack. I particularly like the way that xyzzybot attempts to automatically distinguish game commands (give flower to troll) from out-of-band chatter in the channel (hey, why don't we try giving the flower to the troll?), with the goal of completely disappearing as the broker between the game and the players.

  • Commentator: Although way out-of-date (it’s for Visual Studio 2012 and 2013!), Commentator shows the type of user interaction I’m really proud of: when it’s doing its job, things just work and you hardly even notice it’s there.