You can decide if you want to use GUIDE or create the GUI programmatically. I definitely prefer the latter.
You can either start with the GUI or with the computational part. But it is important, to keep both parts strictly separated. The calculations should not use any detail of the GUI, because this would increase the complexity without any benefit and future modifications would be much harder. You can reach this by developing the calculations part at first, which is started with several input arguments. And the GUI creates these inputs and starts the main function of the calculations.
A counter-example, I've found in a code I was ask to maintain:
% ... In the middle of the calculation:
handles = get(GuiH, 'Children');
if get(handles(17), 'Value')
...
Then it was very complicated to figure out, what the 17th handle is only by reading the code. And adding a new object to the GUI demands for massive changes in the part for the calculations. Don't write such junk.
I have problems to formulate clearly, it is after midnight but still very hot in Heidelberg. I hope it can be understood.