We spend far too little effort in these:
-
availability
We should make tools and services freely and easily available.
-
accessibility
We should make tools maximally usable by those who are impaired.
-
standardisation
Having different teams follow standards (which includes protocols and APIs) improves learnability of new tools, eases switching to alternatives, and improves interoperability.
-
usability
Tools that are a not pleasant to use cause needless frustration. We need to build tools that follow usability standards. Solid interoperability would also allow syncing such preferences across devices, which would mean reduced time spent tweaking things.
-
information access
We should have ways of reliably categorizing and ranking useful information, and search engines that presents such information in a way that maximizes comprehension.
-
migration tooling
We need to be more willing to keep improving foundational software, to a point we more readily release breaking changes. This is the sort of software that other software relies upon, things like operating systems and platform libraries. This means replacing designs that are not ideal for learning and usability, instead of being stuck due to large ecosystems depending upon such designs. This implies solid (and easy) migration tooling,
-
documentation
There should be various types of documentation to fit different levels and styles of learning. Breaking changes for foundational software should also be clearly documented, alongside migration tooling. The documentation should be to a level where one would not need to use external means (such as search engines) to learn any aspect of the software.