Hello Andrew,
You wrote:
I must be strange then I started with the db, then did the GUI, and finally came back to the network.
This is the path I took as well and am glad that I did. The database piece is the most involved since data access logic needs to be worked out. Next, the locking strategy needs to be thought through.
As Andrew is recommending, I then worked on getting the application working end-to-end (rough-cut) without worrying about the network. It was easy to debug since I was more-or-less working in the standalone mode, i.e., no networking!
Once, it started to work. It was easy to plug-in the network piece. You have to be careful though and make sure that you use Adapters/Mediators/Brokers/Facades whatever you want to call them. The key strategy in all of them: 1. Introduce one layer of indirection. 2. Localize and isolate your change points.
In the end, it is somewhat related to our backgrounds and how we think.
Regards.
Bharat
SCJP,SCJD,SCWCD,SCBCD,SCDJWS,SCEA