- 1: Start Development with Software Requirements
- 2: Honor Your Users and Communicate with Them Often
- 3: Don't Allow Unwarranted Requirements Changes
- 4: Invest Up Front in Software Architecture
- 5: Don't Confuse Products with Standards
- 6: Recognize and Retain Your Top Talent
- 7: Understand Object-Oriented Technology
- 8: Design Web-Centric Applications and Reusable Components
- 9: Plan for Change
- 10: Implement and Always Adhere to a Production Acceptance Process
- Harris Kern's Enterprise Computing Institute
2: Honor Your Users and Communicate with Them Often
Software developers don't generally use the applications they create; the intent is for the product to be used by customers, clients, and end users. This implies that someone in your development organization had better spend a lot of time communicating with users so that their requirements can be correctly understood. In the calculator example discussed earlier, a developer may be perfectly happy with the four basic arithmetic functions, while the user would like a square root function or a memory function. What the developer thinks is a complete set of requirements isn't necessarily so.
Moving from a trivial to a real-world example, an enterprise-wide IT application may have many types of users, each with his or her own business requirements. Take a payroll system. An employee is one type of user, whose requirements include being paid the correct amount in a timely fashion. A manager wants to be able to administer salary increases and track budgets. The HR administrator wants to compare salary ranges across an entire organization. Each type of user has unique requirements.
The second part of this commandment focuses on the word "often." Communication with users only starts at the requirements-definition phase. A developer may have to discuss a requirement with a user several times before the true definition of the requirement is captured. In addition, user requirements are likely to change often, and indeed several requirements may even conflict. Frequent communication with users gives the developer early notice of requirements changes that the user is considering.
A successful software development organization has established processes for frequent communication with users during all stages of the development process. The sooner an incorrect or missing requirement is discovered, the easier it is to fix the problem. Many successful development organizations have made customer advisory teams an integral part of the software development process. Such customer teams participate in all stages of development from initial requirements-gathering to production acceptance signoff. The Web-Centric Production Acceptance (WCPA) process presented in our book, Software Development: Building Reliable Systems (Prentice Hall PTR, 1999, ISBN 0-13-081246-3), is another vehicle for bringing users and developers together and promoting and instilling good communication practices.