There is a gaping hole between the technical and the non-technical computer users. Even saying that sounds bad. Even using words like technical vs non-technical don't fairly describe everyone. I know developers who are most definitely technical, fall in the non-technical camp for this discussion... great way to begin hey? Can't even describe two types of users.
Lets call them "Ws" (WYSIWYG) and "POTS" (Plain old text).
Intuitive, easy to use systems are often polar opposites to fast systems to use...
- Send an email to my local user 'fred' to ask if they want lunch.
- Command line - type the following -
echo "lunch?" | mail fred
- Desktop GUI - Run, Open or Switch to email program; New email (menu or keyboard shortcut); Click To field; Type fred; Select fred from list of possibles (hopefully system will put the local fred to the top so maybe just press enter); Click Subject; type "Lunch"; click Send button
- Mobile GUI - See Desktop GUI; BUT harder to type and select from lists, slower interface, and more steps to switch to mail program
- Command line - type the following -
- Update a small typo in source code, commit it to the repository, rebuild the system
- Command line - type the following - cd project; vi filename.txt; s/tipo/typo/; :wq; git commit -am 'typo fixed'; git push; make
- GUI = Run/Switch/Open GUI. Open Project; Select filename.txt and click edit; Menu/Shortcut key to Find/Replace; Click find; type "tipo"; click Replace; type "typo"; Click File/Save or Shortcut key; In another place / tool click commit, checkbox on file changed; click Text section; type "typo fixed"; click submit; click Make.
- News paper wants to reorganise the front page, edit some of the content, and format it for the Web, iPad and Print - within the next 15 minutes.
- Word users - lost cause
- Text only users - possible but editor would probably want to see the front page
- Clever build system - only way. Combination of tools including GUIs.
Now I don't want to choose GUI vs Command line. It is more complicated than that. As a Mac, Linux and iPad user I love GUI.
A place for easy
I want to point out that I fall back to using the easy GUI all the time. My recent system is controlling a 3D printer, and I am using the GUI tools even though they all work probably faster and better from the command line. Why? Because I can learn how to use the GUI tools in a fraction of the time. Chances are I will move to command line as I learn what I need.
Other tools I stay in GUI. My calendar is a good example. I am sure there is much faster and more efficient ways to edit calendars, but I spend about 1 minute a day editing calendars.
Video editing - just feels better through a GUI.
This is not even against WYSIWYG. There is a brilliant talk on a programming system where you can see in real time what your code changes will do to a game. Highlighting even the elements, and the code that generate an element. BUT... when it comes to making changes you don't then popup a GUI game editor, but edit the CODE (which is Text)....
Why it matters to me
You can read literally 100s of books that talk about how to do software development and programming of all types. These books will talk about ways to improve your development, mostly in the software itself rather than the tools. E.g. using Patterns, or OOP, etc. Lots of techniques on how to organise your code to allow for refactoring, rearranging, working in small reusable components, testing, etc.
What about documentation? Using Word for example to write a reasonable length document is like writing one large monolithic function, rather than breaking things up into reusable components. More than just organisation it also mixes presentation with content - again something programmers are taught not to do.
Why are programmers taught all this. To save time, HEAPS of time. So why don't we do this with documentation? And I think the answer is, the type of user. The POTS vs the Ws.
The type of people that become software developers tend to have particular mentalities (stereotype to follow) - never want to waste time or be inefficient. So when I find going through a document and finding and removing all the manual page breaks that we just can't figure out how to remove with styles, after spending 3 peoples time trying, my attitude is to curse word, while the other non programmers just say you get used to doing it that way.
I love watching movies and seeing how they get around these issues. In Oceans 13 the security person types (paraphrased, can't look it up right now) "send profiles to CEO". This concise sentence takes the profiles being displayed and sends them to the CEO to view.
In a POTS world, it would have probably been shorter, something like "cat *
|mail ceo" (silly example of course).|
in a Ws world the user would have highlighted it with a mouse, or selected "Select All" from a menu / keyboard shortcut. They would then right click and select "Mail to" or drag those entries into the Mail. From Mail they would type "ceo" and select the CEO, or choose it out of a list, and click send.
In my example of course, Mail is just my use of sending something to someone - it could be any protocol or program. e.g. dropbox, or Twitter, or local file servers with proprietary IM.
The point... A movie watcher would not only get bored watching the Ws at work (it just takes too long) they would also be confused, as it is not obvious what the user is doing in that time.
Of course the POTS would also confuse the audience.
So natural language is chosen instead. And it works. Quicker to type, and people can see what you meant.
Real world examples
I want to go through some real world examples...
- Fighter pilot systems
- Army intelligence
- GIT and Github (good because git is built into many IDEs)
- 3D Designing (big use of scripted 3D design instead of GUIs)
- Documentation (books, large projects, small projects, government)
- Software development (pretty well covered)
Why is boostrap (HTML/CSS from twitter in this case, since in a few years that reference may be obscure) so popular? Why can't you use Dreamweaver to manage your entire company web presence, including content, design, generated content, desktop and mobile HTML...
We can apply everything we do in software development to documentation. Of course I should say that we DO apply what we do in software development to documentation. Some examples:
- Automatic generation - like code generation, might be stats into chart
- Compilation - converting formats, making a set of data into a vector chart and then into a raster chart to export as a PDF (for example)
- Testing - This is a huge area, probably not done as well as it should
- Spelling, Grammar - obvious stuff
- Duplication - Checking that we are not duplicating too much (how?)
- Terminology - It keeps changing. Someone creates a new acronym. Keep it up to date.
- External sources - could be "how many people live in..." or just the reference / URL to that source. Make sure they are working, and up to date.
I have seen many of these techniques done, especially with some good TeX (and other) markup, build, make systems with output. But guess what... all have them have been done by developers.