What I'm Learning about Application Development
Also, musings on what I'm learning about any program, game or software or website, that anyone other than yourself will use:
THE USER IS THE BEST QA YOU WILL EVER HAVE
The user, will find ways to make your program "not work" that no hired QA will ever be able to. I mainly find this is because the user will try to use whatever it is you've made in ways it's not meant to be used. Also, the user will make their own errors, even if it's staring them in the face, and then say it's your program.
Let's look at an example. I currently have one program in use at the company I work at. It was written in VBA and is an Access database for an in-house phone book. Users can add, edit, and find objects by either company name, or contact/employee name. So today I receive a call for remote support on my program. Apparently, the program isn't letting the user add a contact. They inform me ahead of time that "maybe it's not working because there is already a person there with the same name." I inform them that is not the case, and you can have as many Johnathan McAliases as you want. So I try to add the person in question. As told, the program did not add this person to the database.
This is my first program that people have used, so naturally, I think my program is the cause of the issue. I sat there confused for a moment because I knew I had programmed everything correctly. I go to check the name of the contact already added and ask "what did you say this new guy's phone number was?" The user tells me. It's the -SAME- phone number, and since my program uses the phone number as the primary key, that's the reason it's not adding. So I mentally jot down that I need to add an indicator of some sort that notifies the user if the object they try to add already exists. However, I'm recreating this program along with other features in C#, so I will code it in for that.
So I explain the problem to the user, and ask them to show me how they would "edit" the contact. On my main menu, I have 3 options: Find Company, Find Employee, and Add Company or Contact. The user correctly selected Find Employee and the Employee Contact Form correctly opens. On each of my find forms, the user can begin typing and the program will auto complete what they type. In the search box, I watch expectantly, and wait for the user to type the name of the person they are trying to edit. Instead, they type a company name and inform me they cannot find it. I ask them to read the title of the form. Silence. I inform them that they are trying to edit a person, and not a company.
Lesson learned? MAKE YOUR PROGRAM AS FOOL-PROOF AS POSSIBLE:
Good user error handling goes a LOOONNNNGGGG way. Provide helpful and clear information for the user if something goes wrong, or the user tries to do something that isn't possible
Use any type of indicator. A lot of times, users believe they are right, even if the program is telling them some required textbox is blank, they still think they filled it out. So change the color of the accompanying label, use a shake animation on the textbox, or any other indicator
Pop-up boxes are useless. No one seems to read them except the people that program the software. There maybe some users that read them, but from what I've seen, there are few of them
Don't believe most of what the user has to say verbatim. Chances are, what they are saying is relevant, but they are missing information (it's not their faults as they weren't the ones to program it), or are the cause of their own issue
HAVE CONFIDENCE IN YOURSELF. Don't immediately think there's something wrong with your program, because chances are, there isn't. You might not have added all the relevant user error handling, but that doesn't mean the program doesn't work!
















