Imagine having to use MS Notepad instead of your favorite IDE for the next week. That twisting pain in your gut is partially due to Notepad’s high Viscosity Cognitive Dimension. Removing Viscosity from your software will increase its usability dramatically. A Viscous application is resistant to change and small modifications are often difficult for the user to execute. There are two main types of Viscosity: Repetition viscosity and Knock-on viscosity. Repetition viscosity occurs when one task requires many individual actions in the software. Knock-on viscosity occurs when making one small change requires many additional changes in order to restore consistency.
Eclipse effectively reduces viscosity with its many helpful features. AutoComplete and Refactoring/Renaming actions reduce the need for changing/adding the same field or method name multiple times. Adding features is a common solution to Viscosity problems but it often adds additional abstractions that can increase your software’s learning curve.
Viscosity can be very high when using MSPaint or any other simple graphics editor to create UML diagrams. Moving a single element requires you to redraw all connecting relationships. This is the main problem point that UML diagramming tools address. Some types of scheduling software also have viscosity issues. Changing the time of one meeting can mean changing all subsequent meetings.
As a developer it can be easy to ignore viscosity. Many times common repetitive tasks are ignored in favor of implementing interesting and novel features that do nothing to help alleviate the underlying problem. The best solution is for developers themselves to constantly use the product they are developing; in addition to listening closely to customer feedback. Remember, according to David Platt “your users are not you!”.