Sie sind auf Seite 1von 5

Revisiting a Software Engineering Culture

THE MORE
THINGS
CHANGE... BY KARL WIEGERS

30 BETTER SOFTWARE OCTOBER 2006 www.StickyMinds.com


In July 1994, I published an article in Software Development magazine titled
Creating a Software Engineering Culture. I received more emails in response to that
article than for the seventy articles Ive written since thencombined. This response
motivated me to write my first book, also titled Creating a Software Engineering
Culture (Dorset House, 1996), in which I described fourteen principles that can help
any software team build high-quality products through the sensible application
of appropriate processesand maybe even have a good time along the way.

Much has happened in the software personal integrity. In a time when jobs effort to conduct reviews signals that
industry since the book was published. are tight, an individual put in this situation peer reviews are a desired behavior.
The agile movement arrived, many com- must balance his professional notion of
panies are outsourcing portions of their appropriate behavior against the possible 3. Ongoing education is every
IT work, and multi-site development is threat of losing his job. The ACM and the team members responsibility.
commonplace. Ive heard that the more IEEE Computer Society have jointly This principle applies now more than
things change, the more they stay the same. adopted a software engineering code of ever. All software practitioners and
In this article, I reflect on those fourteen ethics and professional practice (see the managers should identify their personal
principles to see whether they apply to StickyNotes for a link). It behooves all areas for skill growth and continually
twenty-first-century software development. software professionals to familiarize enhance their capabilities. The skills
themselves with this code and remember mix that contemporary practitioners
1. Never let your boss or it when being pressured to do the need is changing as more development
your customer talk you wrong thing. is outsourced. Some foresee reduced
into doing a bad job. demand for American programmers and
Software professionals sometimes are 2. People need to feel the a greater need for business analysts in
pressured into doing what they consider work they do is appreciated. the future.
to be a bad job. Uninformed managers Software development today can be Conference and training seminar
or customers might challenge a technical a high-stress job with long hours, rapid attendees obviously are trying to better
persons intent to perform a specific activity change, staff turnover, and the constant their software skills. However, I think
(such as a peer review) or to create a threat of outsourcing. Most software we can do a better job as an industry to
particular deliverable (such as a design professionals are nicely compensated for foster professionalism and continuous
model). I knew a manager who informed their efforts. Nonetheless, most people learning. Id like to see more practitioners
his developers that, to save time, he did appreciate receiving rewards and recog- become active members of professional
not want anyone doing any unit testing. nition for their contributions. software organizations, such as the
System testing on that project took twice At a seminar, I once asked seventy Association for Computing Machinery,
as long as planned. Are you surprised? employees of a company if they had a the IEEE Computer Society, and the
As with all philosophical principles, this recognition program. Only a few raised American Society for Quality. Books and
one should be tempered by reality. This is their hands. At a break, the human magazines are good learning mechanisms,
not an open invitation for developers to resources manager whispered to me, but Id like to see higher circulations for
debate endlessly the technical decisions They all have a recognition program. software periodicals. Id also like to see
of the architect. Nor is it intended to en- I whispered back, Its not working. more people pursue professional certifi-
courage analysts and developers to build An invisible recognition program wont cations and advanced degrees, and I
a Cadillac when a Chevy will suffice. be much of a motivator. An effective have great respect for those who do.
Someone needs to make key project program helps with staff retention,
decisions, and the team must respect morale, and quality of work life. 4. Customer involvement is
those decisions. By bad job, I mean an Recognition can be a powerful tool the most critical factor in
action that is unprofessional or clearly for the software manager. Suppose software quality.
will not lead to the desired outcomes. youre attempting to implement peer Shortly after I wrote my initial article,
Resisting the pressure to do a poor reviews. Publicly recognizing the efforts of The Standish Group released its oft-cited
job is a matter of professional ethics and team members who make a good-faith CHAOS report on the sad state of soft-

www.StickyMinds.com OCTOBER 2006 BETTER SOFTWARE 31


ware project success. The significance of though, suggest that todays requirements 7. Written software
the CHAOS data has been debated lately, analysts do little modeling. This is a shame, development procedures
but we still should respect the finding that because visual models provide a powerful can help build a shared
lack of user input is a major contributing complement to textual requirements culture of best practices.
factor to struggling or failed projects. descriptions. Requirements development Radical divergence in the way team
Customer involvement is particularly and management are all about commu- members work can lead to inefficiencies.
difficult on outsourced projects, where nication, and requirements analysts Its harder for developers to work from
there can be thousands of miles and a need a full bag of tricks to help them design specifications written in myriad
dozen time zones between developers with communicate effectively. fashions using multiple modeling conven-
questions and customers with answers. tions. Therefore, many organizations find
I would broaden this principle to say 6. Continual improvement of it valuable to develop a body of process
stakeholder involvement rather than your software development knowledge and assets that enhance the
customer involvement. Customers are process is both possible and capabilities of all team members.
a subset of stakeholders, and users are a essential. People sometimes balk at the notion of
subset of customers. Key stakeholders Unless you can honestly proclaim, I using standard templates and processes.
need to be engaged throughout the project. am building software today as well as They fear that standards will force them
The past decade has seen good software can ever be built, you should to produce documents that consume
progress aligned with this principle. always be improving some aspect of effort without adding commensurate
Usage-centered design, use cases, and the your personal capabilities and your teams value. Certainly, this can happen if people
agile notion of having on-site customers performance. Process improvement is arent being sensible. Some fear that
have all contributed to this advancement. simply a matter of doing something processes are an attempt to remove indi-
My teams at Kodak devised ways to better than you did it the previous time. viduality and stifle creativity. Ive never
work closely with our customers back in Even adopting agile techniques is found this to be the case. I follow a
1985. We developed the idea of product process improvement by this definition, process for writing books, but it doesnt
champions, key representatives who although the words agile and restrict what words I put on the page.
presented and reconciled the needs of process rarely appear together. Processes and templates must be flexible in
specific user communities. Every project The Capability Maturity Model for order to work for diverse circumstances.
should look for champions to serve as Software (SW-CMM) drove many I use the phrase shrink to fitbegin
the literal voice of the customer for the organizations improvement efforts during with a broadly applicable process or
products significant user classes. the 1990s. The SW-CMM has largely template, then mold it to suit the nature
been supplanted by the Capability and size of each project.
5.Your greatest challenge is Maturity Model Integration (CMMI). I The term best practices has taken
sharing the vision of the final suspect, though, that large-scale, formal, some heat in recent years. Who decides
product with the customer. process improvement strategies are what practices are best, and on what basis
I still think this is one of the most im- falling out of favor. The agile movement do they make that evaluation? Most
portant concepts in software development. is to some extent a backlash against the software engineering practices are context
By sharing the vision, I mean analysts high-ceremony, rigorously defined dependent; a practice that works well in
must represent and communicate require- and enforced processes that sometimes one project environment might be inap-
ments information among all project imposed excessive overhead. As with propriate in another. I often talk about
stakeholders (not just their customers) to any bipolar situation, either extreme is good practices rather than best practices
align them toward a common objective. I always inappropriate. Every software because a new practice only has to be better
read a lot of requirement specifications, organization can benefit by adopting than your prior approach to be valuable.
and almost all contain exclusively natural better ways of working that are flexible
language text. This is not the only way to and adaptive. 8. Quality is the top priority;
share the requirements vision. Before you adopt any specific process long-term productivity is a
Software teams must expect to develop improvement strategy, assess why youre natural consequence of
requirements iteratively and grow and not already achieving your desired high quality.
record a shared understanding of the performance. As you pursue process All software practitioners want to
product over time. Effective analysts improvement, watch out for these improve their productivity. Whats
know how to use multiple techniques to common traps: inhibiting your productivity today? In
represent product requirements. Possible Lack of management commitment many cases, its reworkredoing some-
views of the requirements include usage Unrealistic management expectations thing you thought was already finished
scenarios or use cases, lists of functional Stalling on action plan implementation and then retesting or re-reviewing it.
and quality-of-service requirements, Making achieving a maturity level Rework includes correcting defects,
graphical analysis models, prototypes, test the primary goal re-implementing changed or misunder-
cases, and screen designs. My observations, Failing to scale processes to project size stood requirements, and adding

32 BETTER SOFTWARE OCTOBER 2006 www.StickyMinds.com


overlooked functionality. Those few in this principle, you wont feel that a introduced into the Internet development
organizations that measure their rework body of work is complete until other group at Kodak, helping this fast-moving
effort find scary numbers, typically 30 to pairs of eyes have looked at it. organization cope with an endless
50 percent of total development effort. stream of work requests.
Various studies have shown that it can 10. A key to software quality
cost more than one hundred times more to is to iterate many times on 12. If you measure what
correct a requirement-related defect found all development steps you do, you can learn to
by the customer than if it had been discov- except coding: Do this once. do it better.
ered during requirements development. This is one of those philosophies that Ive been involved with software met-
This implies that taking actions to improve isnt fully achievable in practice, but its rics activities at the individual, team, and
qualityin its many dimensionscan still worth keeping in mind as you organizational levels. I find that collecting
increase productivity by reducing late- define your working methods. It is faster and analyzing data on project effort, time,
stage rework. Some claim that this and cheaper to iterate on concepts, and defects give me a richer understanding
accelerating cost-of-change curve flattens requirements, and designs than on code. of the work Im doing and the way Im
with agile development techniques, but I Even if the requirements could be pinned performing that work. Data also allows
havent seen data to support this. down precisely, developers might need to me to estimate future projects better than
Before you go looking for the newest iterate on designs. Refactoring to simplify memories alone permit.
tool or methodology that claims fabulous and streamline existing designs can add If you try to establish a metrics
productivity benefits, analyze the root value, but refactoring is not a substitute program, youd better have a good answer
causes that reduce your teams productivity. for iterating on design before diving into if participants ask, Why are we measuring
Poor quality likely will be one of them. the source code editor. this particular data item? Start small,
Iteration demands tools and a culture with a focused list of metrics that you
9. Strive to have a peer, that facilitate taking multiple stabs at believe will answer specific questions
rather than a customer, how best to understand a problem and about the way your projects and products
find a defect. solve it. Design modeling, prototypes, perform. Stay alert for the following
This principle summarizes my personal and evolutionary delivery of executable common measurement traps:
experiences since 1988 with the benefits code are all mechanisms for iteration. But Measuring the wrong things
of peer reviews and inspections, although the earlier in the lifecycle that iteration is Imprecise metrics definitions
reviews do not replace various types of performed, the cheaper it is. Collecting data that isnt used
testing. Inspection repeatedly has been Using metrics to motivate, rather
demonstrated to yield up to a 10-to-1 11. Managing bug reports than understand
return on investment. A seminar attendee and change requests is Evaluating individuals using met-
recently told me that her organization essential to controlling rics data
adopted inspections after a major project quality and maintenance.
failed with more than 600 known defects. Change happens! It can be disruptive People sometimes resist metrics
The second attempt was a success, with when it isnt anticipated. Experienced because they fear that measurement will
only about sixty defects. She attributed project managers realize that they need to become an end in itself or that the
much of the improvement to their use structure their project lifecycles to antici- measurement activities will consume an
of inspections. pate and accommodate change. Because inordinate amount of time. Although
Nonetheless, my surveys of seminar requirements will evolve during a project, certainly possible, I havent encountered
and conference audiences suggest that its essential to include contingency these problems. In my experience,
depressingly few practitioners know buffers in estimates to accommodate some collecting software metrics data is just a
about the thirty-year-old technique of growth. Incremental development strate- habit that you need to develop, not a
software inspection. Even fewer routinely gies help teams cope with change and time-sapping burden.
perform effective inspections or other growth, providing multiple opportunities
types of peer reviews. Pair programming is for reprioritization and project redirection. 13. Do what makes sense;
a way to have a colleague find errors and The phrase change control has a dont resort to dogma.
make improvements during construction. bad reputation in some circles, but The only thing Im completely inflexible
However, pair programming is no change control is not about inhibiting about is not being dogmatic. Formal
substitute for having someone who isnt change. Its about establishing structures process improvement got something of
intimately familiar with the work look to ensure that suggested changes are a bad rap in the 1990s because some
at it with a fresh perspective and evaluated properly and their impact well-meaning people made it too rigid.
different assumptions. assessed, to help the right people make Its easy to get caught up in the rigor
I would never consider working in an good business decisions about which and detail of a thoroughly defined
organization in which peer review wasnt changes to adopt. A change-control process or a comprehensive modeling
a standard part of the culture. If you believe system was the most effective process we methodology. If you become a slave to

www.StickyMinds.com OCTOBER 2006 BETTER SOFTWARE 33


the process or the methodology, then were working on seven different process culturebeginning next Monday. {end}
youre working for it; its not working improvement activities concurrently.
for you. Twenty people simply cant make seven Karl Wiegers, PhD, is principal consultant
A sensible process is not a straitjacket. significant changes while still getting with Process Impact in Portland, Oregon,
Processes that are appropriate to your their jobs done. Rather than overloading where he specializes in requirements
projects and culture provide a structured on change, focus your improvement engineering, peer reviews, process
guide that can help nearly every team do efforts on three, two, or perhaps only improvement, and project management.
a consistently better job. The desired one initiative at a timebut never zero. He is the author of the books Software
project outcome is not to follow the Requirements, More About Software
process, fill out the forms, and execute Retrospective Redux Requirements, Peer Reviews in Software,
the plan, but rather to build software It seems that these fourteen principles and Creating a Software Engineering
that satisfies the stakeholders business that made sense to me more than a Culture and can be reached at
objectives. Process improvement is a decade ago still apply to contemporary www.processimpact.com. Karl would
means to an end, not the end in itself. software development. Perhaps these like to thank Wayne Allen, Kathy Getz,
arent universal truths, but they represent Kevin Jameson, and Kathy Rhode for
14. You cant change values that I think apply in many their valuable review comments.
everything at once. Identify situations. Of course, identifying the
those changes that will principles that are meaningful in your
yield the greatest benefits, situation is entirely up to you. If this set Sticky
and begin to implement isnt an exact fit, have your team members Notes
them next Monday. think about what aspects of software For more on the following topics, go to
No matter how many opportunities engineering and management are www.StickyMinds.com/bettersoftware
you identify for personal, team, and important to them. Then take actions  ACM/IEEE Computer Society
organizational improvement, people can that are consistent with these values, software engineering code of ethics
absorb only so much change at a time. I principles, and priorities to steer your  Further reading
once met a team of twenty people who team to a healthier software engineering

34 BETTER SOFTWARE OCTOBER 2006 www.StickyMinds.com

Das könnte Ihnen auch gefallen