Yesterday I watched a Youtube video on how to take down a ceiling fan. It included checking that there was no voltage in the wires, that the wires were detached, that the mount was healthy to accept the next light fixture. The video was helpful and gave me confidence that I could do it – as long as nothing goes wrong.
What if the wires don’t detach? What if the mount doesn’t look perfect, if the plastic wire-holder-thinger is worn or absent? Nothing about that in the video. I suppose I’d have to call in an expert at that point, hire an electrician.
A novice can perform a task, or write a program, with only a little generic instruction – until something goes wrong. What then?
If your programming language provides error messages like “$ does not exist” and “java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn” (with no other information), then new users will struggle. If you (the expert, the library author) disregard the struggles of the new user, then fewer new users will stick. Take that last one – if is said ‘The string “Bobby” was applied as a function, but it is not a function [my-source.clj:43]’ then even novices could fix their own problems, quickly. And not only novices: everyone’s life is easier if we work to accommodate people without access to expertise. A good new-user interface makes a great user interface.