By Patrick Fuller, Principal, Fuller Solutions
A relatively new project manager is assigned to oversee and manage his first IT development project using a distributed development model. The project manager has successfully managed a few smaller IT projects before, but the teams were local and could always meet face-to-face to resolve challenges. This particular IT project is a high profile one with a defined budget, which means there will be no room for downtime or delays
We are often engaged by our clients when the stakes for an IT development project are high, such as in the scenario described above, where internal development and/or project management resources must be augmented for critical resource management and a successful overall project outcome.
From our experience, these are the three areas worth some added focus for successfully managing distributed development teams:
It goes without saying that collaboration is essential for distributed development models. In these models, we have found that building collaboration is almost as important as the project itself.
Here are a few things to consider for facilitating effective communication:
- A clear understanding: The team must know what the business problem is, understand technical or business constraints, know how user stories and bugs will be tested and understand how the project will be defined as done.
- Daily team check points: These should be as short as possible with the goal of keeping everyone aware of what each team member is working on, what issues they are facing and what they will be working on next. This facilitates teamwork and an understanding for what is coming next and how the team can avoid duplicate work.
- Strong documentation: Notably for teams working on different time zones and especially for those working on 24-hour or “follow the sun” development cycles, the ability to clearly articulate in writing what the team worked on for the next team’s knowledge and understanding is essential.
- Iteration & Accountability: At the beginning of each project iteration, the team must review the work items, estimate the time to complete them and agree to dependencies and timing.
We have found that having a distributed team of highly critical thinkers may just be the “secret sauce” for a successful project outcome. This starts by having strong project managers and technical leads with superior critical thinking skills. There certainly can be and will need to be a few team members who are more task-oriented so long as they have an accessible team member to elevate challenges to when they arise.
There are a lot of “gotchas” to IT development that can derail a project and these “gotchas” become more of a risk with distributed models. Having team members with critical thinking skills helps to mitigate “gotchas” and keeps the IT project investment safe.
A challenge here is that recruiting and retaining critical thinkers for distributed teams can be difficult. These individuals are often in high demand. Bringing in an outside consultant for high profile IT projects within distributed models can augment internal teams from both the project and technical aspects and alleviate the “gotchas.”
From an infrastructure standpoint the following cloud-based services, such as Microsoft Azure, must be available to all team members:
– Code repository
– Development environment
– QA environment
– Developers environment
– Centralized repository for user stories, documentation, bug tracking (Ex: Fogbugz)
The advantages of a cloud-based system for a distributed team over a local machine-based service is that you can quickly replicate and ramp up via cloning a virtual machine. It is also scalable – you pay for what you need when you need it. Teammates need only an Internet connection to access the cloud-based system to do their work and collaborate with each other.
The risks are often higher when implementing distributed development models for IT projects. At Fuller, we have found that by facilitating strong team communication, ensuring key team members have exceptional critical thinking skills to mitigate the “gotchas,” and providing the necessary infrastructure, the rewards far outweigh the risks when implementing a distributed development model.