Java Basics

Start with the GUI or Model?

Assuming the GUI and the model are separated, as they should be, where should the design start, and the effort of the first iterations be put?

GUI. A good argument can be made for starting with the GUI: it's motivating, it's critical to get feedback from the customer, it helps understand what needs to be done, ...

Model. The model or business logic is the most essential, and unvarying, part of the design. It should be usable by a number of different interfaces. This must be gotten right, and is therefore a good place to start.

Both/Either? Of course, the experienced designer has no problem imagining the general outline of both the GUI and the Model, so can start with either, or both. The real problem is where a student should start.

I've encouraged students to start with the GUI, thinking that there are a lot of GUI issues they have to work out, and they can get something running early. I'm not entirely happy with the result -- students often spend a lot of time working on the user interface, often to add minor or frivolous features. Perhaps one reason this is done is to avoid working on the model, which they don't understand as well. I'm thinking of requiring a model design early -- perhaps both as a UML diagram and as code stubs with javadoc.