Project Management
Some basic facts
Project management is an established field that is used for many activities.
It is a profession in which you can be certified as a CPM.
It is a field with an established and large body of knowledge – PMBOK.
Broadly speaking, it refers to:
- A class of rational methods and protocols for organizing the labor of complex activities in order to achieve specific outcomes on time and on budget.
Think NASA’s space program in the 1960s.
Its history dates to the early 20th century but becomes highly developed in the 1950s and 60s.
It is closely associated with US military operations, e.g. Gantt Charts and PERT.
It was later adapted to software development, due to the complexity and importances of of this kind of work.
Software is also mission critical
- From the beginning, it has been used to support critical operations: weapons systems, air traffic control, financial systems, health care, etc.
- Only recently are we seeing the effects of software design – in the form of data products – fail on the basis of bias and other flaws that lead to social harm
In the 1960s, the US Department of Defenses study of software problems found that:
- 47% of software delivered could not be used, as it usually didn’t meet requirements
- 29% of funded software was never delivered, as it was usually canceled due to cost/schedule overruns
- 19% of software was useful after extensive rework, and it usually cost 36 times more to fix problems after release
Because of this, software engineering was developed.
But Software development is hard for many reasons:
- Hardware and software are inherently complex.
- Code is imperfect and error-prone.
- Code is always an interpretation of specifications that are always underspecified. → DEBUGGING THE SPEC
Underspecified in two senses:
-
The inherent inadequacy of language to represent reality.
- “The map is not the terrain”
-
The fact that people don’t know what they want even when they say they do.
- That is, reality itself changes.
The slipperiness of writing code that achieves our goals is the subject of humor:
Many paradigms of the software development life cycle (SDLC) have been introduced over the years to address these issues:
- Waterfall
- Spiral
- Etc. → See Tutorialspoint on SDLC.
The Waterfall Model
What they all have in is a faith in the power of planning and engineering to achieve results:
-
Planning as the ability to predict accurately how things will unfold
- and have people understand and follow rules.
-
Engineering as the operationalization of labor processes
- The ability to treat human behavior as a tractable variable.
- the logic of the machine applied to the the organization of labor.
These assumptions are reflected in the relationship between client and developer
- Notice that absence of the client in the design, building, and validation
This is partly the result of mitigating the mission creep introduced by the client.
The Iron Triangle
The Iron Triangle concept shows the effect of changing user requirements on a project.
If users want to add something to a project — a new feature, for example — this means that scope has increased.
Therefore, either tine or resources must expand as well to allow for the change.
The Spiral Method
The Spiral Method recognizes the need to be more iterative, and introduces the client at points in an ongoing cycle.
- Presumably, clients are involved in objective identification and testing …
The methods have the virtue of being rational and comprehensive, defining all the things involved in software development
- But they are very linear
Even the Spiral method, which is really a 2D linear process, where phases are features and iterations are observations:
Primary sequence | S = OI → AE → PD → NPP |
Process | P = S1 → S2 → S3 → … → SN |