You’ve read about agile development, BDD/ATDD, agile architecture, and many of the other facets of agile. Many articles tend to discuss individual aspects, rather than putting them in a perspective of a whole development picture. Over the past year and a half, I’ve been coalescing ideas on software development. This view has emerged from my interactions with students, agile enthusiasts, and agile coaches, trainers, and authors. I’ve listed at the end many of the people from whom I’ve gathered different perspectives and feedback. This article merges in ideas that have appeared in my books on BDD/ATDD, software development, programming, and interface-oriented design. The PDF is here; HTML version is here.
This kata revolves around a common domain term – money. Money appears in many applications, so the code from this kata might be adapted to those applications. Although it uses a dollar, it’s easily changeable to the currency of your choice by just replacing the currency symbol. Since requirements /tests written in Gherkin are implementation independent, you can implement this in any language. Some languages may be easier than other since they have more extensive libraries. Programmers can try multiple implementations and then have discussions as to the relative merits of each one.
The kata is released under the Creative Commons copyright.
When the Triad (Customer, Developer, Tester) have a conversation about a requirement such as a story, domain terms often come up in the conversation. These terms could represent the elements in a requirement, such as a loan amount or an interest rate, or a type applied to the elements, such as Dollar or Percentage. They could also represent actions, such as charge interest.
Eric Evans describes these terms as a Ubiquitous Language. Understanding these terms is crucial to creating a shared understanding of the requirement. But do you just leave the terms in Jira or Sharepoint? If so, then you’re missing an opportunity for creating a good design. Continue reading Use Your Ubiquitous Language in Your Design