Datasheet

6
CHAPTER 1 SHIPPING SOFTWARE
People and Technology
Unlike time, money can easily be converted to other resources you might need. Two obvious
resources you need for software development are people and equipment.
For people, you ll likely want a mix of generalists and specialists. You ll need product managers to
defi ne the feature set that exactly meets your client s needs. You ll need software architects to stay
with the project from beginning to end and to de ne the technical architecture and design patterns
for the product. You may need user interface specialists, database specialists, security experts, and
performance - tuning engineers. The bulk of the technical work will likely be done by generalists:
engineers skilled in coding and testing.
If your project needs a high percentage of specialists rather than generalists,
you might want to increase your time and cost estimates. Finding and replacing
specialists can be a more time - consuming and costly activity than swapping
generalists.
You can convert money into people by hiring a team. Some team members will be employees — people
you want to retain for the duration of the project and beyond. Others will be contractors — people with
specialized skills that you need during certain phases of the project.
You ll also need to convert money into technology. You can buy it, lease it, or rent it for remote
access. This is true for both hardware and software. You can allocate technology to problems as
they arise and then shift resources (such as money) as circumstances change. For instance, you may
need signifi cant hardware capacity during a performance - testing phase of a project. In this case, you
can acquire the technology on a temporary basis and then shift it elsewhere when you re done.
Planning
Planning is an essential ingredient in shipping great software. Planning takes a great deal of time
before a project begins and even more time once a project is under way. This is true whether you re
using Scrum or another project management methodology. Depending on which methodology you
use, the speci c planning activities will vary dramatically.
For instance, planning a project using a traditional software development methodology involves
allocating time for requirements defi nition, design, development, testing, user acceptance, release
management, and support. Software development occurs solely during the development phase.
Planning a project using Scrum involves allocating time to build features in fi xed - duration sprints.
During each sprint, the team conducts the same activities as in the Waterfall method,
but it does so in a small set of features. Figure 1 - 1 shows a high - level view of Waterfall and
Scrum planning.
CH001.indd 6CH001.indd 6 3/23/11 2:46:22 PM3/23/11 2:46:22 PM