Getting Started with Agile

Getting started with agile is easy. Getting good at it takes a while (particularly if you're going at it alone; a good consultant can help with the rough spots).

Tackle Things One Day at a Time

A good first step might be to start having a daily stand up. Each person answers three questions: What did I do yesterday?, What am I doing today?, and What's blocking me? These three questions can really help to improve team communication and issue resolution. The goal is to keep it to 10-15 minutes or less (the name stand up comes from the optional practice of making everyone stand to keep the meeting short). The meeting should be at a time when everyone on the team can make it (morning works well, but if you have a distributed team, you'll have to work around the time zones).

Attack It Incrementally

Now that the team is communicating a little better, start breaking things into iterations. General consensus says that two weeks is a good duration to start. Your goal is to develop each feature, unit test it, QA it and accept it within the two weeks. To do this takes practice. Attack things incrementally (where each increment adds customer value and could be stopped after this iteration without throwing things out).

Plan Just As Much As You Need To

Start each iteration with iteration planning. The scrum master, product owner and each developer, QA and writer should attend (along with usability, architects, etc.). The goal is to enumerate what will be accomplished in the iteration as well as what the acceptance criteria are. Agile is a good way to deal with changing priorities. But, once the iteration is in progress, don't change the goals. Remember, it is only two weeks until the next one.

Review What You've Accomplished

End the iteration with a demo and a retrospective. In the demo, you show off the new features as if you were demoing them to a customer (ideally you will be). In the retrospective, discuss what worked, what didn't work and how things could be changed to make things go smoother. Particularly at first, there will be lots of areas you could focus on. Identify the most important and take them on. Save the others for later.

Integrate Frequently

Continuous integration is key. Integrate at least daily. Stay as releasable as possible (i.e., the less time that must elapse between the end of an iteration and release, the better; focus on minimizing this time).

Focus On What Is Most Important

Another key area (which takes a while to master) is the backlog. The backlog is a ranked list of features / stories that the team could do. These are ranked by priority (most important first). This is critical (even if in some cases, the order between two items is arbitrary). At least once an iteration, re-evaluate the rankings. Adding, removing and shuffling based on knowledge gained is a good thing.

Repeat

Those are the basics. As you go, you'll make lots of refinements. Customize agile to be what works best for your team.