About   Forum   Wiki   Home  

       
    Managed Chaos      
   
Naresh Jain’s Weblog on Object thinking, Patterns, Open Source, Agile and Adventure Sports

 
`
 
Tags
Recent Comments
Quick Search
Recent Entries
Categories
Archives
August 2008
M T W T F S S
« Jul   Sep »
 123
45678910
11121314151617
18192021222324
25262728293031
Add to Technorati Favorites

Syndicate This Blog
Entries (RSS)
Comments (RSS)

Archive for August 9th, 2008

Is TDD and Refactoring Overrated?

Saturday, August 9th, 2008

Recently I came across a very successful company which builds infrastructure related servers. The company has 13 people. I spent some time watching how the company works. What really caught my attention was, they were not using TDD. Forget TDD, they did not even have any concept of Tests or Testers in the company. On an average, they had a release cycle of 3 weeks and they would throw away their products every 3 months. Zero time was spent on refactoring and maintaining existing products.

Their business is in such a market that new technology and new ways of doing stuff keeps coming up every 2-3 months. So either they can take their existing products and enhance them to add the new features or they can take the latest product in the market and tailor it to their needs. Usually a lot of their products are built on open source products.  In some cases they just hire the open source author and asked him/her to customize the open source product so that this company can really adapt it to their needs.

Not always they find open source products out there. In those cases, the company would form 3 teams of 3 developers each and basically ask each team to build the same product with whatever their choice of technology was. Which ever team finishes first, would release the product. When the second team was done, they would compare the first one with the second one. If the second one was better on various parameters that mattered to the company, they would throw away the first one and release the second one.

According to the founder of the company throwing away stuff was cheaper than enhancing the existing one.

In general TDD and Refactoring are great practices to have on a team, but don’t be dogmatic about it.

Just Good Enough

Saturday, August 9th, 2008

Mary and Tom Poppendieck are visiting India for 10 days. We have spent 5 days together so far in India. During the trip, Mary told me that she was really (pleasantly) surprised how things worked in India. She told me that she thinks everything in India is “just good enough”. It works and it does it job. Let it be traffic, small toilet paper roles, little soaps in the hotel, or automobiles.

This was very interesting. I’ve had similar thoughts, but the way I looked at it was, we were living on the edge of chaos and hence everything worked fine once you were inside the system, but for an outsider it would be total chaos.

During this conversation, Mary talked about how at Toyota the focus is to build robustness into the system. For example, special care is taken to make the part work under a wide range of conditions. On the other hand, what she was noticing in India was, things were not built keeping robustness in mind. They were not built to work in a wide range of conditions, they are just good enough to work in a very limited conditions and they work just fine. Robustness of course comes for a price. Considering these 2 extreme point of view, her question was will companies like Toyota survive in Indian economy? According to her, considering that India and China is where the future lies, what would happen to really successful companies like Toyota? Will they adapt & survive or will they become endangered?

She also gave an example of an Indian motorbike company that figured out how to assemble the parts together quickly and sell motorbikes in Vietnam. Few years back, Honda was the market leader in the country, today, they have less than 10% market share. This Indian bike company was able to sell “just good-enough” motorbikes in Vietnam at a really low price and kick Honda out of the market.

Something for us to consider when we think about building Software.

    Licensed under
Creative Commons License
Design by vikivix