Understanding user and stakeholder needs moves us from the technical domain of bits and bytes, where many developers are most comfortable, into the domain of real people and real-world problems. To help bridge this gap, we've described three endemic syndromes that development teams should be aware of. Otherwise, the process of understanding user and stakeholder needs will be neither as straightforward nor as effective as we would like. Just as a variety of techniques can be used for analyzing and designing software solutions, we'll need to apply a variety of techniques to help us gain a better understanding of real user and stakeholder requirements.
In Team Skill 1, we started down that path with problem analysis, a set of questions we can ask about the constraints to be imposed on the system, the business modeling technique we can use for many applications, and the systems engineering technique that we can apply to complex systems. In the following chapters, we'll describe techniques that have proved effective in addressing the three syndromes just discussed. Among the techniques we will discuss are the following:
The choice of a specific technique will vary, based on the type of application, the skill and sophistication of the development team, the skill and sophistication of the customer, the scale of the problem, the criticality of the application, the technology used, and the uniqueness of the application.