I would make sure you are doing usability testing at every opportunity - using paper wireframes, using prototypes, using real code. As soon as you have a rough idea, test it on the 5 nearest people, anything they don't get or find difficult, try and change the design to make it better, test another 5 people (some different, maybe one the same) see if things have improved. Once you have a rough idea that seems to work, make it higher fidelity, test that on 5 people, keep going like this until you have something in code.
Then once it has gone live to users, listen to feedback, use analytics etc to see where people are struggling. You'll need to weigh these issues up against what stakeholders might want in terms of new features to decide what to fix / design first.
Make sure you test any changes or new features before they go live.
Hope this helps