Wednesday, October 22, 2014

What is to be Agile?

There is a lot of talks among people in software development industry nowadays about something called as agile. Courses are being written and delivered about how to be "an agile team". In all of these courses, they are always emphasized that agile is defined by its values and principles. Despite that, some people still believe that agile can be turned into a set rules. You must strictly follow exact steps such as the team must do pair programming all the time or constant sprint is always the best for the team. It's completely WRONG. Something might work for this team, but not for the other team.

In my point of view, agile is the way to achieve the best result for the team. The team could decide that they want to do pair programming, TDD, or want to have a 2-week sprints. However, these decisions should come from the team. It should not be the decision from a manager or a senior guy that forces the team to do these things. The goal of any decision should be to address one of following questions:

  • How to improve each member's competency and skill? How to make them feel that they're carrying the work by their self-interested, not by order of someone else?
  • How to improve the team spirit and make them feel that the success or failure of the team is their success or failure?
  • What shall we do to improve our products to have better quality? What needs to be done in order to prevent or reduce the chance of problem in the future?
  • What can we do to bring more values for the customer? How to improve the collaboration between us and customer? How can we get feedback more frequently?
  • Which suggestions that we can raise to the organization so that it can help to improve the organization as a whole, not just for our team?
As the world nowadays changes rapidly, the last importation thing is that we should keep in mind that we need to keep continuous improvement over the time in order to response to any upcoming changes. In my opinion, continuous improvement is the most vital point in agile. It doesn't matter if we make few wrong decisions. We can try something and adapt it later if it does not work. It's a lot better than we just do not do anything.

I believe that all above things are what TRUE AGILE means.