This article first appeared on http://conceptspring.com/blog.
What’s the number one challenge most product development teams face?
Most teams would probably say: time. There is never enough time. Deadlines always come sooner than we want. How can we do more faster?
When a product is relatively straightforward, the product team can stay lean and mean, and still do great things. A team of 1-3 can stay coordinated almost without trying. In that case, fluid communication is the most effective way for the team to work fast.
Conversely, when a project involves a deliverable of significant complexity, the product team needs to scale up out of necessity. In some cases, the volume of work dictates a big team – imagine a codebase with 1.5 million lines in active development. In other cases, the project is highly cross functional, and engineers working on different parts of the project are simply not trained to do each other’s jobs. It could take 25-50 people just to cover the scope of work in all functional disciplines.
When a team gets to more than 20 people or so, tools and processes that used to work when the team was smaller don’t work anymore. Imagine how long it would take for 25 people to take turns with their scrum updates. Productivity suffers, and communication becomes a challenge. Things start to slow down… the exact opposite of what needs to happen to accelerate development.
At this size, many teams realize they need to break up into smaller teams. Often sub-teams form along functional discipline lines, which remains the most effective way to provide both peer support and mentorship to team members. Things seem to speed up again – or so it seems.
There is only one downside to a functional organization: silos.
When teams break up into functional sub-teams, it is hard for everyone to keep up with what’s happening in the rest of the organization. On one hand, they really don’t need all that detail. On the other hand, if they get into a single-track, silo’ed mindset, they can start focusing on their own set of deliverables to the exclusion of the needs of the overall project. Each sub-team feels self contained and very productive, but the overall program slows down even more than before they divided and conquered. This is the classic “hurry up and wait” syndrome: short term goals are met, but the overall project suffers one miss after another, because people lose sight of the big picture.
How can we break down silos and foster cross functional collaboration to help the team run fast again? The single most effective way, in my personal experience, is to create a cross functional “tiger team” on an as needed basis. The tiger team would comprise a subset of people drawn from the functional organization. Here’s how.
- Name an overall project leader
- This person does not need to be a functional manager of any team – but they do need to be trusted with the task of keeping people aligned.
- Form the team and clearly define roles and responsibilities
- Cherry pick the best team members from the broader product development organization to contribute to this project (based on expertise, availability and other factors).
- For each team member, state their role in this project, not their title in the company.
- Create a contact matrix so everybody has the contact information (e.g. mobile number, Skype ID) for everybody else.
- If there are multiple team members covering an area of expertise (e.g. embedded PCB design, or some such), name the team lead so people know who to call when issues arise.
- Frame the problem as a cross-functional challenge
- Define the goal of the program in holistic terms, instead of in the context of each functional discipline.
- Communicate, communicate, communicate
- Clearly describe the objective of the overall program. Share it with the team at the get go.
- Re-iterate this objective from time to time. This helps make sure everyone keeps the broader goals in mind, while working on their individual contributions.
- Create a cross functional program plan
- The program plan should stay high level – no more than 50 lines in a Gantt chart.
- This plan should enumerate all key milestones.
- Any cross dependencies must be clearly marked in the program plan.
- The program plan should be pushed to all team members, with cross dependencies called out by date, deliverables, and persons in charge.
- The project leader (or a project manager working closely with the project leader) should track work against the program plan and flag issues/concerns as they come up.
- Set up collaboration tools – and enforce their usage
- Decide how team members will share files (Google Docs, Dropbox, internal file directory, whatever it is – make sure everybody is using the same thing).
- Choose an instant messaging platform and move all asynchronous conversations to that platform. (Skype works, Google chat works, MSN messenger works – so long as everybody uses it and is available during agreed upon working hours).
- Put speaker phones in conference rooms where teams are likely to hold phone conferences, so remote members can stay tuned in.
- Set up a mechanism to keep the team in sync.
- For teams with fewer than 10 people, a daily scrum following the Agile development format works well. This is a 15 minute stand-up meeting held at the same time every day – and attendance is mandatory.
- For larger teams, do a daily scrum for each sub team, then have scrum masters from each sub-team do a “scrum of scrums” at a suitable cadence matched to the level of coordination needed. This might be daily, twice a week or weekly depending on the project.
When you implement these measures, two wonderful things happen. First, the work becomes coordinated much more effectively. Fewer things get lost in translation. Second, and more importantly, team members will begin to identify with the tiger team, instead of with their own functional teams.
When this happens, it is a beautiful thing to behold. Team members will keep the end goals in sight, and use their own ingenuity to find new ways to collaborate with others to speed up the process and create great outcomes. That, more than any smart parallel project planning efforts, helps to shorten the elapsed time from project inception to project completion.