# Teaching Users to Read

**URL:** <https://discourse.codinghorror.com/t/teaching-users-to-read/1278>\
**Category:** blog\
**Created:** [October 25, 2004, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278 "2004-10-25T00:00:00Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![codinghorror](https://discourse.codinghorror.com/user_avatar/discourse.codinghorror.com/codinghorror/32/36371_2.png) [@codinghorror](https://discourse.codinghorror.com/u/codinghorror)\
**Post date:** [October 25, 2004, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/1 "2004-10-25T00:00:00Z")

</div>

I've talked about [irresponsible use of dialog boxes](http://www.codinghorror.com/blog/archives/000019.html) before, but a few pages I've read recently highlighted an interesting aspect of this topic that I hadn't considered. First, [Joel Spolsky](http://www.joelonsoftware.com/uibook/fog0000000249.html):

* * *
This is a companion discussion topic for the original blog entry at: [http://www.codinghorror.com/blog/2004/10/teaching-users-to-read.html](http://www.codinghorror.com/blog/2004/10/teaching-users-to-read.html)

---

<div class="post-metadata">

**Author:** ![Darrell10](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/d/0ea827/32.png) [@Darrell10](https://discourse.codinghorror.com/u/Darrell10)\
**Post date:** [October 26, 2004, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/2 "2004-10-26T00:00:00Z")

</div>

The reason it defaults to My Documents is what happened when Microsoft tried doing bullet #2: when non-primary users of the computer changed the last saved location to anything else, the primary computer user thought the document disappeared (since most novice computer users don’t understand the file system). UI guy Alan Cooper even has one of his belabored stories about it.

That’s one of those times where a novice and an intermediate person differ. I think there should be a per-user option to change that behavior.

---

<div class="post-metadata">

**Author:** ![codinghorror](https://discourse.codinghorror.com/user_avatar/discourse.codinghorror.com/codinghorror/32/36371_2.png) [@codinghorror](https://discourse.codinghorror.com/u/codinghorror)\
**Post date:** [October 26, 2004, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/3 "2004-10-26T00:00:00Z")

</div>

Burton, thanks for the great compliment-- but I think they’ve even had Alan Cooper on DNR. They rate much better guest speakers than me. ;)

Beginning users should log in under their own account, so I still don’t see why the preference cannot be saved. Unless users don’t understand logging off, so they all end up using the computer under the same account, which is quite possible..

---

<div class="post-metadata">

**Author:** ![Ian\_Murphy](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/i/35a633/32.png) [@Ian\_Murphy](https://discourse.codinghorror.com/u/Ian_Murphy)\
**Post date:** [October 26, 2004, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/4 "2004-10-26T00:00:00Z")

</div>

Partly the problem is the users themselves.

I recently wrote a small intraset website for a client. Before acceptance they required that I add in dialogs after certain events (writing to a db) had succeded or failed … duplicating what they already had prominantly displayed on the screen… such is life.

Ian

---

<div class="post-metadata">

**Author:** ![JeremyB](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/j/ad7895/32.png) [@JeremyB](https://discourse.codinghorror.com/u/JeremyB)\
**Post date:** [October 27, 2004, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/5 "2004-10-27T00:00:00Z")

</div>

It’s not too incredibly difficult to store the last directory used and then pass that to the file save dialog. You could do the same when using the BrowseForFolder stuff through Win32 calls, .NET, or wherever you decide to use it. It’s a little tedious extra step, but I code around small annoyances like this.

I’d rather have this behavior than to pollute the registry with more meaningless control storage like the AutoComplete stuff. You do realize you would have to store some value for EVERY CONTROL that uses this, not just some “master file save dialog default”. Your app would compete with any other app on the system which doesn’t sound too fun to me.

---

<div class="post-metadata">

**Author:** ![Detky](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/d/ebca7d/32.png) [@Detky](https://discourse.codinghorror.com/u/Detky)\
**Post date:** [March 28, 2007, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/6 "2007-03-28T00:00:00Z")

</div>

Thinking in the last two points “Save as path” and “dialog boxes”, comes to my head a generic dialog box that will match in the most of the cases:

Change the user and press a key…

;)

---

<div class="post-metadata">

**Author:** ![Andr\_Neves](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/a/9de053/32.png) [@Andr\_Neves](https://discourse.codinghorror.com/u/Andr_Neves)\
**Post date:** [August 12, 2007, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/7 "2007-08-12T00:00:00Z")

</div>

Ok, I admit that this is a very late reply.

About Darrell’s reasoning on why Windows is not flexible over the “last folder” thing, I answer that, in that case, a good and simple solution would be a drop-down box with the last saved locations.

Indeed this “default My Documents” folder pissed me off a lot on the days I used Windows, as well as almost all the folders that were automagically created - with, excuse me, very stupid names like “My Music”.

Oh, “My Computer” every time got renamed to “Computer”.

---

<div class="post-metadata">

**Author:** ![Mike\_Hall](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/m/3d9bf3/32.png) [@Mike\_Hall](https://discourse.codinghorror.com/u/Mike_Hall)\
**Post date:** [August 31, 2007, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/8 "2007-08-31T00:00:00Z")

</div>

Well designed software definitely will anticipate user needs, remember past preference and choices, and protect users from themselves, however those things can be difficult, long and consequently costly to implement. Why would your manager want you to implement a complex undo system, when you can simply pop up a dialog and make the user confirm their choice? Sure it’s not as cool, but cool isn’t usually what project schedules are about… not that that stops us from implementing them at times anyway :)

---

<div class="post-metadata">

**Author:** ![john\_wolfe](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/j/ad7895/32.png) [@john\_wolfe](https://discourse.codinghorror.com/u/john_wolfe)\
**Post date:** [January 24, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/9 "2008-01-24T00:00:00Z")

</div>

wow i love the blog most deff adding to my favorite list thanks for the comic strip laught.

---

<div class="post-metadata">

**Author:** ![rosiebeth](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/r/b5e925/32.png) [@rosiebeth](https://discourse.codinghorror.com/u/rosiebeth)\
**Post date:** [February 6, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/10 "2008-02-06T00:00:00Z")

</div>

you need to put some stories that you can read on there xxx

---

<div class="post-metadata">

**Author:** ![OMG1](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/o/ecccb3/32.png) [@OMG1](https://discourse.codinghorror.com/u/OMG1)\
**Post date:** [May 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/11 "2008-05-19T00:00:00Z")

</div>

OMG

---

<div class="post-metadata">

**Author:** ![ebola](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/e/ee7513/32.png) [@ebola](https://discourse.codinghorror.com/u/ebola)\
**Post date:** [May 20, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/12 "2008-05-20T00:00:00Z")

</div>

this is a very late reply, but did you know that most of the options I have seen refered to here are default settings on mac os x leopard?

---

<div class="post-metadata">

**Author:** ![DanielR](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/d/f17d59/32.png) [@DanielR](https://discourse.codinghorror.com/u/DanielR)\
**Post date:** [November 1, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/13 "2008-11-01T00:00:00Z")

</div>

I add this very late comment only to mention that the abovementioned Alan Cooper story is now available on Google Books, here:  
[http://books.google.com/books?id=04cFCVXC\_AUCpg=PA11lpg=PA11dq=%22alan+cooper%22+%22my+documents%22source=blots=jfvgY5n3kPsig=MFhjq6Op9DZZFeSRuNDKmJhy07Ihl=ensa=Xoi=book\_resultresnum=1ct=result](http://books.google.com/books?id=04cFCVXC_AUCpg=PA11lpg=PA11dq=%22alan+cooper%22+%22my+documents%22source=blots=jfvgY5n3kPsig=MFhjq6Op9DZZFeSRuNDKmJhy07Ihl=ensa=Xoi=book_resultresnum=1ct=result)

---

<div class="post-metadata">

**Author:** ![Sean\_Hagen](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/s/85e7bf/32.png) [@Sean\_Hagen](https://discourse.codinghorror.com/u/Sean_Hagen)\
**Post date:** [November 23, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/14 "2008-11-23T00:00:00Z")

</div>

The save dialog not showing the last used directory is not a Windows specific problem. It also seems to be both a Java and Linux problem. I can’t count the number of times where a program has presented me with a save dialog and the folder it’s showing me isn’t where I opened the file from, let alone the last place I saved the file to.

This doesn’t happen all the time though. I’ll admit that some programs do a pretty good job, it’s when they trip up that bothers me. It seems to happen more with programs that use a GUI library that differs from the desktop environment ( ie, non-Gnome programs running in Gnome ). One of the small costs of using Linux I guess.

Actually, what really bothers me isn’t even the save file dialog, it’s when open file dialogs trip up. For example, the editor that ships with Processing ( [http://processing.org](http://processing.org) ) is kind of messed up. The default folder it presents when you go to open a file is the directory the editor was launched from. I think that’s a Java thing though. Just kind of bothersome when the folder that the editor is in is nowhere near my home folder!

---

<div class="post-metadata">

**Author:** ![hribek](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/h/bc79bd/32.png) [@hribek](https://discourse.codinghorror.com/u/hribek)\
**Post date:** [November 27, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/15 "2008-11-27T00:00:00Z")

</div>

1. 

Something similar on brilliant article by Joel Spolsky : [http://www.joelonsoftware.com/uibook/chapters/fog0000000062.html](http://www.joelonsoftware.com/uibook/chapters/fog0000000062.html) .  
1.  
Hello application x crashes? What am I supposed to do?  
Tech tech tech tech tech tech tech tech tech tech tech tech and tech tech tech tech tech.  
What is tech  
Tech, its tech tech tech tech tech  
This software is pieces of … Software X is rules.  
I like people like you, have you considered tech tech tech? Tech is always better than tech tech tech, tech tech  
…  
For stability’s sake user just wants application whose source code does _not_ include somethig like:

LPSTRZ lpstrzFoo(int x) {  
char \*cbzBar = malloc(x \* x);  
cbzBar[2] = gets();  
if (!strstr(cbzBar, baz))  
return 0x12345;  
}  
Programmers should reflect upon wiki wiki web [http://c2.com/cgi/wiki?WikiWikiWeb](http://c2.com/cgi/wiki?WikiWikiWeb) .  
2.  
There is also necessary complexity. And sometimes you need expert to work with it. But in casual application its a bad thing.  
Also reminds me of mine english teacher who said.

You don’t understand it until you make your grandma uderstand it.

I apologize for my poor english. It’s not fault of this teacher ;)

---

<div class="post-metadata">

**Author:** ![Burton](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/b/8e7dd6/32.png) [@Burton](https://discourse.codinghorror.com/u/Burton)\
**Post date:** [February 6, 2010, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/17 "2010-02-06T00:00:00Z")

</div>

I just discovered your blog via your [vb.net](http://vb.net) user control rewrite of the CAPTCHA code. You, sir, have been bookmarked. You should be on DotNetRocks (internet audio show)! I don’t know if they’ve done a show on human factors.

[http://www.franklins.net/dotnetrocks](http://www.franklins.net/dotnetrocks)

---

<div class="post-metadata">

**Author:** ![anon97](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/a/7ba0ec/32.png) [@anon97](https://discourse.codinghorror.com/u/anon97)\
**Post date:** [February 6, 2010, 12:00am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/18 "2010-02-06T00:00:00Z")

</div>

stop putting links in the middle of a damn paragraph. makes impossible to finish without getting pissed off at things that have nothing to do with each other.

---

<div class="post-metadata">

**Author:** ![fuhrmanator](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/f/258eb7/32.png) [@fuhrmanator](https://discourse.codinghorror.com/u/fuhrmanator)\
**Post date:** [July 25, 2014, 3:45am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/19 "2014-07-25T03:45:12Z")

</div>

Boomerang (1989?) on the Mac solved quite well the problem of returning to the last directory – Windows 7 and 8 still don’t get it right (Recent Folders only partially works). [http://macgui.com/usenet/?group=14&id=31916](http://macgui.com/usenet/?group=14&id=31916)

---

<div class="post-metadata">

**Author:** ![codinghorror](https://discourse.codinghorror.com/user_avatar/discourse.codinghorror.com/codinghorror/32/36371_2.png) [@codinghorror](https://discourse.codinghorror.com/u/codinghorror)\
**Post date:** [January 7, 2025, 6:39am UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/20 "2025-01-07T06:39:31Z")

</div>

Closed on January 7, 2025, 6:39am UTC



---

<div class="post-metadata">

**Author:** ![JimPas](https://discourse.codinghorror.com/user_avatar/discourse.codinghorror.com/jimpas/32/76163_2.png) [@JimPas](https://discourse.codinghorror.com/u/JimPas)\
**Post date:** [January 1, 2026, 6:35pm UTC](https://discourse.codinghorror.com/t/teaching-users-to-read/1278/21 "2026-01-01T18:35:21Z")

</div>

Opened on January 1, 2026, 6:35pm UTC


