Heuristics Evaluation

When you create a product, you need to test its Usability. According to the ISO9241, Usability is the "effectiveness, efficiency and satisfaction with which specified users achieve specified goals in particular environment."
If your product has some interactions, if it's a website or an app, the heuristic evaluation is necessary. It will help you assess the effectiveness, efficiency, accessibility, learnability... by testing the following Jakob Nielsen's 10 requirements.
1. Show system status: Tell the user what is happening. In a process, he should know how many steps there are, in which one he currently is. Limitations in numbers of characters, space should also be clear. If something has been changed, let them know, propose to save, explain what is going to happen next and inform about completion of a task: has it all been finished properly?
2. Use Familiar Language and Metaphors: Adapt to your user, not to your company. The content should fit with their language, culture, slang. If you have lists for example, be sure the users are familiar with all the different options or they risk to pick one choice just because they didn't understand some of the others. You can also bring the real world through graphic metaphors (typically the shopping cart or the page corner that folds a bit to show you can turn the page of an e-book).
3. Give control and freedom: Make an interface that can be personalized (tabs, favorites, shortcuts...). Create a feeling of freedom by letting the user undo/redo, go back or continue whenever he wants.
4. Consistency and Standards: Don't lose the user, keep a template between the different pages, and think especially about the position/shape/color of action buttons. Consistency should be kept within layouts but also in the content. Regarding interface design, there are standards, some evolve, some have been there for years (think about the floppy disk!), don't try to re-invent them.
5. Error Prevention: Showing system status is actually a first step in preventing error, indeed telling the user that something is about to be erased can prevent data loss. Using previews is another way as well as making clear the different choices. People have dozens of passwords and usernames nowadays, so help them recall which one corresponds to your website. Prevent bad imputs and in case they did something wrong explain/show what to do instead, it's much better than just saying "ughh something wrong happened". And allow them to Undo!
6. Recognition over recall: Don't ask your user to use his memory, make the tasks effortless, and let them reach easily the help whenever they need. A "My coffee" button can be good on a machine, as it will allow the user to save it's own coffee taste, but 3 weeks without drinking coffee and he will have forgotten what was this coffee he saved.
7. Flexibility and Efficiency: Whatever the level of your user, the interface should adapt. It should also enable the user to enter his own answer or chose within a list. Relevant recommendations can be a good way to guide with flexibility but always keep in mind that too much flexibility can lead to a lack of efficiency. A typical lack of flexibility and efficiency is the calendar: think about when you have to go through it month by month to reach your birth date, or when you don't know the format you should use to type it.
8. Aesthetics and Minimalistic Design: On websites and apps, the "above the fold" is crucial. It's the part the user will see without scrolling, so it should better show the important information. Differences in colors, background, shape should have a meaning. White space brings focus, don't forget to use it.
9. Recognize, Diagnose, recover from errors: If the user did a mistake, explain it clearly, give him some solutions or alternatives. Not many people understand what "Error 404" means, so help them find their way.
10. Help and Documentation: Help should be "helpful", and to do so, visual examples can be a good solution. The less the user needs help the better, but sometimes, you need to explain and it should be done in a clear, concise way. "Terms and conditions" is a sensitive topic: no one reads them so if you really want to make it a good experience, it can be nice to summarize the most important points and still give access to the whole document.