Of the many pieces of feedback that have been publicly posted for Windows 10, the following request to eliminate error codes and to use plain language caught my eye:

Now, on the face of it this seems like a simple and worthwhile request, one that would significantly and measurably improve the experience of installing apps from the Windows Store.

But, I don’t think it will happen. Here’s why.

It’s not a lookup

You can’t take an error code and just look up an appropriate message to display to the user. Each error code describes a problem - something that went wrong - at a very specific level. Seldom is it clear what fix is required to address a specific problem.

For example, what if the installation of an application failed because one of the files couldn’t be written to the disk. What’s the actual cause of the problem?

Each different cause is likely to require different actions from the user.

Potential cause: The disk is now full

  • User needs to free up space by deleting files and emptying the recycling bin.
  • Or, an administrator needs to run a disk cleanup, removing crash reports and backup files.
  • Or, if the machine is virtual, an administrator might increase the size of the hard drive to make room.

Potential cause: Insufficient remaining quota

  • User needs to reduce quota use by removing unused programs or documents.
  • Or, an administrator needs to increase the disk quota allocated to the user.

Potential cause: False positive from security software.

  • The appropriate antivirus or antimalware software needs to be updated or upgraded to eliminate the false positive. This might require an administrator and it might have an associated cost.

Potential cause: True positive from security software

  • Don’t install the software because it has been correctly identified as dangerous.

Potential cause: Hardware problem with the disk

  • Fix the underlying hardware issue (urgently!) before trying again to install the software

Potential cause: Network issue communicating with storage

  • If the machine is virtual, fix the underlying network issue and try again.

How do you communicate all these possibilities with the user in a “brief but meaningful description” of the problem and how to remedy it? Keep in mind that here the underlying cause “Unable to write a file to the disk” is a simple one that most end users will understand easily.

Error codes are precise

Error precise are universal - they can be easily transcribed, shared, Googled or Binged.

If your installation fails with error code 0x80070005 then you can easily search for help. In fact, you are likely to be drowning in information - at the time of writing, a Google search for 0x80070005 returns 391,000 results and a Bing search returns 620,000 results.

On the other hand, if your installation fails with the message “Unable to save file”, the likelihood of finding a useful answer is significantly lower, with a Google search returning 171,000,000 results and a Bing search returning 20,300,000.

The lack of precision in the later search term results in a large level of “noise” in the results, making it harder to find the actual answer you need.


Each distinct phrase included in Windows needs to be translated into all of the 100+ languages supported by Windows.

Such translation involves a lot of expertise from multilingual speakers, with each suggested translation being reviewed from multiple angles before being accepted. This makes economic sense for terms like “My Computer” and “My Documents” that are seen by tens of thousands of users every day, but for error messages that would be seen by only a small fraction of users, and in most cases, only once or twice ever, simple economics makes translation unviable.


Despite the attractiveness of getting plain English messages instead of cryptic error codes, I don’t believe that it’ll happen any time soon. What do you think?


blog comments powered by Disqus
Next Post
Refreshed Document.Factory Beta  09 May 2015
Prior Post
The Only Constant is Change  17 Mar 2015
Related Posts
Browsers and WSL  31 Mar 2024
Factory methods and functions  05 Mar 2023
Using Constructors  27 Feb 2023
An Inconvenient API  18 Feb 2023
Method Archetypes  11 Sep 2022
A bash puzzle, solved  02 Jul 2022
A bash puzzle  25 Jun 2022
Improve your troubleshooting by aggregating errors  11 Jun 2022
Improve your troubleshooting by wrapping errors  28 May 2022
Keep your promises  14 May 2022
April 2015