Dwight has been tasked with developing a web-based front-end reporting system to a job scheduling system for field engineers. The current system consists of a database holding details of field locations, field staff and their level of training, outstanding jobs and status reports on these, with a few low-level reporting tools that use the command-line. These have a wide range of options in reporting style, too many for the field staff to remember. Dwight's brief is to reuse the existing command-line tools as the back-end of a web-based system.
In this brief, Dwight will undertake a lot of stamp-collecting activities himself, and develop a system that will be used by others in their stamp-collecting activities. Whenever Dwight does stamp-collecting work, or creates stamp-collecting tools that his colleagues will use, we'll highlight it with this little icon
.
When writing code, Dwight typically needs to look up a lot of reference material. He re-uses a lot of third-party libraries, both from component resellers' catalogues
and public repositories such as sourceforge
. He may use directory services like freshmeat
or technical news sites
to keep up to date. If he's smart, he may have a newsfeed aggregator sitting on his desktop or on a personal webpage, filtering incoming messages from many sources
.
He's used to picking up new products and APIs quickly by reading the documentation. In addition to coding samples, these typically contain cross-referenced lists of classes and methods
. He keeps several of these open most of the time, for constant reference.
Today he's working on the interface that the field engineers will log into via their laptops. The field engineers work shifts of varying lengths, and need to know what outstanding work there is during their next shift, within a reasonable distance
. The command-line tools can pull this out easily by specifying a start-time and an end-time, a grid reference, and a maximum radius, returning a set of matching jobs. All that Dwight has to do is provide a HTML form for them to specify these parameters, press a button, and then print out a listing of returned jobs
. Easy enough.
Once he gets into it, though, he realises that the dates have to be specified in a certain format, with punctuation in the correct places. If he simply presents the engineers with text fields, they'll always be typing in the wrong formats, which was a big problem with the old system. Maybe he should provide a crib sheet, or an example at the top of the field? Or split the date into day, month, hours, minutes, with fixed drop-down values. Then the page begins to get cluttered and ungainly. Maybe he should offer a checklist of hourly slots in the current day. He thinks wistfully of the pull-down calendar control in his favourite GUI toolkit. If only this wren't a web project. He thinks briefly of implementing such a beast using dynamic HTML or Flash, but he doesn't have the time. So, he settles on a sub-optimal solution, and moves on. At least this page has a nice graphic for the submit button.
The results from the form will be returned as a listing page, sorted by start time
. Some engineers may wish to sort them by length, by location, by type, and Dwight has cleverly saved up some code from a previous piece of work at the company that he can reuse for this job
. This refreshes the entire page, and makes it jump back to the top, but its better than nothing.
He can calculate distance from the grid coordinates as the crow flies. The field engineers travel by road, though, and this information is only partially useful to them. A map showing the jobs would be a nice-to-have, but Dwight doesn't have time to implement that today. Similarly, a gantt-chart-like view showing how jobs overlap with one another might be useful, but there isn't time. So again, he settles for a sub-optimal solution. Adding custom icon types to distinguish different job types makes it look not too bad, and by altering the background color of each alternating row, its easy to read, and kind of looks like a File Explorer program.

