logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

Utility-vs-usability.md (3401B)


  1. ---
  2. title: Utility vs usability
  3. date: 2020-11-06
  4. outputs: [html, gemtext]
  5. ---
  6. In many fields, professional-grade tooling requires a high degree of knowledge
  7. and training to use properly, usually more than is available to the amateur. The
  8. typical mechanic's tool chest makes my (rather well-stocked, in my opinion) tool
  9. bag look quite silly. A racecar driver is using a vehicle which is much more
  10. complex than, say, the soccer mom's mini-van. Professional-grade tools are,
  11. necessarily, more complex and require skill to use.
  12. There are two attributes to consider when classifying these tools: *utility* and
  13. *usability*. These are not the same thing. Some tools have both high utility and
  14. high usability, such as a pencil. Some are highly usable, but of low utility,
  15. such as a child's tricycle. Tools of both low-utility and low-usability are
  16. uncommon, but I'm sure you can think of a few examples from your own experiences
  17. :)
  18. When designing tools, it is important to consider both of these attributes, and
  19. it helps to keep the intended audience in mind. I think that many programmers
  20. today are overly concerned with usability, and insufficiently concerned with
  21. utility. Some programmers (although this sort prefers "developer") go so far as
  22. to fetishize usability *at the expense* of utility.
  23. In some cases, sacrificing utility in favor of usability is an acceptable
  24. trade-off. In the earlier example's case, it's unlikely that anyone would argue
  25. that the soccer mom should be loading the tots into an F1 racecar. However, it's
  26. equally absurd to suppose that the F1 driver should bring a mini-van to the race
  27. track. In the realm of programming, this metaphor speaks most strongly to me in
  28. the design of programming tools.
  29. I argue that most programmers are professionals who are going to invest several
  30. years into learning the craft. This is the audience for whom I design my tools.
  31. What trouble is it to spend an extra hour learning a somewhat less intuitive
  32. [code review tool](https://git-send-email.io) when the programming language
  33. whose code you're reviewing required months to learn and years to master?
  34. [![An XKCD comic which depicts a table that compares "time to improve task" versus "time saved by improvement" and how to figure if the improvement is worthwhile](https://imgs.xkcd.com/comics/is_it_worth_the_time_2x.png)](https://xkcd.com/1205/)
  35. I write tools to maximize the productivity of professional programmers. Ideally,
  36. we can achieve both usability and utility, and often we do just that.
  37. But, sometimes, these tools require a steeper learning curve. If they are *more
  38. useful* in spite of that, they will usually save heaps of time in the long run.
  39. Instead of focusing on dumbing down our tools, maximizing usability at the
  40. expense of utility, we should focus on making powerful tools *and* fostering a
  41. culture of *mentorship*. Senior engineers should be helping their juniors learn
  42. and grow to embrace and build a new generation of more and more productive
  43. tooling, considering usability all the while but never at the expense of
  44. utility.
  45. I'll address mentorship in more detail in future posts. For now, I'll just state
  46. that mentorship is the praxis of my tooling philosophy. We can build better,
  47. more powerful, and more productive tools, even if they require a steeper
  48. learning curve, so long as we're prepared to teach people how to use them, and
  49. they're prepared to learn.