Monday, April 7, 2014

Week Special!

Just for a change from all the technology this week we have decided to feature our CTO's blog post which is about how we can link cooking with agile software development.

http://monadmaidi.wordpress.com/2014/04/06/cooking-using-agile-software-development-methods-saves-your-life/




COOKING USING AGILE SOFTWARE DEVELOPMENT METHODS SAVES YOUR LIFE!!!


Why cooking and what is agile and how is it different from other software development methods??
Really!! you are trying to drive me crazy.. how could cooking be related to software engineering!!
I will answer all your questions in a minute. Imagine that you had never cooked in your life and you have decided to invite your friends for dinner at your place. You should have thought deeply before you get your self stuck in such a situation!!! ( It is just me mumbling to myself )
Your friends confirmed that they are coming and of course you have to cook different dishes !!. Stop panicking now and call your mom or any of your friends to ask them for recipes. You could also use Google for some good recipes . Now You will end up with a list of all the groceries you need and the steps you have to follow to produce the best dishes ever.

What you are doing  is totally related to software engineering and we call the process of listing down all  the groceries and cooking steps  “capturing the requirements”.  

Now, you started cooking by following all the steps your mom and Google asked you to do. Your dishes are ready, your friends arrived, you served them the dishes and you sat down to relax. Your friends are silent, but their faces are not giving you any good indication. Does this mean that you messed up??
Do you know why ???

You forgot to add salt, the chicken is not cooked enough, the rice is like oh my god !!.Your friends are not familiar with most of the dishes you cooked. Of course you can’t expect your chinese friend to understand the concept of Kobah and Taboulah  !!

You cant do anything now !!!You have spent too much time, money  and  effort to produce something your guests are not satisfied about. Actually they are not familiar with!!

Don’t cry !! you could simply order food from a restaurant  and the problem is solved!!! But wait a minute I could give you a simple answer that could save your life from now on !!

What you did was exactly like the waterfall approach in software development. You captured all the requirement once, you stopped your interaction with your mom and friends because you thought that they know and you know what exactly the dinner should be !! You spend time, money and effort to produce something that they simply rejected !!

Now you’re asking how could I have overcomed that !!! What should I have done better !!
It is easy to answer these questions, you should have made more interaction with your mom and friends. You should have asked your friends to list all the dishes they would expect to have on dinner, you should have asked at least one person to come over and try every a single dish you are cooking. So he could help you in case something went wrong. Remember two brains is better than one and this is what we call “pair programming” in software engineering. Your friend could easily help you add things on the fly and If you missed anything he could spot it out.

Now how is agile related to all of this ?? And wait a minute what is agile !!

In agile your guests are always part of the process. You start by listing the initial requirement which we call user stories. Your user stories are based on your interaction with your mom and friends. A user story could be “I want my steak well done” !!.  Of course you could discuss the  user stories with your guests.

Now we prioritize our stories and categorize them into different iterations. For example iteration one we want to “Cook the meat” and this includes several user stories for example:

User story 1: “Add spicy herbs to the meat”
User story 1: “Add onions”

You started cooking the meat  “iteration one” and you applied the user stories included.  At the end of the iteration ask your mom or some other friends invited to your dinner if they could try the meet and give you feedback on it. In case they are not satisfied about the spices you could easily add the “Add spicy herbs to meet ” user story to the next iteration where you could add more spices to your meat. These tips will help you spend a wonderful night and enjoy the food.

One more thing to add. Remember while you were cooking your friend was helping you “pair programming” and at the end of each iteration you and your friend could talk about the things that went well, bad and how to overcome them in the next iterations. In software engineering we call this “ Retrospective meeting.

Note: I wrote this article to give a simple explanation about agile. In real life agile is applied to projects that run for months and not in a one day dinner cooking.

No comments:

Post a Comment