9

I want to make it easier for a user to read and be able to insert an item into a list of sorted items that can start with a capital letter or a lowercase letter.

Does the case matter in this case?

Imagine that I want to add the word bananas to the following list of fruits:

apples
Blackberries
oranges
peaches
Pears
Strawberries

or,

Blackberries
Pears
Strawberries
apples
oranges
peaches

Note that the user needs to be sure that the word bananas is not already in the list before adding it so, in the first case, the user just have to add it after apples and before Blackberries; while, in the second, the user will have to add it after apples and before oranges.

Which one will be easier for the end user?

JFTR: I can't change the capitalization of items because my use case is a convention used as a best practice for programming.

  • 3
    I strongly recommend using a consistent case throughout your list to increase its readbility/scannability. I will get back to you on sources that provide the "why" for doing this. – Benjamin S May 26 '15 at 13:44
  • 1
    longest I've seen are around 20 items. – hvelarde May 26 '15 at 14:16
  • 4
    Is there something useful about having different cases? You could control the case from the frontEnd without depending of what data comes from the server if that the problem. BTW could Bananas and bananas exist simultaneously? – Alejandro Veltri May 26 '15 at 14:29
  • 1
    I tried to clarify the question to explain why I can't change the capitalization of items; yes, I can have bananas and Bananas. – hvelarde May 26 '15 at 15:34
  • 1
    Also, reading the linked information, I think the answer for your question (in the specific case, which seems to be best practices for sorting import directives in a Python program) would be better found on programmers.stackexchange.com As it stands though, the general case is still an interesting topic from a user experience perspective. – Harrison Paine May 26 '15 at 20:04
27

Capitalization frequently matters for sorting algorithms, but seldom matters for end users.

Trying to explain why "a" comes after "Z" to someone who doesn't know what ASCII is can make for a very frustrating user experience.

Your first example is the best way. It makes it easier to find a specific word since there is only one alphabet instead of two. It means users don't have to know if their word was capitalized before they search for it. And it also means they can trust the system when they look for a word and don't find it instead of having so search in a second place to make sure it's really not there.

For example, if someone was looking for "peaches" in your second example, they might stop reading at "Pears" and assume it's not in the list. And, if it's important to know that both "peaches" and "Peaches" exist in the list, they should be next to each other to make it easy to find that out. You shouldn't assume users will read the full list or even keep reading once they've "satisficed" their desire. This is even more important if the list scrolls since users may never even realize there is a second alphabet far down the list.

  • 3
    +1 for talking about users aren't developers. The default case sensitivity of programming languages and sorting algorithms is one of the biggest flaws of modern computer languages. I can't tell you how many bugs I've found that were really just a matter of case sensitivity being applied where it shouldn't have been. – Steve Sether May 26 '15 at 18:01
  • 4
    @SteveSether, perhaps, though case is one of the biggest flaws of Western languages. It is enormously complicated (especially with non-latin alphabets), non-phonetic, and adds very little to communication. – Paul Draper May 26 '15 at 19:08
  • 3
    I think case itself is useful for people to parse sentences. It's certainly very useful in making variables readable. TheGuysName is more readable than theguysname. It's also useful for EMPHASIS. It's also useful in a few cases for proper nounds. When I say White House you know I'm talking about the US presidents mansion, but white house might just mean my neighbors house across the street. – Steve Sether May 26 '15 at 19:17
  • 1
    @SteveSether i don't think case itself is useful/necessary for people to parse sentences. it's certainly not very necessary in making variables readable. the-guys-name is more readable than theguysname. It's also not necessary for emphasis. it's also not necessary in a few cases for proper nounds. when I say white house you know I'm talking about the us presidents mansion, but white house might just mean my neighbors house across the street. – David Mulder May 27 '15 at 11:30
  • Wow, it felt weird writing like that, but realizing that modern typing is done nearly exclusively on computers I actually think upper case letters seem to be entirely redundant. Especially at the beginning of sentences it's weird we have both a full stop and a upper case letter. In that sense a language like German makes better use of upper case letters. – David Mulder May 27 '15 at 11:34
9

It matters because if it's sorted by case, you are sorting by two criteria (case and then alphabetical order) instead of 1 (just alphabetical order) thus having two implicit sublists, which adds cognitive load. 99% of the time implicit representations are terribly bad for users.
So when scanning for a lower-case word users will have to:

  1. (first time) Search the item top to bottom (of uppercase-list) without finding the word, then...
  2. Realize that the first portion was for upper-case letters / locate the end of uppercase list.
    (which might be confusing for some users)
  3. Search and find the lower case word.

Compared to:

  1. Search and find the lower case word in the list.

So I'll go with the latter (the first in your example).


EDIT corresponding to the question edit:

Note that the user needs to be sure that the word bananas is not already in the list before adding it so, in the first case, the user just have to add it after apples and before Blackberries; while, in the second, the user will have to add it after apples and before oranges

That shouldn't be user's responsibility, you could inline validate to prevent them to insert repeated items. Additionally you could add marks to tell him/her where the item is going to be inserted in the list.

mockup

download bmml source – Wireframes created with Balsamiq Mockups

As a side note, if the capitalization has meaning for the system but not for the user and your application runs on a browser, you can just style the text with the CSS property text-transform (thanks to @jayla for suggesting it instead of JS code), for example:

li {text-transform: capitalize}  

or

li {text-transform: lowercase}
  • 1
    I would suggest capitalizing via CSS over javascript string manipulation. li {text-transform: capitalize;} Being as it is on the display level there is smaller risk of populating the string changes if there is data-binding involved. – landro May 27 '15 at 16:09
  • @jayla Thanks for commenting, and yes, your suggestion is better than the JS approach, I'm editing. – Alejandro Veltri May 27 '15 at 16:42
3

Does case matter? Perhaps.

Are the users entering the data or is this data being supplied by the system? You know your users. What will they think about the lack of consistency? If they entered the data they may not think anything about it. If they are readers of system provided information then I will be very surprised if the overwhelming majority wouldn't have a negative perception of the application and the company in general.

After all wat wuld u think about a sight w mispellngs and texting shorthand? It may be appropriate in some circumstances but in general it's not a good idea.

EDIT:

I would highly recommend that you pick one format or the other and stick to it. It's easy to keep the data in one format and present it to the user in another. In general, if it's a US based clientele, I would recommend that you capitalize the first letter of each item in the list.

  • data is a fixed set of strings provided by the system; some of them start with a capital letter and some of them are all lowercase. I added more details to the question to make it more clear. – hvelarde May 26 '15 at 13:58
  • I can't capitalize the first letter of the items in the list; the list is a mix of items. – hvelarde May 26 '15 at 14:21
  • I don't understand. All scripting languages (ASP,CFMX,PHP ...) let you manipulate strings. You can keep it as whatever in the database and present it to the user as whatever you want. For example in PHP: $foo = ucwords($foo); – Mayo May 26 '15 at 14:35
  • I think the question is clear: does case matters when reading and sorting a list of items? all other information is just context. – hvelarde May 26 '15 at 15:09
  • 1
    Yes. Case Matters. Especially consistency. But in the previous comment you wrote that you "can't capitalize the first letter of the items." Why? What prevents you from capitalizing the items? – Mayo May 26 '15 at 15:16
1

I recall seeing in a rather old book of usability guidelines (Leavitt and Shneiderman):

Capitalize First Letter of First Word in Lists

Capitalize the first letter of only the first word of a list item, a list box item, check box labels, and radio button labels.

Comments: Only the first letter of the first word should be capitalized unless the item contains another word that would normally be capitalized.

Sources: Bailey, 1996; Fowler, 1998; Marcus, Smilonich and Thompson, 1995; Microsoft, 1992.

And despite many usability guidelines from so long ago not quite standing the test of time I think this basic rule of readability does hold up well (yes, its aim is more about not capitalising when you go beyond one word but capitalising that first word is also a thing to do)

How much it matters and how much failing to capitalize words will impact readability...that is debatable. But I would definitely say that a capitalized list is easier to read.

And yes. As others have said consistency should be your main target.

1

If I miss an item because a programmer was too lazy to sort properly and put all lowercase letters after all uppercase letters, I'd be really annoyed.

Look at what tools you have available. For example, on iOS / MacOS X it is trivial to sort letters including accented letters in their right order, independent of lowercase and uppercase, or sort numbers correctly (8, 9, 10, 11 and not 10, 11, 8, 9). Or sorting ß like ss and sorting ligatures correctly. Plus taking the locale of the user into account, so on a Swedish system Ångstrom follows Zulu, but on a US system it is sorted within the A's. I suppose similar functionality is available on any decent programming environment.

And the user should most certainly not be responsible for checking whether an item is already present and where it would be inserted into the list. Have a UI element that allows adding items, and when the item should be added, check whether it is already present (and make sure Banana and banana and BANANA or taken as duplicates), and move it into the right position. Preferably in a way that allows the user to see that it has been inserted.

And I hate tools that change what I type.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.