Agile

Question: What is your opinion of AGILE programming? I have a team that want to do it, but they are most likely doing “code & go” approach. Do you know of anywhere in industry where I might find a good example of it’s successful use, as well as what type of products is it best suited for?

Answer: AGILE is a methodology design mostly for Web applications group who program in JAVA but has become mainstream lately due to the explosion of the internet and Blog. This is my personal opinion on AGILE programming:

The method is excellent for small project of two to eight people who work together and communicate with each others often. The key aspect of AGILE programming is each person does many things from customer interfaces, obtain requirements, architect to design, code, test, and release which is really a skill of Software Engineer and NOT Computer programmers (Who only focus mostly on programming). AGILE method may not work well in environment which require large project or large integration efforts which typically involve hundred of people working together.

Since the focus of AGILE method is on small projects and short time frame, this method requires talented individuals who are willing and able to be the kinds of generalists that can work across a broad range of traditional life cycle steps. AGILE requires multi-skilled individuals who are self-motivating, investigative, analytical, creative, and possess very strong inter-personal skills in order to understand their customer’s problems. They also must be very disciplined team players and skilled software engineers in order to release a product within the time allowed. (This is what Software Engineering is all about, understand the entire development process and be able to work in team. However, many AGILE class did not teach this but focus only on the programming aspect which I think is a mistake).

I’ve already heard of cases where manager orders people to use AGILE method in large complex business projects. The overall problem of scaling and translation is left to the software people to do whatever they see fit. That’s not a good situation regardless of how good the methodology is. The lack of understanding on which method to use in which environment to apply is really give this method a bad name.

Also, as with other past methodologies, if AGILE method receive enough publicity to start convincing managers that it can get projects complete faster and cheaper then a group of AGILE consulting business will inevitably spring up to support that interest. This is perhaps unavoidable but it does have the effect of creating a large hammer -the AGILE consulting sub-industry-that will be looking for financially lucrative nails to hit.

I believe that AGILE is one of the good techniques to come along, it is designed to work in a very small, not critical environment (Web page, web site) where thing must happen very quick and if things do not work you start all over again since coding is fast and cheap. However, I think we should be very careful about AGILE in in large projects where discipline is important and documentation are critical (Imagine finance and accounting systems with no documentation). After carefully reviewing many projects, large and small in the industry, I’m not convinced that AGILE has the range of experience needed to make its use effective in all environments. In particular I don’t think it’s can be used in large projects and in typical business environments.

Hope it helps.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University