1. Never be idiot-proof
Never develop your application to “second-guess” or “compensate.” Doing so will only give the impression that the application is smarter then it actually is, and eventually intent-errors will plague you. Remember, computers are built on the foundation that it cannot guess correctly what you want. That is why everything is explicit.
2. Expect the unexpected
There is absolutely no doubt that you will run into issues you never dreamed you would encounter with your application. Your best bet is to prepare yourself for these issues as much as possible. I recommend two or three punching bags.
3. Experience, Experience, Experience
Experience drives good practices. Good practices lead to a good product. I cannot stress that enough. However, you must be patience because only through time will you will gain experience.
4. Start small
An Onion is made up of layers upon layers of work, built upon previous layers, and layers before that- All the way down to the seed that sparked your creation. If you try to take on something big, first thing, you will fail. You will loose yourself upon the thousands and thousands of standards, features, ideologies, et cetera, that need to be accounted for in order to make a program good. So start small and don’t spread yourself too thin. Focus on the functionality first, worry about the design and other necessities later.
5. Be Creative
There are no limits to your imagination. Write down all of your ideas and consult your friends and others on ideas and feedback as well. The best thing to do is implement all the ideas you and others reasonably have first. If you plan on doing it later, don’t. Do it now. If you delay it for a future version, it will only be harder. If you will, once you bake a cake, you can’t easily go back and change the filling.