I think Bret Victor is among 5 people whose thoughts and work I pay close attention to. He has written several beyond great papers related to e.g. interaction design, climate change, designing programming systems or future of programming.
There’s though one idea that has resonated with me lately. Mainly because I’ve been part of discussions about which tools to use as part of software development process.
Bret talked about what a tool is in his paper A Brief Rant On The Future of Interaction Design. He defined tool as:
A tool addresses human needs by amplifying human capabilities.
That is, a tool converts what we can do into what we want to do. A great tool is designed to fit both sides.
Many layers of needs
When it comes to needs though, it’s good to note that needs can have many layers. If we think our example of using the hammer to hit a nail. Perhaps we are doing it to put a painting hanging on the wall. Based on the picture(s) above though you might think that getting the nail on the wall is our need.
But if we want to hang a painting on the wall, I think our need would be at least to get that painting on the wall. It’s not stopping here though as it might be that our need is not putting the painting on the wall. It might be instead that we want to be inspired by watching the painting.
Regardless of how many layers of needs there are, the important thing is to consider which needs we want to address and if the tool is even needed for addressing the needs that are on deeper layers.
If we want to amplify our capabilities, we need to think whose lives our tool will touch. If the capabilities of the people vary a lot, whose capabilities will we prioritize when deciding which tool to use?
It might be that specific tool is good for one group of people, but not for another who need to use it also. Take into account the capabilities of both when you’re deciding which tool to use.
They will not be static
In case of needs and capabilities, we also need to remember that they tend to evolve as time passes. This is also something that one needs to consider. How well does the tool adapt to users whose needs and capabilities change?
Also if one day users will want to start using another tool, how painful will that be? Or how painful it is even to start using this particular tool?