This blog is all about my experiences and insights as an Offshore Software Development Entrepreneur. It describes the inherent challenges that come with offshore development as well as the solutions we use at Ignite to create a high-performance cost-effective onsite-offshore software development model.

October 13, 2007

When offshore meet Agile take-2

The best way to demonstrate the simple concept of agile development is through an example:

A few months ago I traveled to India and Thailand for my honeymoon. When my wife and I arrived to Bangkok, I decided (like many other business men visiting Thailand) to seize the opportunity and get myself a real "Armani-like" suit, tailored just for me by a local elite tailor.

We visited a number of stores that specialize in sewing suits (it seems that in Thailand most tailors and garment workers are usually Indian, Chinese or Burmese - the local Thai garment workers are too expensive...), until we finally arrived to a store we both agreed on.
When we were about to close the deal, the tailor informed us that we would have to come in the store almost every day, during the 10 day process of making the suit, for measuring and fittings.
My newlywed who has planned to pet tigers at the Tiger Temple in Kanchanaburi cried out:
"Why can't you do all the measurements on the first day and we'll come back on the 10th day to pick up the suit?"

"Ahhh..." answered the tailor with a smile, "and if we where to make a mistake and sew a smaller suit, or if the Mister will eat well during this week, will you still buy the suit???"
We decide to listen to our tailor, and during the next 10 days, I visited on a daily basis at his store: to start with, I was given the jacket without the sleeves, for fitting and measuring. The tailor spun around me with pins in one hand and a white chalk in the other. Later came the pants, and the day after, the jacket sleeves and then the first real fitting. Again, the tailor made adjustments, second fitting, more adjustments, third fitting... and we were happily on our way home, with a sharp looking suit. The project ended on time, at the expected budget, at the preset capacity and at the expected quality.

These are in fact the principals on which the agile methodology is based on:
- Collaborating with the client during the development process
- Dividing the project into short iterations and a checkpoint at the end of each one
- Adaptive to change (my waist line...) during development stage

Why does agile development gain such a big momentum in the development world today?

The old methodologies in software development are based on the Waterfall approach. In the Waterfall approach, during a project's first stage, more time is dedicated to analyzing requests and requirements. From the business requirements you obtain the technical requirements and the product's architecture.

The next stage is the Design phase, development/coding, testing and production. It's the same way architects create a project for building a bridge for instance.



The reason Agile development is becoming more and more popular is because a Software Development project is more similar to sewing a tailored made suit then to a project of building a bridge:

- The requirements of a Software Development project are more likely to change frequently.

- Software development is handicraft work (ambivalently!) and not automatic or mechanized
at its most, that is why human errors (bugs) are so common.

- It is very expensive to change software that does not fit the requirements, just like it's
expensive to change a suit that is too small for its owner...

- Software that did not arrive in the market on time becomes a white elephant, just like a suit
that was done after the client had returned home.

On my next posts I will provide a case study of a provisioning system developed by Ignite to demostrate how Agile methodology and and offshore development go hand in hand.

When offshore meet Agile take-1

Imagine a construction project in India implemented for an American client. The project has been estimated, priced and initiated although no building blue prints were produced. The client has never visited the construction site, nor has he met the project manager or any of the construction staff. The client has not yet firmly decided whether to build a residential tower or a shopping mall. In a regular weekly phone conversation, the Indian project manager generally reports that the project is progressing exactly on schedule. The workers' field of vision is restricted to the particular wall being built at the moment. After construction actually began, the floor structure was built using asbestos, but as work progressed it was switched to an innovative structural system based on the use of feather-weight cardboard panels. Would you want to buy an apartment (or shop) in this project?

Offshore outsourcing for software development is one of the most challenging fields handled by offshore outsourcing providers. Much has been written about the challenges involved in a software development process conducted by a third party contractor operating in another country. To be fair, the crux of the problem is largely in the software development process itself, which is essentially an art rather than a science.

Everything may look fine and complete on paper with most of the development process based on the Waterfall model. The project plan covers requirements analysis, software design, development, testing & quality assurance, integration, application and maintenance in a linear streamlined process. However, in reality much is lacking. The analysis of requirements is commonly inadequate. Furthermore, the market is very dynamic and requirements that were valid three months before are now irrelevant due to changing market conditions, constant technological change and new versions released by competitors. Moreover, the critical problem is that the client's feedback to the delivered products generally results in change requests and often also in regression to the requirements analysis phase. In the development phase, developers often return to the design phase and even to the requirements analysis phase. That is common experience.

These problems are accentuated when the work is done by a foreign outsourcing contractor operating in another country. In this context, a "broken telephone" syndrome is experienced due to geographic distance and mentality differences. Let's face it, people who see each other in the flesh communicate a lot better. As an example, in Hindi, "no problem" means that "there is a major problem but you are the customer and I cannot disagree". On the surface, the combined effects of the inherent problems in the development process subject to the offshore-related "broken telephone" syndrome seem to be insoluble.

Yet there are signs that there is a way to efficiently outsource software development projects to an offshore provider. When Offshore Outsourcing meets Agile development methodologies things look different.

In the following posts I will describe how we, at Ignite, utilize Agile development methodology to leverage offshore development.