You do not need to follow every 'rule' of an Agile method like Scrum or XP to be an effective Agile team, particularly as the team evolves. Although Agile software development provides a set of patterns and best practices, they are only half of the equation. As a member of several highly productive, Web-focused development teams (at CBS Interactive, CNET, Vehix), I haven't seen an environment in which a pure form of Agile is maintained over an extended period of time. Agile practices usually evolve into a unique development process that matches the cultural tenor of the organization.
In my current role as VP of engineering at romantic social network Zoosk, I participate in Agile team practices that help us fulfill multi-layered requirements and effectively complete complex development projects. Here are seven Agile development tips to help your team do the same.
Agile Software Practices are More Art than Science
The Agile Manifesto is intentionally broad, general and far reaching. At its core, it represents a set of values. Consistently guide your team with these core Agile values and then trust that your smart team members will adapt them to the unique needs of your culture and product domain.
Find a Sprint Length that Works for your Team
Agile development forces you to break large projects into discrete chunks that can be delivered in fixed-length sprints. The multi-layered requirements and typical complexity of Zoosk development projects mean that one-week sprints are generally too short to produce quality deliverables by a sprint's end. It is particularly difficult to be fully tested and ready for release in one week. On the other end of the spectrum, a month or more is too much time between major releases for a Web-based offering (although this might work for more mission-critical software systems, like airplane components).
At Zoosk, we have settled on a two-week sprint, which gives the development teams enough time to explore options and build a quality deliverable, yet it also forces rapid decision making. Slow decision making is usually the main contributor to development lag. Two weeks also affords enough time to dig deeply into complex interactions and coordination with other teams across integration points. If your development team has fewer members and your production environment isn't divided across multiple service layers, one-week sprints may work fine.
The level of automation for your functional regression testing should also be factored into the sprint length. Absorbing significant test and release overhead more often than necessary wouldn't be ideal.
Daily Stand-ups Are the Heartbeat of Your Sprint
The daily stand-up meeting is a vital component of any Agile practice. It provides a set time each day, usually in the morning, where the Agile team meets and quickly reviews the sprint's status. Each team member provides a short summary with three updates:
- What they did yesterday
- What they plan to do today
- Whether they are blocked by something external (such as another developer, a software license, hardware, and so on)
Physically standing up, which we do at Zoosk, tends to make the meeting move quickly. Also, each team member targets an update length of around 30 seconds and almost never more than a minute. If an attendee has no updates to give -- often the case for a non-core team member -- they just say "pass." These meetings each day provide a natural pacing to the sprint.
When smaller development teams first consider using a daily stand-up, the initial reaction is often to the effect of, "we sit beside each other all day; why do we need a daily meeting to communicate?" Yet, I am continually amazed how little communication actually occurs organically between developers on a project (even between teams that sit 10 feet apart!) This reality is not the developer's fault; the complicated nature of software development requires intense concentration. This creates a mode of thinking that isn't conducive to updating another developer or product manager on progress. Also, each team member naturally assumes that they are working on the most important task at any time. This means that they are usually not considering opportunities to shift the order of development tasks to enable the entire team to finish more quickly. The daily stand-up meeting provides an efficient and open environment for accomplishing these coordination requirements of any software development project.
At Zoosk, we hold daily stand-up meetings for each of our individual development teams (Web, Mobile, API, Platform Services, Operations, and so on). The core team members all attend regularly. These are the developers, the product manager, UI designer (if applicable) and a QA team member. Other stakeholders are also encouraged to attend. This includes product leadership, marketing and executive team. Even our CEOs will drop into the stand-up for a particularly strategic project. We schedule them between 10am and 11am each day and purposely stagger the start times for each team's meeting by 10 minutes to allow some individuals to attend multiple stand-ups. As the VP of Engineering, I try to attend them all.
These daily stand-ups also have the benefit of allowing the leadership team to efficiently gather updates on all projects across the organization, replacing many individual interruptions of team members for project status. For all of the above reasons, investing time in your daily standup will almost certainly yield significant dividends.