I think everyone who wants to design anything, software, hardware, woodworking, ceramics... medium doesn't matter... should read the Design of Everyday Things<p><a href="https://en.wikipedia.org/wiki/The_Design_of_Everyday_Things" rel="nofollow">https://en.wikipedia.org/wiki/The_Design_of_Everyday_Things</a><p>Then I would recommend 100 Things Every Designer Needs to Know About People, 2nd Edition by Susan M. Weinschenk<p>Why do I recommend this? Because so many engineers and developers don't realise that the rest of the world (i.e. your Users) don't think like you do.<p>Before you even sit down to code take a pen and paper, and ask your self what is the purpose of this program, what problem am I trying to solve for my user?
What would they like to see first, then what would the next view look like and why?<p>Then sketch it out on paper, doesn't need to look good, it just needs to give you an idea of what the application does for the user. Try to keep it as simple and intuitive as possible. Then take it to a mock up tool there are several, and make an interactive version of it, and try it out on people. Your family and friends are going to be nice and not say what they really feel so tell them to be brutal, go for the emotional damage if you will. You need to know if it's shit before coding.<p>Then once you have the UI/UX designed, you can approach data model, and the rest. But first understand the problem or question you try to solve for, and the users of the app, design around that, and the rest will fall in place.