You don’t have to be a big company with offices in multiple locations and 35+ developers on your team to make the most of a test-driven development (TDD) methodology like Agile. The principles of Agile are designed to keep teams from being spread too thin, prevent burn-out, and enable quicker, shorter development cycles (known as “sprints”) that keep projects moving along. Applying even a handful of the core tenets of Agile to the way you meet with your team, schedule tasks, and plan for testing and deployment could lead to smoother, more productive software development.
Increasingly, distributed teams of all sizes are finding that Agile provides an excellent framework for collaborating on projects—whether they’re in the same office, working remotely down the street, or are located in a different corner of the world. If you’re growing your team with the help of freelance developers and want some ideas on how to effectively manage things, here’s a look at how adopting the Agile methodology for software projects can help teams increase productivity and collaboration.
Use Agile-style Team Meetings to Sync Up Team Members
If you’ve worked with developers before, you know long meetings aren’t necessarily in their wheelhouse. In fact, longer meetings can drain their energy and get them out of that “coding frame of mind.” That and Agile by nature is all about keeping dedicated teams and developers fairly independent from one another.
However, you do need to stay synced up—it’s the glue of a successful project. Make it easy for them to get back in the zone but keep everyone aligned with highly productive but super brief meetings that happen daily, weekly, or biweekly, depending on what you’re covering. Host the meeting virtually in a Google Hangout and cover the high points, do a round-robin of what everyone is up to, and call out anything holding up progress.
You might opt for:
- Daily standups: Quick 15-minute get-togethers cover what each team member did yesterday, is doing today, will do tomorrow, and any roadblocks that need to be addressed.
- Backlog grooming: This is a chance to kick-off new projects that have been waiting in line, break them into tasks, then hand them over to the team to go into production. A key to planning tasks is estimating how many hours it will take to get each done. Many Agile teams divide the hours of the week by the hours estimated to get tasks done, then aim to exceed 80% capacity. This allows for a buffer so there’s less burnout and more time built-in to communicate or handle unexpected things that pop up.
- Retros: A retro is a bit of a longer meeting that’s typically held at the end of a development cycle. The point of the retro is to answer the following questions: What went well, what went wrong, and what can be improved? Learn more about how to hold a successful retro in this article.
- End-of-sprint demos: After a sprint, a demo is a chance for developers to share what they’ve done during the sprint with product owners and any other invested parties. This is a chance for remote developers to be a bit more visible with on-site stakeholders, and to be accountable and noted for their work.
2. Break up the workload and assign to individual teams or developers for better accountability, ownership, and quality of code.
This is a no-brainer way to apply Agile to your process, and one of the main reasons Agile is such an attractive option for distributed development teams. How you break up your workload will probably be pretty intuitive—by task, module, etc. Or, try a feature-driven development methodology, which encourages you to break software down into features and add these to the backlog.
3. Find the right mix of collaboration tools for code reviews and cross-team contributions.
Ensure distributed teams have a way to easily access shared code in an organized way. There are many benefits to using a code repository like GitHub or Bitbucket, including excellent code review tools that allow you or your product architects to review code after a remote developer has submitted it and is offline, if they’re in another time zone. Collaboration tools also let you “chase the sun,” reviewing code and keeping a project moving even if its author is sleeping in another part of the world. These repositories also have pull requests that allow for cross-team collaboration and tools for tasking, too.
4. Make Regular Testing A Part of The Culture
Make sure you’ve planned to optimize your resources when it comes time to test the batches of code you’re regularly cranking during those sprints. Automated testing tends to align better with the faster development cycles of Agile and helps your developers more efficiently test code as opposed to using more time-consuming rounds of manual testing, which can require a long code freeze (not good for faster iteration). Automated testing can make it possible to complete a full round of unit testing in much less time—hours as opposed to days, in some cases.
If you don’t have the resources for a fully dedicated QA team, at least ensure each sprint has a testing-focused team member and task list. By not separating out testing from the sprint, developers will be more likely to work closely with those performing the testing—something that’s always a good consideration for culture because it encourages less “throwing code over the fence” and more accountability about the quality of code.
5. Deploy big things in small batches—regularly, if possible.
The way Agile software development typically works is to divide up single branches of code that are not shared between teams/developers. This eliminates overlap and version control issues, but be sure to encourage developers to rebase frequently and merge those branches back to the main branch to avoid surprises. Rather than deploy big features of your software at once, break them into small batches to reduce release risks. Also, setting up a staging environment gives distributed team members a way to get feedback on what broke the build so they know what code needs their immediate attention.
6. Get Started Putting Agile Methodology into Practice with a Solid Kick-off.
A great time to establish an Agile software development process is first thing in your kick-off meeting with your new developers. This is only a quick intro to applying Agile to the way your teams work. To start applying these and other learnings about distributed development to your own process, download the free eBook Hire Fast & Build Things for a more in-depth look at processes, tools and best practices.