Skip to content

Choice of Agile Product Development Model

January 9, 2008 by vsoundar

I often wonder what kind of software product/project is a best-fit for Agile development model. While the answer lies somewhere in the product architecture, customer feedback loop, team structure, geographical distribution of teams and various other aspects, I am starting to realize that the "Delivery Channel and Mechanism" will actually provide a good decision box to start the algorithm. "Ends justify the Means" seems very appropriate here.

If your product version (or project) needs to be delivered very frequently, or your product is only hosted (not premised/licensed), you will obviously have some sort of iterative model in place already. Agile would be a no-brainer in such a circumstance.

On the other hand, if you had a 9-12 month long release cycle, would you move to Agile Development? An engineering-only decision will involve some deliberations along the points I mentioned in the first paragraph resulting in a downplay of implications across the rest of the enterprise ecosystem.

There are usually a lot of changes required in the other departments of the enterprise (outside the Engineering teams, let alone the extended enterprise) associated with a move to a frequent delivery model than one can imagine. The problem of having to release, sell/host, service, support, train, invoice etc is the much tougher nut to crack than the act of building the product itself. In other words, Agile development directly and heavily impacts the way rest of the enterprise thinks and acts.

A big bang approach to switch seems to be in-vogue when quick turn-arounds are expected. However, for an enterprise with diverse cultural/technical makeup and multiple geographical boundaries, a gradual adaptive model is probably the only wise choice. I strongly believe that the net goal of "efficient high frequency releases" will be achieved in just about the same timeframe as a big-bang approach, and the gradual transition will cause much less angst amongst the team members. In this hot market an unsatisfied team is a huge cost to pay for. A stepwise change from 9 to 6 to 4 to 3 monthly release (A total of two years) will provide enough time to exercise all the nuts and bolts of the new process.

In conclusion, the choice of agile development model is not that of the engineering organization, but is one that must be driven by the business goals, in response to the needs of the market with full cognizance of the ripple effects across the entire extended enterprise.

Comments

Agile: Not About Releasing, but Ready to Release

January 10, 2008 by Isaac Rodriguez (not verified), 39 weeks 3 days ago
Comment id: 1437

I have to disagree with you. Being agile is not about releasing software, but about being ready to release software. Most people do not get that, and that is one of the problems why many developers, manager, etc, believe agile practices do not apply to them.

I work for a commercial software development company that works on a yearly release cycle for the most part. As you mention, releasing a new version is not about burning a CD and give it to someone; there are many departments inside of the company and external companies that come into play, so it is not going to happen that we will shorten our release cycle. Besides, there are some other financial circumstances that will prevent this and that I am not even going to mention.

However, the product that I worked is designed by a team of product designers that write the specifications on the new features and lead the feature teams to insure everything works as is supposed to. The feature teams are also composed by QA engineers that will test the features, report defects, and re-test features. I do not have contact with other customers, but there are marketing and sales people that do, compile requirements and decide what is important for our product to implement.

All these people are my on-site customers. They do not buy the product, but they are the ones deciding if the product has the features that were requested, if the features work as they expect, and if the software has quality to go into production (being released).

My real customers, the ones that buy the product, would not see any of my work until next year, but these other people want to see progress on a regular basis. From the Marketing guy that will install the latest build once a month because he heard we integrated this new feature he was interested about, to the Product Designer that will get a new build every couple of weeks to make sure I am following the spec, to the QA engineer that takes a couple of builds a week to test on the latest code, make sure things are fixed, and there are no regressions, they all expect the code to be stable, with quality, following the spec, and with no major issues.

Guess what? I got to be agile. I got to keep my main production branch stable and put into place every single practice that will allow me to produce several builds a day, and if those builds are release quality, the better for me. Otherwise, I am going to get complains from a bunch of people that cannot do their work because the product is broken, or the build failed, or the test automation did not pass.

If I keep thinking that there is no hurry, that I still have a year to release, and that we can take it easy and then work over-time the last couple of weeks (or months) of the release cycle, most likely we release our software with very low quality and our real customers, the ones that actually pay for the software, are not going to be happy. Because when you work on a yearly release cycle, a year is a year, which means the product is going out the door no matter what.

I have to be agile, but not to release the product, but to keep the product ready for release year long. Otherwise, I will have to put long hours at the tale end of the project, and my customers will still be upset with me and the quality of the product (needless to say that I will also have broken some work relation on the way).

Sorry for the book.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <i> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.