What Does it Mean to Be Agile?
What does it mean to be agile? Agile comes in many different flavors, and a lot of ALM tools vendors are marketing the heck out of agile. Certainly for myself I had a much different view of what it means to fully adopt an agile practice after reading Ken Schwaber and also becoming ScrumMaster Certified. Agile can come across as pretty wild and crazy at first, especially when you get into the specific flavors. For example in eXtreme Programming (XP) there's paired programming where 2 developers share one computer when writing code; a little odd for many people. And agile practices have all sorts of new ideas on team compositions and dynamics, like no more project managers. PMP's need not apply at a Scrum shop...well maybe, it depends who you ask and how each shop or team adopts agile.
Principles vs practices: understanding the difference
The Agile Manifesto is the right place to start to find a good baseline definition for answering the question, what is agile; although this doesn't relate to actual practices but more to a philosophy which can bullet out into a set of principles when most people think of actual practices first. What I hear from most the developers I talk to is that Agile is about short development cycles, daily stand up meetings, improved customer collaboration, burndown reports and empowering developers to make decisions with the last of these being the most known ;) and these are correct aspects of agile, just not good definitions.
There is a lot more to agile aspects as well, not as frequently mentioned. Did you know that agile also recommends working at a sustained pace, like a strict 8 hour work day? Agile recommends face-to-face conversation as opposed to email or phone, simplifying whenever possible, reflection at regular intervals and attention to work environment. To define agile you have to start with the philosophy and principles that are intended to then go on and govern how your team practices agile. So to directly answer the question, what is agile, it is a philosophy governed by certain principles, these principles are then put into practice by different flavors of agile each with its own specific, often overlapping, rules and methods.
Too many flavors? Get the essence
These are basic principles to live by when diving into agile, individuals are more important than processes. The team itself should be able to define, and continuously improve upon, process and methodology: process must be subject to change. Spend time building software instead of excessively writing documentation and create working software. Work with customers during the project’s lifespan, let them see and demo the software increments and be prepared to respond to change at all times even late in the projects life. With this understanding of agile in mind it is easy to see how it can be interpreted in a broad sense and practiced in a variety of ways.
How Can a Tool Help Me Get Agile?
Now that I've spent some time defining agile let's dive into ALM tools and how they fit into the entire agile software development process.
Does Agile need tools anyway?
First, just what is an ALM tool? Like the term 'agile' this phrase can have different interoperations. But we can say in a generic way that it has come to mean a tool, or combination of tools, that plays a major role in the software development lifecycle. Usually there is something for requirements, planning, coding, testing or tracking...and has come to mean any combination of these things.
Where current tools