Express vs. think

I wish more software would allow me to express my thoughts rather than force me to think about their expression.

This sentiment came up during a recent discussion with coworkers about the nature of most enterprise application tooling. Tools could be so much more usable and useful if they brought a rich semantic model to bear on the task at hand, whether it be coding against a class library API, visually composing controls on a page or form, enabling click-through navigation to event handling logic, etc. There are examples of this (e.g. JetBrains IntelliJ IDEA‘s refactoring support, Microsoft Visual Studio‘s IntelliSense support, M7 NitroX‘s recognition of JSF and Struts semantics), but overall it seems like there is plenty of room for growth.

Expression is certainly not the concern of developers only; in fact, it’s a general concern for anyone that interacts with software. During this office discussion the evolution of spell checking software was raised as a positive example of “getting it” today (but not when it was first released on the masses). Today’s spell checking, for example, in Outlook or Word is sophisticated enough to flag a potential issue inline and in near realtime without overwhelming its user with UI that forces the user to address issues and non-issues alike (i.e. the green and redline squiggly underline links with contextual guidance via right-click menu options). Is there room to grow? Absolutely! Case in point: when you correctly spell a word but place it in the wrong context, it would be nice for Word to indicate this potential too me in a similar manner as it does sentence fragments, statements vs. questions, misspelled words, etc. However, this is a lot better than having software take control of my task and assert its will on mine with a modal dialog, which used to be the case in most spell checking applications.

If more software “got it” in this regard–allowing users to express themselves and guiding them toward their success in the process–new levels of productivity would be achieved.