A Hacker's Guide to Project Management, Second Edition

In any development there are a large number of jobs to be done and deliverables to be completed. You may have several people, each of whom have different skills. Before you can produce a detailed plan, think how you are going to structure the work and your team.

There are three main ways to divide up the work and the team:
By functional area. Divide the work in line with the major functional divisions of the system, and give a small team (or individual) responsibility for each one. For example, one group might build the investments sub-system and another the loans sub-system.
By activity. Get part of your team to concentrate on analysis, part on design, part on build and so forth. Each sub-team will perform the same work for all the functional areas. For example, your analysts will analyse the investments subsystem, and then move onto loans once investments has been handed over to the designers.
By technical specialisation and design. Assign technical specialists to particular tasks, and divide the design and build effort according to the structure of the design itself. For example, the database will be designed and built by your database expert, and the user interface will be designed by someone else.
These are not mutually exclusive, and you will probably employ all three approaches to some extent. How you divide the work will affect how you describe the system and vice-versa. Think as well about how to maintain control in...