What do you think enables smart users?

Allowing expertise to build up: if the tool has a simple interface for the most common tasks, make sure there is also a more complex interface for more complex tasks: via configuration files, via an API, possibly a web API, an embedded programming language, or simply an “expert” option to make the complex UI elements more visible.

Sharing expertise gained: if the tool allows you to do a complicated thing, allow people to share this. Take a spreadsheet software, for example. Don’t just export a screenshot, or a PDF file, export the spreadsheet itself, including the data, the graphs, the formulas, the macros, the programming. This goes for anything with config files (VimScript?, EmacsLisp), anything where you can write code, anything with macros.

This allows independent expertise growth. People can figure something out, add functionality in some way, and communicate this improvement to others without having to ask anybody for their blessing.

Allow extension of the tool: If the tool can be extended by users instead of developers, then expertise can develop in unexpected and domain-specific ways. If people don’t have to recompile the tool, and the tool provides a way to extend itself in a shareable way, then the expertise transfer from person to person. You can adapt the editor for your team. You can write the department’s reports using a spreadsheet. You can create a simple form-based database tool to support the business processes in your company.


Define external redirect: VimScript

EditNearLinks: EmacsLisp