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
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.
Designers not only figure out how it should work, they also make it work by
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
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
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
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.