objects or methods particularly vulnerable to bugs? If so, they might be refac-
Early performance checks can point out design flaws
Sanity checks for performance early in a process can point to design flaws.
Some of these might be isolated incidents. Some, even at an early stage, are
likely to be common enough to warrant special attention. Internet applications
are particularly vulnerable to communication overhead. Several of the antipat-
terns in this topic deal with round-tripping, or making many communications
do a relatively isolated task. Sloppy programming, including many of the issues
in chapter 9, can also cause performance problems, especially in tight loops.
Frequent code inspections and mentors help
Beginners and early intermediates can be a common source of antipatterns.
Pairing them with more experienced programmers and architects for code
reviews and mentoring can head off many bad practices before they start. At
allmystuff, the engineering department did a nice job of mentoring the solu-
tions development staff, which typically consisted of weaker developers with
better customer skills. Even a five-minute code inspection can reveal a surpris-
ing amount of information. Are the methods too long? Is the style readable
and coherent? Are the variable names appropriately used? Does the program-
mer value her intelligence above readability?
End users are unusually perceptive
Later in my career, I began to appreciate the impact of end-user involvement at
all stages of development. I found that end users can be brutally honest, when
we allow them to be. When I began to truly listen to feedback, I could tell very
early if my team would need to bear down or change direction. Too often, we
ask for the questions and listen only if we hear what we want or expect.
Outsiders can use interviews
The most powerful tool for someone outside a development organization is
the interview. People are put off when we try to propose answers without ask-
ing questions. Getting them to open up in an interview is usually not difficult
but may occasionally be troublesome. When we are digging for trouble, peo-
ple are much more perceptive if they perceive that we are helping to solve
problems and not looking for someone to blame. Interviews are most useful if
we can script at least a set of high-level questions, as well as anticipate some