# The Developer Experience: Reference Applications source: https://developer.mastercard.com/blog/the-developer-experience-reference-applications/index.md Authors: Donal Rafferty. Have you ever wondered why you sometimes push a door even though you were supposed to pull it? You probably realized, once you were stopped in your tracks, that there was a sign telling you to pull the door. You're left sheepishly rectifying your mistake, while you wonder how could you have made such a simple error. In such cases, this blame is misplaced. It is actually the door that is at fault. In his seminal book, "The Design of Everyday Things", Don Norman uses problematic doors to explain the importance of discoverability, and understanding in design. Discoverability asks if the design makes it possible to find out what actions a user can take, and how to perform them. Understanding, refers to what degree a person must learn new skills and ideas in order to use an item. Norman's book contains a lot of insight into how we can improve both for physical objects and human computer interactions. However, if we apply these two design principles to APIs, we find their importance to be exponential. APIs, by their very nature, are intangible. They have no physical form at all. They are digital and they don't have a user interface to guide us, or explain what we can achieve with them. We can't apply user experience design to them, because there is no user experience. Rather, what we need to focus on, is the developer experience. Thinking about the developer experience is relatively new, but the lessons learned about design principles from other domains can be applied to catering for a developer's needs. At Mastercard Developers, reference applications are proving to be an important pillar of the developer experience. A reference application is an example implementation of how the API creators would integrate, test, and use the API, if they themselves were customers. Think of it as a super powered version of the classic "Hello World". One of the most beneficial traits of a reference application is something you might not even realize happens. When a team who has designed and developed an API shows our developer community how they would use the API, they are actually sharing tacit knowledge about the API itself. The team will have developed intimate wisdom about how the API works, and the most efficient method of use. By showing how they would integrate with it, they provide expert knowledge about what actions a user can take, and how to perform them. In design terminology, this improves the discoverability attributes of the API. Mastercard Developers also provides a diverse range of APIs. Many of which provide solutions to complex financial problems. While developers are trained to be logical, having to learn about complex financial systems that are constrained by complicated rules and regulations, can be arduous for even the most dedicated Spock fan. Reference applications can help in scenarios where complexity can't be hidden behind good API design, whether it is fundamental to the solution itself, or the API just evolved to be intricate. A reference application provides the developer community expert insight from those experienced in complex financial situations in a language they understand; code. Linking back to design terminology, this significantly reduces the understanding a developer needs in order to extract value from the API. Best in class API design, and outstanding documentation, are also key to the discoverability and understanding of an API. However, the value in a reference application is its ability to unlock knowledge. Albert Einstein once said that "Knowledge is experience. Everything else is just information". This sentence epitomizes the difference between information and knowledge. To understand something is not just to possess information about it. You must be able to use that information. Reference applications are an example of leveraging our internal expertise, to share knowledge with our developer community. They do so in a language and workflow developers are already comfortable with, making their jobs easier and more enjoyable. If you've read Oran Cummins' recent post entitled "API 'Tough Love', you know that we assess our APIs for the purpose of ensuring they meet, and exceed, customer expectations. Reference applications form part of these assessments, and APIs that have recently added them have received positive feedback from customers. They have improved the developer experience, and reduced time to integration. By allowing our developer community to become more self-sufficient, we can focus on scaling our APIs and developers can focus on building unique experiences. As Web APIs become the dominant approach our customers adopt to access our services, reference applications become a vital tool in providing developers with the experience they deserve.