Hiring and developing great people
“My first priority is to hire the best developers.”
Learning what customers want
The leading source of time delays in software development is rework: the redesign/recoding/retesting cycles made necessary by changes in requirements, changes in interfaces, etc.
To gain speed and productivity, managers must spend more time learning precisely what customers want in a software product and converting those wants into unambiguous specifications.
Devoting more resources to learning what customers want should be viewed as an investment, not just a cost.
…the high productivity firms tend to have a larger team devoted to determining customer requirements (which, if done right, may make coding more productive and less testing and correction necessary).
Front Loading is defined as the early involvement in upstream design activities of downstream functions– process engineering, manufacturing, and even customer service concerns.
Using proven components
When a component is reused in a subsequent product, the original design work is a form of virtual concurrency: in the initial effort, work is simultaneously carried out for all future products in which that component is used.
Concurrency across projects is the most difficult to visualize and accomplish, but also has the greatest downstream rewards.
Using small teams
…except for the customer requirements stage, faster firms tend to have smaller teams and smaller maximum team size. …smaller teams tend to be more productive (except in the early stages where input from many different sources is needed).
…adding bodies to a project to lower cycle time may have the opposite result because coordination and communication complexities make larger teams more difficult to manage.
…larger teams diminish productivity because of inefficiencies created by the difficulty of communicating within a large number of people. …communication demands increase in proportion to the square of the size of the team.
Helping information flow
…as you break problems into smaller pieces, interface complexities grow… …project managers… must ensure that the interfaces are simple and elegant.
…there are a number of important information flows…
Flying Start is preliminary information transfer flowing from upstream design activities to team members primarily concerned with downstream activities.
Two-way High Bandwidth Information Exchange is intensive and rich communication among teams while performing concurrent activities. The information flow includes communication about potential design solutions and about design changes to avoid infeasibilities and interface problems.
…project managers must establish two-way high bandwidth flows of information among the teams working on separate pieces of the problem…
- Curtis, Bill, Herb Krasner, and Neil Iscoe. “A field study of the software design process for large systems.” Communications of the ACM 31.11 (1988): 1268-1287.
- Blackburn, Joseph D., Gary D. Scudder, and Luk N. Van Wassenhove. “Improving speed and productivity of software development: a global survey of software developers.” IEEE Transactions on Software Engineering 22.12 (1996): 875-885.