Saturday, October 01, 2005

Evolutionary delivery perfected as a fine art

It was 7:00 P.M and my brain felt like noodle soup. I had just been through 3 grinding reviews before a checkin and was feeling totally exhausted. At Mithi we have small and frequent checkins with as frequent product releases to keep "inventory" as low as possible. Inventory is described as code developed but not released to the customer. At this stage of our existance, we are catering to enterprise customers one on one, understanding their needs/requirements, feeding the product specifications for a "general" product (to eventually be usable by the masses) and developing the product in steps. Due to this model, we can cater to customer demands rapidly, the product shapes up very close to the market needs (without any 'out-inventory', which is described as features never used by customers) and we get feedback on the feature developed before getting too far into the feature maturity.

Traditionally product development plans a release, draws up specifications, developers work on these specifications, build and use the product inhouse continuously (hopefully) before releasing the pruduct after a few months/years.

Most companies trying to reach the elusive version 3 (Version 3 is where the product is deemed to have sufficient maturity to cater to a vast set of users - Maturity shouldnt be confused with stability, reliability, which is a given even in version 1 of the product) of the product (where it starts a snow ball effect and can pick up steam with its capabilities), cant afford the long cycles of product releases.

At Mithi we set up an architecture, build on it with short frequent releases of features required by our direct in touch customers (always trying to get in the feature at version 0.001 and building on that in next releases), while another team creates the next level architecture (to allow for easier development, easier testing, easier addition of features, better integration etc) in parallel. Typically we try to never go beyond 3 months of work for the next nevel architecture (again with the same idea of improving the architecture incrementally).

Whats the flip side of this? There is never any respite for the team...They are always on their toes since releases are continuous and deliveries to customers are continuous. But, yes I think that we all enjoy the noodle soup...