Tuesday, February 19, 2008

Behavior Driven Development

Today we were introduced to Behavior Driven Development (BDD). So what is BDD. Think of the Tetris game. A piece is falling in the well with some garbage at the bottom. Depending upon the orientation of the piece falling from top, a line can disappear or garbage can increase. Similar is the case of the Schroedinger Cat where depending upon the observation the state of cat is dead or alive.

Owing to this fact, the same event can have different outcome depending upon the context. It gives importance to the fact that why we are writing code rather than the technical details and therefore makes the code simple to understand and translate between development team and business.

An example can be: Given that you are a Java Developer when you are on a project then you should code in Java.

So we were shown how to do BDD. A single test method may have name something like this shouldreturnthis(), this gives a very good idea of what we are supposed to test.

This is the basic that I learned today, thanks to Elizabeth Keogh.

One more thing, I learnt was that we can use Single Responsibility Principle (SRP) to get away with getter and setter methods. It helps in better cohesion when we return the required thing from a class rather than accessing and changing the private instance variables of a class. Tommorow is the session on SRP and will get more information on that. Very excited for tomorrow’s session……

Monday, February 18, 2008

Test Driven Development and Pair Programming

Finally, we started today on introduction to development. It was a simple session but still at this time I cannot forget the learning from one and a half hour session. I have done some TDD but today it was combined with Pair Programming. It was an amazing experience. You get to learn so much and explain to other developer what you know and vice versa. Not only it helped me understand more about TDD but I got to learn more about Annotations and static import. How even few hours with right people can change the way and amount of things you learn. AMAZING!

But the best thing that happened today was Roy Singham, founder of ThoughtWorks, came to talk to us. Where in the world will you find a company where the founder, CEO, COO, Chief Scientist (Martin Fowler) come to talk to 18 people (new hire) at ThoughtWorks University. Focusing on Roy, words are less to describe him. The inspiration and motivation that I got from him was overwhelming. I asked questions from social imbalance, purpose of life, Karl Marx to future offices in the world and the answers were quite convincing. Talking to Roy further helped me consolidate on my perspective that "make a goal in life and dedicate you life for it." For me it is revolutionizing this world by making software and trying to create a society where the weakest has the strength and support to come up through the hardship and be a part of the society. Hopefully, I will walk the long road both in terms of technology and socially. Was it my destiny or my choice that led me to ThoughtWorks where I am living my passion.....

Friday, February 15, 2008

ThoughtWorks University

Finally, everything went smoothly and I am in Bangalore. My first week at ThoughtWorks University ended today. It was an amazing week and everyday we had four cool sessions. The first week was mainly learning about ThoughtWorks and Agile 101. There were some amazing sessions on iterative development and evolutionary planning. We were told in details of what constitutes a team and my role as a developer. It helped me to understand who is else in my team is capable of doing what. I was fortunate to have Martin Fowler on the very first day of our training, talking to us and telling about his experiences. I also met upper management people.

More on the technical side, we had a session where we were told what variables are associated to a project. They were namely: scope, time and quality. With some interactive games I realized what is the relation between them. I am going to have my personal coach and I talked to him about my concern with designing. Hopefully, next week I will get my answers when we start looking into Java.

Also, some of us together managed to get an optional Ruby session which begins next Thursday. Really, looking forward to it. Well, I will keep you all posted when I find time.......