 Just a quick show of hands, so I understand who is in the room. How many people here come from an object oriented background? Quick show of hands, pretty much everyone. This session is mostly about trying to understand what is the right balance between object orientation and basically taking some of the functional concepts and applying it. So we can take advantage of some of these things while we are still working in a typical object oriented language and specifically how to use test driven development as an approach to kind of help you implement some of these practices, implement some of these techniques in your programming. One of the common things that we hear a lot is O equals modeling the real world, like object orientation is about modeling the real world. How many people think of object orientation this way? So one take away hopefully by the end of this workshop is you will understand why this is actually wrong or why this is not the case or it should not be the case. So obviously soon you end up with stuff like this, suddenly a truck is inheriting from a car because it has to reuse some of the functionality that is there in the car or you have all kinds of other deep nested hierarchy and other kinds of problems that you end up with which this does not make sense you know but you end up doing that because you originally started by trying to model your software on the real world and at some point you know that fell off but you wanted to reuse code and you ended up basically you know bending over your back to get stuff done. I am sure people would have seen you know code bases like this where you try and pull up a hierarchy and this looks as scary as this. So for me like the main tipping point from O and kind of understanding what really is a challenge with O was when I was working on a medical system which basically is about automating the stuff that happens at a hospital and one of the classic debates in our team we had is you know basically a patient comes in and the patient needs to get certain vaccinations right. So you know the debate was okay you read through the requirement and then you look at okay all the nouns so you pick okay doctor is a noun so you have a doctor class you have a patient is a noun so you pick up a patient class and you go through all of that and then you come up to okay what are the verbs so we can figure out what are the methods that go on each of these things and so the debate that happened in our team was like you know should the doctor have a give shot method.