I've always thought of tip #3 "top down, then bottom up" slightly differently. I will take a programming task and break it down into loosely coupled chunks, then further subdivide those. At some point I get to the core of the program, the most important part. I then code that part so it does what it needs to do in the most efficient manner possible. I then back up one layer and work to make sure the lower layers have everything they need to work.
At U(W) I coded a 68K RTOS following this method. The first thing which was coded was the task switching routine. I knew it needed to happen in as few cycles as possible. The rest of the RTOS was built to ensure that task switching subroutine needed to do as little work as possible. Thus the RTOS had lightning fast task switching and the rest of the RTOS was equally efficient.
--ericball Fri, 25 Feb 2005 16:20:50 -0500