Our teams are composed of skilled and motivated Designers and Developers who are capable of being successful on a project. Advisors are there to support the team, including the client.
Everyone is T-shaped, deep in some area of expertise with the ability to collaborate across disciplines.
We are people, not "resources", and avoid calling each other such because we understand we are working with each other as people.
The designers are responsible for designing the interactions between users and the product. They conduct experiments and do research. They interview users, potential users, and stakeholders. They create user interfaces that not only work great, they are also pleasing to look at.
The developers write the mobile and server code that makes the app function. They aim to make the product error-free. They monitor performance because speed is a feature of every application. They set and meet development standards, keep the Continuous Integration build passing, and review each others' code.
Developers also keep it running. They make architectural decisions and interact with modern-day hosting companies like Heroku, whose employees double as our outsourced operations team.
Our advisors are what others might call Project Managers and Account Managers rolled into one. We use a different term because we want to reinforce the idea that the designers and developers work directly with clients and everyone is responsible for project success.
Advisors are there to support our teams, not to get in between them and the client.
The advisor adds an impartial perspective. They run weekly meetings so the rest of the team can fully contribute to the meeting without having to facilitate it. They keep an eye on the high-level goals of the project, which should be easier for them because they are not in the weeds of the project day-to-day. They express enthusiasm when the team is in a groove and help problem-solve when things get off track.
When appropriate, they work with the client to either reduce or increase team size to meet the needs of the project.
For most projects, advisors spend an average of an hour a week, and their time is included in the billable time of the rest of the team. However, there are times when a project is sufficiently large, complicated, or will not have a client product manager. In these cases, the role of the advisor is expanded to include more day-to-day project management responsibility, and the advisor becomes a billed member of the team.
If the primary salesperson is not also the advisor, there should be a detailed handoff from one to the other so that details are not lost as the team starts the project.
Advisors take on some tasks that would distract the team from their day-to-day priorities and are not completable by the client. These tasks can vary from team to team with one team feeling something is a distraction and a different team feeling something similar is not. Either may be true depending on the context.
Some of the examples of these tasks include forming an initial backlog, negotiating extensions, rotations, and rate changes, and scheduling dinner around project wrap-up or rotations.
Maintaining a safer space
Advisors create the right environment for a team, and that includes the client, to effectively self organize. That might mean standing up to the client if they constantly push the team or change their mind three times a day. It often means teaching the client how to interact with an agile team. It might mean asking the team tough questions if they are continually shipping bugs, or starting lots of different tasks and finishing none. Most challenging of all it might mean prompting the team to talk about issues like a lack of communication between the team members if that's causing problems. All these actions are collectively called "holding the space", a reference to creating a safer space in which these tough subjects can be talked about without any feeling of blame or aggression, which tend to prevent everyone being able to engage properly.
Retrospectives are one tool that can be used to hold the space, but they tend to be insufficient on difficult projects if they are the only tool being used.
Advisors help the team when there is a lack of skill within the team in one area or another. The most common example here is with "consultancy skills." These are the skills like talking about technical details to a client, saying "no" to them when necessary, and helping them to understand why something is impossible or a bad idea. These skills take time to develop and if there is no one on a team with them it can cause problems. The best solution isn't to put someone with these skills between the client and the team but to help the team learn these skills. Either by directly coaching these skills, or arranging for the team to spend time with someone who can coach them.
They might also provide coaching to clients. For example, running a training session for the client on the finer details of working with us, e.g.: what makes a good story, how to bring concerns to the team, walking through complexity vs. value, and how we would advise dealing with it.
Resources for Advising
- Running a Retrospective on The Weekly Iteration
- Getting Real
- Agile Retrospectives
There may also be a separate account manager for a client. This may happen if the account manager typically led the initial sale, but is not the advisor, or if a client has multiple projects with multiple advisors. In these cases, the account manager is responsible for maintaining a lifetime relationship with the client. They understand the client's needs and budgets, and how thoughtbot can meet those needs. They identify opportunities for working with a client, they coordinate scheduling, and manage invoices for the client's projects.