Implementing Software Engineering in a Small Workgroup K. E. Wiegers
Page 3
Any process improvement effort should begin with some kind of assessment, to exam-
ine and understand your current software development process and identify any deficiencies.
Such an assessment can be a big, formal, and expensive event based on an established pro-
cess improvement framework such as the CMM. You may prefer to start with a simple survey
of current practices, and their strenghts and shortcomings. Our group chose to begin by hold-
ing an introspective brainstorming session in which all team members participated. Group par-
ticipation can lead to consensus and a stronger sense of group ownership of the issues raised.
We used a method called brainwriting. Everyone wrote problems and concerns on index cards,
and everyone had a chance to annotate all the cards. In a second pass through the cards, we
all proposed solutions to the problems on each card. We came up with 33 separate issues.
I summarized the brainstorming issues in a public file, and we agreed upon action items
allocated to different group members. As the action items were addressed over time, we up-
dated this file to reflect progress made and deliverables produced. We focused on items that
promised to yield the greatest leverage in improving the products we create. Some of the items
included:
• Writing group development guidelines to define clearly our preferred process
and the deliverables expected at various stages during development
• Increasing customer involvement in our projects
• Measuring what we do by collecting certain software metrics
• Improving our knowledge of software engineering through training, confer-
ences, books, and periodicals
• Improved selection, standardization, and application of software tools
• Defining an appropriate software quality assurance process to apply to our
projects.
Recognize that you can’t simultaneously incorporate every software engineering tech-
nique and tool into any organization, even if they were all valuable, which they aren’t. Try to
identify a small number of high-leverage changes that can be applied effectively to your group
with fairly low pain. We select just one or two key areas (such as prototyping, design, testing,
project management) for each new project in which we wish to concentrate on improvement,
based on individual evaluations of our weaker skills.
We try to learn new skills, such as project management and planning, on projects for
which that skill is not absolutely critical to success. That way, when we encounter a project in
which the skill is critical, we will have at least a little experience. As we master new abilities and
tools, they become a regular part of our activities on subsequent projects so we can concen-
trate on yet another area of improvement.
Don’t try to do everything at once. Most teams cannot effectively work on more than
two or three improvement activities at once. I once encountered a team of 20 developers that
had no less than seven improvement initiatives underway. The predictable results are failure
and frustration, with a return to business as usual. Of the many methods touted by the gurus,
select only those portions that look promising for your particular environment and do not hesi-
tate to discard methods that simply do not work for you. Avoid the temptation to swallow any
dogma whole, but don’t use this restraint as an excuse to not try anything new.
Once launched, you’ll need to sustain the process improvement energy in the group.
We devoted at least one weekly team meeting per month to a discussion of a particular proc-
ess issue. Every discussion was followed by a written summary and action items to address
the deficiencies we identified. Some of the topics we addressed included:
• Who are our suppliers? What problems do we have with them? What can
we measure to indicate trends of quality in the products or services they
provide us?
评论23