Do you find yourself discussing with your peers what you think the system you’re building should do? Do you argue over what the users want? Do discussions wind up in a heated debate? This result indicates that no shared understanding exists about the system. With a lack of shared understanding, it’s easy to fall into the trap of making assumptions about system functionality, who the users will be, and how to build the system. These assumptions introduce errors into the requirements and design—long before a single line of code is written. Creating a shared understanding among stakeholders, users, and teams reduces the chances of not building the right thing—as well as not building the thing right. Aaron Sanders describes the techniques of experimental design, story mapping, user research, prototyping, and user acceptance testing that he’s used to help teams build a shared understanding. Learn to test your assumptions as rigorously as you test the system itself.