I’ve just spent the last three days setting up LESSON (our web based marking system) at our sister school in Tyre. In the process, I’ve learned several things about web applications:
- Make sure to get your database right at the beginning. I’ve been working on LESSON on and off over the last five years, and there are some things that have been added onto it. Most of the time, I’ve extended the database in a nice, clean way, but there were a few times where I didn’t. I decided to fix these problems before doing a new deployment, and there have been several things I’ve had to fix as a result.
- Make sure your frontend is modular. I seem to have a real problem with writing modular code. I don’t know why it is, but my normal tendency is to write One Big Page. In writing LESSON’s frontend, I do include things like the header and footer, but I have liberally copied and pasted similar pages rather than abstracting out common functions. When I changed the database, it took 30 minutes to make the changes to the necessary tables and convert the data. It took 5 hours to get the frontend back into a semi-working state. I spent another few hours over the weekend on it. And I will need to spend even more time over the coming weeks, mainly doing search and replace (with enough issues that much of it is manual).
- Don’t take shortcuts. So, yeah, at some point our school needed a way of checking past days’ attendance. I was obviously in a hurry to implement it and somehow decided that the fastest way was to create a “calendar” table. This table contained every day from January 1, 2005 (shortly before LESSON was deployed in our school) to January 1, 2065. When I saw this over the weekend, I almost threw myself over the balcony (five stories up). I ended up fixing the one(!) page that used this table and running a DROP TABLE.
The good news is that everything seems to have come together with few glitches, and, along with their new Fedora 11 desktop roll-out, Tyre has a great new system.