Here’s one way to describe software project management:

“The responsibility for producing a desired software result within acceptable limits of resource usage.”

That probably covers everything, but it is difficult to connect with because it is such a general statement. Here are some of the more specific aspects of this responsibility:

  • Control of the development process. Project management is control of the development process. But, even the simplest development methodologies are not simple and some (e.g. Rational Unified Process) are rather complex. What kind of “control” of the development process can be simple enough to understandable and practical?
  • Means for achieving closure. Closure means “getting it done.” Just another way of describing a successful project, but how many times have you heard a project manager or developer say something like “it will be done when it’s done—don’t ask me to impose a deadline or a firm budget on this project.” Closure is part of the game, and is a definite obligation of project management.
  • Achieving a cost-effective result. “Cost-effective” means the software works as desired, provides the expected benefits and the cost in dollars and time is justified by the benefits. Again, this is just another way of saying “get the desired result with acceptable resource usage.”

So, how do we turn these ideas about “project management” into a practical, effective method of management we can rely on for every project?

Eagle’s answer to this question begins with this definition:

Software project management is control of the transformation of requirements and resources into a successful result.

To make this meaningful, we need to answer some questions in more detail. For instance:

  • what kind of “control?”
  • how do we understand “requirements” and “resources?”
  • what is a “successful result?”
  • what specific practices are both effective and practical?

Complex methods of project management often fail in the real world. We want an approach that is practical, reliable and easy to understand. The following discussion of the economics of software development may seem overly simplified. It is. But it leads to useful conclusions, as you will see.

The development equation. Let’s begin by saying:

result = DevProcess (requirements, resources)

or, alternatively: the software development process (DevProcess) transforms “requirements” and “resources” into a “result.”

Conditions. We need to acknowledge certain conditions which apply to the terms of this equation. In particular:

  • Result:
       (a) is predicted before the project starts
       (b) may be different from the predicted result
  • Requirements:
       (a) are given before the project starts
       (b) are usually incomplete and at least partially invalid
  • Resources:
       (a) are predicted before the project starts
       (b) vary in quality
       (c) vary in availability

When a project is approved, the stakeholders have in mind a desired result. And even if a formal requirements study has not yet occurred, nevertheless the requirements are understood by stakeholders, at least at a general level. Finally, when a budget is approved for the project, that implies commitment to a certain quantity and quality of resources.

That where we begin. Project management must be designed to face these conditions, because they are present in every project.

Definition of “success.” A project is considered a success if the following are acceptable to stakeholders:

  • the results
  • the cost of resources
  • elapsed time of project

Although the preceding description of the “economics of software development” is deliberately spare and simplified, it is also accurate.

The question is: is there a simple, pragmatic approach to software project management that can consistently lead to successful “results” while fully accepting the reality of the abovementioned conditions?

At Eagle we think there is such an approach, and we call it “Management by Structured Task List.” Admittedly not a very imaginative name, but we think you’ll agree it’s not quite as naive as it sounds at first.

So here is a summary of “Management by Structured Task List”—the specific objectives we want to achieve through this management method, and then a discussion of the properties of the kind of “Structured Task List” (STL) on which this method is based.

Objectives. What are the specific objectives we are trying to achieve in project management? What must our method accomplish in order to succeed consistently?

  • Clear and pragmatic practices. An approach to project management that is not pragmatic and not clearly understandable will not be used consistently or effectively.
  • Closure. Our method must lead each project to a definitive conclusion, avoiding creeping scope changes, shifting goals, and inexplicable lack of progress.
  • Cost control. Every project has the risk of costing so much that it’s not worth doing. When the cost of a project crosses this threshold, it represents an unfortunate waste of money, time and effort. On the other hand, the lower we can keep cost without sacrificing “result”, the greater the return on investment, and the greater the value of having done the project.
  • Reconciliation of requirements with result. Despite the mentioned fact that initial “requirements” may be partially invalid and the final “result” may be different from the predicted “result”, nevertheless there must be throughout the project a reconciliation of (evolving) requirements with (evolving) result. Ultimately the result must have a valid relationship to requirements, and requirements must represent a beneficial proposition for the organization.
  • Timely adjustments. When you send a space vehicle to Mars, the cheapest way to adjust course is “as soon as possible.” If you wait too long, it becomes very costly and eventually impossible to get back on course. It’s exactly the same with software projects. The cost of corrections in the development process is geometrically proportional to percentage completion. The success of every project—including such aspects as budget, cost-effectiveness, project duration and fit for purpose—depends on the earliest possible correction of problems in the development process. Our method of project management must make this possible.
  • Measurement. It should be obvious that all of these objectives depend on “measurement.” We must be able to measure percentage completion and the rate at which we are approaching completion at any point in the project. This measurement must take into account the fact that resources vary in quality and availability, and that requirements change.
  • Single focus for project mediation. Finally, we need a single, unifying tool through which we can mediate the project—in other words, a single locus of information which supports all the objectives listed above. We call this a Structured Task List (STL)—but to be effective, the STL must have certain properties and must be used in a specific way. These are discussed below.

Role of the task list. The STL plays two important roles:

  • It is the medium through which requirements, resource usage and results are reconciled.
  • It is the means by which stakeholder expectations are reconciled with actual results.

Properties of the STL. Eagle’s “Management by Structured Task List” requires that the STL have the following properties:

  • Based on structural analog of “results.” The structure of the STL must correspond to the physical structure of the project’s end product.
  • This end product must be defined in terms of deliverables, which may include such things as specific documents, source code, built or compiled components, an install program, third-party components, etc. Project tasks and their organization must correspond in every case to specific “parts” of the delivered result.

  • Coverage. The STL must exactly “cover” the deliverables.
  • In other words, tasks must be chosen so that within any given phase or level of abstraction:

    Nothing’s included more than once. That is, there is no redundancy among tasks, from either the point of view of the action being done or the part to which the action is applied.

    Nothing’s missed. No parts of the project’s deliverables are unaccounted for in the STL.

    This is not as inflexible as it sounds. Tasks can be organized within a topical structure having multiple levels of abstraction—so although individual tasks must not overlap, they can be placed at appropriate levels within a hierarchy of topics.

    In Eagle’s terminology these topics are called “groups.”·

  • Account for “phases.” The STL has two dimensions. One of these is the “group” dimension, which, as described above, must be a structural analog of the planned deliverables.
  • The second is the “phase” dimension, which is loosely related to time. It refers to stages of development, which could have names like “R&D”, “Requirements Analysis”, “External Design”, “Implementation”, “Deployment.”

    Every task must belong to a specific group and a specific phase.

  • Hours specified. For each task there must be an original estimated number of hours to complete, a revised estimate, and the actual number of hours worked to date.
  • Assignments specified. Every task must be assigned to exactly one resource (person). Tasks should be defined so they are appropriate for one-person assignments. If it is not known who will be assigned to a task, you can temporarily assign a placeholder resource (Mr. or Ms. X, Y, Z...). They should be relatively small, say no more than 24 to 36 effort-hours, though 2 to 16 hours is probably ideal.

Benefits of the STL. If properly used, an STL with these properties can provide a number of benefits for the project management process:

  • Change in scope is visible. STL snapshots at intervals during the project, say every two weeks, clearly reveal certain kinds of changes to the project, such as new groups (extensions to scope), new tasks (oversights or extensions to scope), new phases (omission of a stage of the development process).
  • The STL makes it possible to see clearly where the project is changing, and to immediately determine whether these changes are acceptable in terms of cost-effectiveness. Undesirable scope “creep” will be visible and corrective action can be taken.

  • Incorrect resource estimates are visible. Because tasks are relatively small, are assigned to a single person, and because estimated hours are always specified for a task before it is assigned, patterns of incorrect time estimates are quickly seen.
  • Once the pattern is seen, the cause can be investigated. The “problem” could be a wrong estimate to begin with, a misunderstanding by the developer of the actual scope of the task, absence of appropriate skills for the task, insufficient application on the part of the assigned resource, etc. The patterns of actual time vs. estimated time can help diagnose these problems. For example, being significantly over estimated time could be related to a particular “group” of tasks and may be related to technical difficulties; it could be related to a specific individual, indicating a problem with that resource; it could be across the board, probably indicated poor estimating skills; or it could be more or less random with no particular significance.

  • Early detection of problems. Because
  • —the STL is “complete” in the sense that it covers all deliverables,

    —all tasks have estimated times, so that the estimate for the complete project is known,

    —the STL is updated frequently with actual times and estimated times to go for each task,

    it is possible to compute percentage completion vs. percentage of budgeted time used to date. (Tasks with zero time to go are considered complete). Based on this information we can estimate, beginning very early in the project, the following:

    —projected final size of the project based on the increase in estimated times for certain tasks and the rate at which these estimates are increasing;

    —percent completion in relation to original estimates, revised estimates, and projected estimates of total project hours.

    We know the percentage of budgeted resource utilization so we can determine at any point in the project the ratio of percentage completion to percentage resource utilization. Of course it is a red flag with resource utilization outpaces rate of completion. Management by STL allows this issue to be seen early and corrective actions taken. In extreme cases, this may even reveal unanticipated problems that make the project unviable. In this eventuality, the benefit is that the project can be stopped early, minimizing the waste of valuable resources.

  • Team members can be more self-managing. The STL gives each team member a view of the entire project and their place in it. They can see the importance of their contribution and their rate of closure compared to other team members. It is always clear what tasks are available for them to work on.
  • Reasons for change are easy to describe. By looking at the STL at different stages of a project, it is extremely easy to see where and how a project has changed during development. This facilitates accurate communication among stakeholders and team members about project status and development issues.
  • Stakeholders can easily distinguish between “changes in requirements” (scope) and “problems with the development process.” Changes in scope appear as new groups or new tasks. Problems with the development process generally reveal themselves in the form of across-the-board failure to complete tasks within the estimated time.

Requirements for effective use of the STL. In order for “Project Management by Structured Task List” to be effective, there are some simple but essential requirements governing the use of the STL.

To be effective:

  • Must have the required properties. The STL must have the properties described earlier in this section.
  • Keep current with project structure. If the structure of the project—meaning the structure of the deliverables—changes, then the STL must be kept up to date with those changes. The STL must always be a valid “structural analog” of the deliverables of the project.
  • Keep current with time estimates. Task time estimates must be reviewed regularly (at least weekly) and revised as needed.
  • Update progress at least weekly. Percentage completion and hours worked to-date should be updated at least weekly for all active tasks.
  • Team work assignments must always be related to specific tasks on the STL. All project effort, without exception, must be related to specific tasks on the STL. No work of any kind can be billed to the project unless it is related to a task on the STL.

An effective method of project management is essential for successful projects, but it is not sufficient. Also needed is the commitment of team members to the methodology and to each others’ success.

Here are a few of the specific responsibilities of team members which are required for this approach to project management to be effective:

  • Do official tasks only. Work only on tasks assigned to you on the STL; do not do any work on the project unless it is part of an explicit task.
  • Know the expected effort. Do not begin work on a task until you know how long it is expected to take. The estimated time for a task is often a “message” which indicates a specific approach to the task. If your personal estimate for the task differs from the estimate in the STL, come to an agreement on the estimated time before you begin the task.
  • Report changes in estimated effort. If it becomes apparent that a task will take significantly longer than the time estimated, immediately bring it to the attention of the project leader; agree on a new estimated time before continuing.
  • Report problems with task list. If you become aware of any problem with the task list (e.g. required work which has been left off the task list, bad time estimates, items on the task list which are no longer required by the project, etc.), inform the project leader immediately.
  • Report bad news. Always report bad news as soon as you become aware of it.
  • Ask for help. Always ask for help if you feel your time is not being spent effectively (e.g. if confronting a difficult bug, confusing requirements, problems with 3rd-party components, etc.)
  • Report a better way. If you know a better way to accomplish a given task, suggest it to the project leader. Once the project leader has decided on an approach, do it the way he/she asks.
  • Be honest. Be absolutely candid about your own progress.
  • Speak up. If you have suggestions or questions during a project team meeting, always speak up.

This has been a summary of Eagle’s approach to project management. We have found it to be very effective in controlling costs and gaining closure for software projects.

A number of years ago we developed a proprietary project management system to support our teams in this methodology, relieving them of some of the bookkeeping chores of project management. This system is called “Manage!” It integrates the project STL, resource assignments, and customer billing into a single system, insuring that client, management and team member views of the project are all based on a common set of data.

Copyright (c) 2005 by Eagle Research, Inc.
"Software for the Internet age" is a registered trademark of Eagle Research, Inc.

Home    |    About Eagle    |    Services    |    Experience    |    Methodology    |    Something Different    |    Site Map    |   Contact Us