I was having lunch last week with a friend, and we were talking about our respective professional services companies. As we were finishing he asked, “So, what’s your capacity these days? How many projects do you think you can take on?”
I replied, “Virtually unlimited.”
He looked up and gave me a hard look, his fork hovering over his plate. Then he smiled and said, “Yeah, right,” and went back to eating.
He didn’t realize that we’ve spent the last two years perfecting our processes so we can now spin up a new agile software development team in about two weeks.
In this blog post I’ll share with you six secrets you can use to quickly ramp up more software development bandwidth when you need it.
The Challenge
When I talk to business leaders, I hear one or more of the following problems as it relates to software development:
- Lack of Expertise. A project comes up that requires technical expertise that you don’t have in-house. You don’t have time and/or experience to build your own team, so you need to hire the technical know-how.
- Not Enough Bandwidth. Management makes a decision to pursue a new business opportunity and you need to execute now, but the current team has its hands full and won’t be able to pay attention to the new project for months.
- Temporary Need. You need to deliver on a big new project…and you don’t have enough manpower. You don’t want to hire a bunch of new full-time people, since this is a spike in your normal project workload and you won’t have enough work for them once the project is completed.
Each of these has one common thread: the need to ramp up additional software development resources quickly.
The Opportunity
If you could tap into a large pool of available talent, ramp them up quickly, and ensure they deliver quality results, you’d be able to solve the problem.
The good news is there are hundreds of thousands of high-quality software engineers and quality assurance engineers who are available and ready to help.
Enter the world of contractors.
Hiring contractors is nothing new, but today there’s a new landscape of options available to you. You can certainly hire contractors who come to your office and work side-by-side with your team, but that has one huge limiting factor: geography.
If team members are located more than an hour or so from your office, it will be difficult to attract and retain them. Unless you’re in a major metropolitan area, limiting your geography will dramatically limit your options.
At Ascendle, we’ve eliminated location-based constraints. We hire team members regardless of their location. This has provided us with two advantages:
- The Universe Just Expanded. By eliminating the need for team members to be within an hour of the office, we’ve grown our universe from hundreds to hundreds of thousands of potential candidates.
- We Have Cost Flexibility. Some projects require on-shore technical resources, typically because of time zone requirements, but most of the time we can save our clients money by utilizing offshore resources.
“But offshoring isn’t worth it” you might say.
That was my attitude a few years ago. I thought, “With the management overhead we won’t save any money. And the quality won’t be there so we’ll have to re-do a lot of their work.”
Today, with thousands of contractor hours under our belt, I’m a true convert.
Key Success Factors
To get top-quality results from a diverse, geographically distributed team, there are a few critical success factors you need to put in place.
Secret #1: Use an Agile Development Approach
The number one success factor for managing a distributed team is having a lightweight project management framework to guide their work. By providing clear direction and a framework that encourages continuous communication, you’ll get amazing results. Without this framework you’ll pull your hair out because the team won’t produce.
For our teams we use Scrum, a lightweight agile project management framework. It includes some key guidelines to ensure everyone stays on the same page. View our free webinar to see how Scrum drives business results by promoting collaboration.
The aspects of Scrum that have been most helpful to us are the Product Backlog, Sprint Planning Meeting, Daily Standup, Sprint Review and Retrospective.
Product Backlog
The Product Backlog is a prioritized to-do list detailing all of the requirements for the project. We use user stories to capture requirements in a way that ties back to the end user.
An example of a user story might be, “As a shopper I want to save a product to my wishlist so I can remember what I want to buy later.”
Each user story includes detailed conditions of acceptance that spell out what’s required to call the story “done.” For the example above these might include “I can save a product to an existing wishlist” and “I can create a new wishlist during the save process.”
Sprint Planning Meeting
The Sprint Planning Meeting lets the team talk in detail about what needs to be done and break each user story down into sub-tasks with hour estimates. This creates not only a strategy for implementation but also provides accountability and transparency to understand what progress is being made.
Daily Standup
The Daily Standup is a 15 minute team meeting scheduled at the same time every day. Each team member reports on three things:
- What they accomplished since the last standup.
- What they’ll accomplish between now and the next standup.
- Impediments – anything that’s holding up their progress.
This brief daily get-together keeps everyone on the same page and it brings a great feeling of momentum to the team since everyone hears about progress being made every day. It also uncovers any issues so they can be quickly dealt with to keep things rolling along.
Sprint Review
The Sprint Review includes a demonstration to stakeholders every two weeks. The entire team attends so they can hear any feedback to help guide work moving forward.
Retrospective
After each Sprint Review a Retrospective allows the team to talk about what went well, what didn’t go well, and what they can do better. Any suggestions for improvement are implemented immediately and the results are reviewed in two weeks.
Secret #2: Use On-shore Project Leadership
Offshore companies will tell you they can provide a complete team to manage your project, including project managers. We’ve found that it’s much better to have on-shore leadership, for two reasons:
- Stakeholders are most comfortable communicating with on-shore team members.
- Having a close overlap in time zones allows for communication any time during the business day.
There’s never a feeling that the team is “off duty” since the leadership team can always be reached.
The Scrum guidelines include two roles that are a great fit for on-shore team members:
- The Product Owner is in charge of interpreting the business requirements of the key stakeholders and acting as liaison with the development team. They are responsible for creating and maintaining the Product Backlog and ensuring requirements are clearly communicated to the team. They are the vision-holder for the project and the “single wring-able neck,” responsible for the overall success of the project.
- The ScrumMaster is responsible for owning the Scrum process. This individual ensures the team is following the guidelines and makes sure any impediments are resolved quickly to keep the team moving. The ScrumMaster replaces the project manager role on traditional projects.
Having two on-shore team members, one in each of these roles, allows them to work together as well as back each other up if one of them is out of the office.
Secret #3: Have Some Time Zone Overlap
Although technical resources are available from around the world, we’ve found that aligning time zones so that at least a few hours a day overlap produces the best results, because it allows time to schedule the various meetings outlined above (“ceremonies” in Scrum-speak).
It also lets the offshore team members communicate in real time when they have questions for a few hours each day.
We’ve found that a time difference of a maximum of seven to nine hours works well. When we have a team member more than nine hours away, it’s simply too difficult to schedule ceremonies at a time the entire team can attend.
Don’t fall into the trap of feeling like one or two team members can miss the Scrum get-togethers. The communication that occurs at these live meetings is immensely valuable. If even one team member is omitted, he or she will act as an anchor, slowing down the entire team’s progress as they work to keep them up to speed.
If you’re wondering how time zones align with yours for various locations around the world, check out the World Clock Meeting Planner.
Secret #4: Find Team Members with Exceptional Verbal Skills
When recruiting offshore team members, be sure to talk to them verbally via Skype or something similar. Although you may need to get used to the accent, you should be able to understand what they’re saying without too much difficulty.
I can’t stress this enough – you will need to talk to your team members. Using written communication is important, but your primary means of communication needs to be verbal.
Every Scrum ceremony will require all team members to talk, and every team member needs to be able to listen to the discussion with stakeholders during the sprint review to understand how the work is being received.
You don’t need team members who could pass as a native speaker, but you should be able to understand 90% to 95% of what they’re saying.
There will be the occasional, “I can’t quite understand what you’re saying” moments. If you run into this, just ask them to write it down in your meeting tool’s chat window.
Secret #5: Use Group Chat
They key reason Scrum helps you deliver exceptional results is it encourages communication. Your team needs tools be able to quickly and easily communicate to ask each other questions and coordinate their work.
The best tool you can put in the hands of your team is a group chat system. We use HipChat from Atlassian.
By creating a room for each project, every team member can keep up to date with what’s going on with the project and quickly and easily communicate with other team members.
Through various integrations, you can broadcast messages to the project room from tools such as your source code repository, build server, and more. For example our teams can see source code commits being made by other team members as well as automated build results from the continuous integration server.
Secret #6: Use an Agile Project Management Tool
You’ll need a way to keep track of the work that needs to be done, track the progress of the team, and give the team visibility into everything. There are several agile project management systems on the market. We utilize the Atlassian set of tools, so we use JIRA Agile.
This allows us to manage the Product Backlog, use a task board to monitor and discuss the sub-tasks being completed during the current sprint, and view reports that show the team’s progress and forecasted completion dates.
This tool is low-cost and includes both on-premise as well as a subscription-based cloud-hosted options.
Conclusion
By putting a solid agile project management process in place, you create a framework and structure to quickly grow your team. Scrum’s guidelines require communication and teamwork and bridges geographic distance through the use of contemporary tools.
Tapping into the world supply of highly trained and capable software engineers and quality assurance engineers gives you more options by expanding your geography, and will let you grow teams much more quickly than the traditional approach.
Finally, Scrum gives you complete transparency to understand how the team is working and retrospectives provide a way for teams to improve their performance over time.
Did I miss anything? Please leave a comment and tell me about it!