When a customer asks for a new feature to an application or a whole new application, how do you know where to start? Do you start writing production code right away? How do you know the code you are writing is taking you down the correct path? How do you know the code you are writing fulfills your customer's business problem? How do you know the code you are writing will stay correct when your customer asks for another new feature or you fix a bug in another part of the application? Unit testing has been a concept around for quite a while. It ensures that the code you write is logically correct and stays correct. The problem is that the stake holders of this new feature can not read your code and ensure that it is correct before you write your production code. Another problem is that unit testing is something that you do after you write your code. It is an afterthought and does not prevent you from writing the wrong code conceptually. The third problem is that stake holders often frown upon this. They hear the word "testing" and they think that it is something that can be skipped or bolted on later. What if you wrote your tests first? What if your customers could read your code like specifications? If so, then these should not be called "tests", but rather specifications. This "test first development" is called BDD or "behavior driven development". It allows your customers to read your tests as specifications in English phrases. It allows the developers to travel down the correct path and not write code that is not needed or wrong. In this session, we will review what BDD is and why you should adopt this concept in your next project. We will discuss and implement a feature from concept to implementation from the real world. We will then write this feature out using Ruby, Rails, and a BDD framework called Cucumber.