|
|
|
|
|
|
|
It quickly becomes obvious that you really have more than one problem to solve. You divide the project into these significant subprojects: |
|
|
|
|
|
|
|
|
Communications: The capability for the software to dial into the email provider via modem, or to connect over a network. |
|
|
|
|
|
|
|
|
Database: The capability to store data and to retrieve it from disk. |
|
|
|
|
|
|
|
|
Email: The capability to read various email formats and to write new messages to each system. |
|
|
|
|
|
|
|
|
Editing: Providing state-of-the-art editors for the creation and manipulation of messages. |
|
|
|
|
|
|
|
|
Platform issues: The various UI issues presented by each platform. |
|
|
|
|
|
|
|
|
Extensibility: Planning for growth and enhancements. |
|
|
|
|
|
|
|
|
Organization and scheduling: Managing the various developers and their code interdependencies. Each group must devise and publish schedules, and then be able to plan accordingly. Senior management and marketing need to know when the product will be ready. |
|
|
|
|
|
|
|
|
You decide to hire a manager to handle one of these items, organization and scheduling. You then hire senior developers to help you analyze and design, and then to manage the implementation of the remaining areas. These senior developers will create the following teams: |
|
|
|
|
|
|
|
|
Communications: Responsible for both dial-up and network communications. They deal with packets, streams, and bits rather than with email messages per se. |
|
|
|
|
|
|
|
|
Message Format: Responsible for converting messages from each email provider to a canonical form (PostMaster standard), and back. It is also this team's job to write these messages to disk and to get them back off the disk as needed. |
|
|
|
|
|
|
|
|
Message editors: This group is responsible for the entire UI of the product, on each platform. It is their job to ensure that the interface between the back end and the front end of the product is sufficiently narrow so that extending the product to other platforms does not require duplication of code. |
|
|
|
|
|
|
|
|
You decide to focus on the message format first, setting aside the issues relating to communications and user interface. These will follow after you understand more fully what it is you are dealing with. There is little sense in worrying about how to present the information to the user until you understand what kind of information it is. |
|
|
|
|
|