Once I realized that software features had a duel confirmational and functional aspect, I began to see that pattern at all levels. While it is much more apparent in transactional or workflow application, it can be found anywhere in software.

Keep in mind that currently, because it is traditional written after the functional part of the feature, the confirmational aspects may be missing or poorly implemented. Google does a pretty decent job on simple usability, so let’s look at Gmail for a visible example of the conformational versus functional aspect of features.

Sending an Email

When I send an email from GMail by clicking the send email button, I am exercising the functional aspect of sending an email. My button click causes browser code to execute and a call gets made to the server which uses SMTP to send that message to the recipient(s):

But how do I know it worked?

It can be helpful to think of confirmation as a contract for the software that answers this question. Actually reading the contents of the recipients inbox to validate the email was sent poses security and privacy issues. ‘Read Receipt’ type approaches also are not generally excepted social practices outside of some segments of the business world. So, the ‘contract’ is fulfilled by Google by putting a banner at the top of the browser (something added during the time when sending an email became an AJAX call, instead of a page submit):

And by maintaining a ‘Sent Mail’ folder which offers of view of all email that have been sent:

Features Within Features

Font Editing

Even the small operations in the email text editor itself are split into functional and confirmation aspects:

The functional aspect is invoked when the buttons are clicked and the functional operation that is performed is to modify the underlying text representation (I believe Html).  What is the confirmational aspect? Why the WYSIWYG visualization!


The spell-checker confirms by high lighting the misspelled words. The functional aspect is the looking up of each word in a dictionary:

In the Chrome browser, misspelled words are just high lighted without invocation (no button pressing required). This minimizing of the functional aspect is something that is encouraged in confirmation-first development. Good design means minimizing steps as user’s first click is on how to correct the mistake, not click to see if there are any mistakes, then having to click on the mistake.