Archive for March, 2008

Go Agile

March 19, 2008

Should You Go Agile?

Agile methods are not for everyone.  Certain things must be borne in mind before going agile.  However, agile methodologies are widely applicable and should be used by more people than are currently using them. 

Code and fix, being the common methodology used in today’s environment, requires the application of more discipline and not adding to the chaos.  The light approach adopted by Agile methods have an advantage over heavyweight methods.  When there is no process at all, it is more than likely, simpler processes will be followed and adhered to. 

For those new to agile methods, the question is where to start.  As with any new technology or process, one needs to make one’s own evaluation to see how it fits into your environment. 

The first step is to try out agile methods on suitable projects.  Agile methods are fundamentally people-oriented, which makes it essential to start with a team keen to try and work in an agile way.  A reluctant team is not only more difficult to work with, but imposing agile methods on unwilling people is fundamentally at odds with the whole notion of agile development. 

It is valuable to also have customers (those who need the software) who want to work in a collaborative way.  Without customer collaboration, one may not see full advantages of an adaptive process.  On the other hand, customers reluctant to collaborate may soon change their mind as they being to understand the agile approach. 

There are those who claim agile methods cannot be used on large projects.  However, ThoughtWorks, an India based firm has been successful with agile projects that involved around a 100-people across multiple continents.  Even so, it would be best to pick a small project to start with.  Large projects being inherently more difficult to handle, it would be better to learn on a project that is easily manageable i.e. small in size. 

Don’t pick a project with little business impact even though it means less damage if anything goes wrong.  However, it also means an unimportant project makes for a poor test, since nobody cares much about the outcome.  Far better, to try agile methods on a project that is a bit more critical than you are comfortable with. 

Again, find someone experienced in agile methods to teach you from his mistakes.  Once a good mentor has been found, make it a point to follow his advice closely. 

Hopefully, you are now convinced about your readiness to use agile methods?  Over the last ten years, lot of experience has been gained in the use of agile methods.  If, your clients are ready and willing, I would advise you to always use an agile approach.  This way, slowly and surely there will be many more converts to the agile approach. 


Agile Solutions – Part I

March 4, 2008

 The past few years have seen software methodology adopting a new style and going agile!  Well known as Agile Methods, the style is adaptive, people oriented in nature and has stirred up a whole lot of interest. A kick reaction to engineering or plan driven methodologies, agile methods are attempts to compromise between no process and too much process.  As well, Agile Methods tend to be:

 Adaptive Not Predictive

Engineering methods mean a planned detailed software process covering a long time span, while resisting change.  Agile methods, however, welcome it, they are processes that adapt and thrive on change, even to the point of changing themselves.

 People-Oriented Rather Than Process-Oriented

Engineering methods aim at defining processes that work for whoever uses them.  Agile methods assert a process cannot match the skills of a development team, they only play a support role in development team work. Indepth exploration of the differences makes it easier to understand what adaptive or people-centred processes are about, their benefits, drawbacks, and usefulness if used by developer or software customer. 


Separating Design and Construction

Design and construction, two fundamentally different activities show that difficult to predict design requires expensively creative people, while easier to predict construction with only once design in place, can easier to predict construction begin.

Unpredictability of Requirements

In every project, developers can be heard complaining that the problem with the particular project is that requirements are always changing.  Not surprising, as in building business software requirements, changes are the norm.  The question is what is to be done as software development is a design activity that is hard to plan for and estimate the cost for, as basic materials change rapidly and much depends on which individual people are involved resulting in unpredictability.

Is Predictability Impossible?

While, predictability is very desirable, however letting it go does not mean reverting to uncontrollable chaos.  All one needs is a process that gives control over unpredictability, which explains what adaptability is about.

Iterations – Controlling an Unpredictable Process

So, the key to an unpredictable world could be either iterative development or frequent production of the final system working version with a sub-set of the required features.  While iterative development may be short on functionality, it is faithful to the demands of the final system.  That is why these features should be fully integrated and carefully tested as the final delivery for best results. A far better process than traditional methods that document the entire process, which means flaws are hidden as in untested code.  However, sitting in front of a system and working with it, reveals all flaws, both in terms of bugs and misunderstood requirements.  Agile, an iterative and incremental process is adaptive in nature and totally able to deal with changes in required features.  So, long term plans are fluid, while the only stable plans are short term plans made for single iterations.  As well, iterative development also gives a firm foundation to each iteration, which means later plans can be based around it. The key question is, how long should an iteration be.

Different Agile methods suggest different time frames, e.g. XP suggests iterations of one or two weeks, SCRUM suggests a month, Crystal stretches it further.  However, the tendency is to make each iteration, as short as one can get away with, as this not only provides more frequent feedback, but tells you where you are more often.

Adaptive Customers

An adaptive process requires adaptive customers, since it gives them much more control over software development processes.  They get to check progress made at every iteration, which allows them to alter the direction of software development, resulting in a much closer relationship with the software developers and the formation of a a true business partnership. The customer benefits due to numerous advantages of using agile methods, such as, much more responsive software development and a usable, although minimal system that goes into production early.  As well, the customer can change system capabilities in keeping with changes in business, is also able to learn how the system is used in reality which allows for risk control and is indeed, a key advantage of iterative development.  Further, keeping iteration lengths small means variations can be seen in different ways.

We continue to talk about Agile Solutions in Part II.