One of the easiest things to forget when you are creating a product is what the unboxing or onboarding process would be like. I remember a project I recently did with my friend Uzo. I have been working on this project for 2 months already and then I pulled him on to help. I remember the questions he asked. It was not clear why his user needed to be attached to a school for him to create a program, or that he could not create a To-Do item because he needed to create a Year Semester Week object which had no visible interface and so on and so forth. I realized at that point I had done a bad job, I had been so deep in the project my test data had been so mature that I had forgotten that this was going to be used by people that had no data like Uzo too.
This was something I had learned a long time ago from my favorite product book but it was so easy to forget when you are actually in the battlefield. Always code for the empty state, always code for the onboarding of a user. Imagine what it would be like the first time you use your product. This makes a world of difference between someone dumping your product due to confusion and someone falling in love with it all the attention to detail. I ran into this video today which is excellent in highlighting how paying attention to the little unnoticed grievances can allow you to create a way better experience for all your users.
While you optimize your product for the everyday user, don't forget about those who are experiencing it for the first time.
Stay hungry, stay foolish ~ Steve Jobs