This page contains leadership pointers. The first couple of headers indicate which group they apply to, using the groupings defined on our team structure page.
At GitLab leadership is requested from everyone, whether an individual contributor or member of the leadership team.
As a leader, GitLabbers will follow your behavior, so always do the right thing.
Everyone that joins GitLab should consider themselves ambassadors of our values and protectors of our culture.
Behavior should be consistent inside and outside the company, just do the right thing inside the company, and don't fake it outside.
GitLab respects your judgment of what is best for you, since you know yourself best. If you have a better opportunity somewhere else don't stay at GitLab out of a sense of loyalty to the company.
In tough times people will put in their best effort when they are doing it for each other.
We work async. Lead by example and make sure people understand that things need to be written down in issues as they happen.
We are not a democratic or consensus driven company. People are encouraged to give their comments and opinions, but in the end one person decides the matter after they have listened to all the feedback.
We avoid meetings, when possible, because they don't support the asynchronous work flow and are hard to conduct due to timezone differences.
Start meetings on time, be on time yourself, don't ask if everyone is there, and don't punish people that have shown up on time by waiting for people or repeating things for those that come late. When a meeting unblocks a process or decision, don't celebrate that but instead address the question: How can we unblock in the future without needing a meeting?
We give feedback, lots of it. Don't hold back on suggestions for improvements.
If you meet external people, always ask what they think we should improve.
Saying something to the effect of "as you might have heard", "unless you've been living in a cage you know", "as everyone knows", or "as you might know" is toxic. The people that know don't need it to be said. The people that don't know feel like they missed something and might be afraid to ask about the context.
When times are great, be a voice of moderation. When times are bad, be a voice of hope.
To maintain an effective organization, a manager's span of control should be around 7 people, ranging anywhere from 4 to 10. Below this range the inefficiency of an extra organizational layer is larger than the benefit of a specialized group. Above this range the manager doesn't have time to do proper 1:1's anymore.
The span of control is the same at every level of the organization. This prevents the organization from having an additional layer that adds cost and reduces decision making speed. To increase the number of reports you can handle increase delegation to the directly responsible individual who can be a manager. Size the number of reports on were you expect the organization to be in 6 months from now.
If you praise someone, try to do it publicly and in front of an audience. If you give suggestions to improve, do it privately 1 on 1.
As soon as you know you'll have to let someone go, do it immediately. The team member is entitled to know where they stand. Delaying it for days or weeks causes problems with confidentiality (finding out that they will be let go), causation (attributing it to another reason), and escalation (the working relationship is probably going downhill).
When performance or behavior is below par or not in line with our values we normally put someone on a performance improvement plan (PIP). However, there are some exceptions to following the PIP process but in all cases managers should speak to the people operations generalist or Chief Culture Officer early on to determine the best solution.
Not all underperformance needs to be in a PIP. You may just need to realign them. Take some tasks off and see if they improve.
When addressing underperformance, don't wait. Set appropriate goals upfront, so both parties are clear.
Understand that there are different ways to get to the same goal. There are different perspectives, and discussions need to happen.
When someone says they are considering quitting, drop everything and listen to them. Ask questions to find out what their concerns are. If you delay, the person will not feel valued and the decision will be irreversible.
In addition to announcing new team member arrivals, departures are also announced in the #general chat channel (but only after the Google/Slack accounts are revoked, see the offboarding page and the offboarding checklist for details). We must respect the privacy of the individual concerned. If you are asked why someone has left or is leaving, please refer that person to the general guidelines section of the handbook where we describe what can and cannot be shared.
People should not be given a raise or a title because they ask for it or threaten to quit. We should pro-actively give raises and promote people without people asking. If you do it when people ask, you are being unfair to people that don't ask and you'll end up with many more people asking.
Don't refer to GitLab as a family. It is great that our team feels like a close-knit group and we should encourage that, as this builds a stronger team. But families and teams are different. Families come together for the relationship and do what is critical to retain it. Teams are assembled for the task and do what is required to complete it. Don't put the relationship above the task. Besides, families don't have an an offboarding process. Families should have unconditional love, while teams have conditional love. The best companies are supporters of families.
Praise and credit the work of your reports to the rest of the company, never present it as your own. This and many other great lessons can be found in an Ask MetaFilter thread worth reading.
Do everything to unblock people. If someone has a question that is keeping them from being productive, try to answer the question yourself or find someone who can.
Communicate in a professional manner as though your words will be shared widely (e.g. published in a newspaper).
Employ multimodal communication to broadcast important decisions. To reach our distributed organization, announce important decisions on the company call, email the appropriate team email lists, Slack the appropriate channels, and target 1:1's or other important meetings on the same day, with the same information.
A tweet by Sam Altman combined with a reply by Paul Graham says it best: "People either get shit done or they don't. And it's easy to be tricked because they can be smart but never actually do anything." Watch for results instead of articulate answers to questions, otherwise you'll take too much time identifying under-performers.
Our summits are meant for informal communication and bonding across the company. There is a limited time for business activities during the summit so all our regular meetings should happen outside of the summit. We want informal, cross team, and open-ended meetings that include individual contributors. For example, inviting everyone to suggest currently missing functionality in GitLab.
Never delay a decision until the summit. Instead, use the summit as a deadline to get things done earlier.
We don't have explicit 20% time at GitLab. We measure results and not hours. If people are getting good results in the work that is assigned to them they are free to contribute to other parts of the company or work on a pet project. Don't say "your work on that pet project is hurting your performance". Instead say "we agreed to get X done but it is delayed, what happened and how can I help?"
Pick a metric before launching something new. 9 out of 10 launches fail. If a project is not working out shut it down completely. Starving a team of headcount to have it die a slow death is not frugal nor motivating. Fund the winners which will still take years to break even.
Do not discuss raises in advance because the salary calculator may change before the amount of the raise is decided.
Instead of prescribing a direction to your reports, it is best to ask ask questions following the Socratic method until you're happy with the direction. Your reports will have deeper knowledge in a more narrow area, so it is easy to draw different conclusions because they base theirs on different data. That is why the questions are so important.
Follow Berkshire's common injunction: "Always tell us the bad news promptly. It is only the good news that can wait.". Make sure to inform your manager of bad news as quickly as possible. Promptly reporting bad news is essential to preserving the trust that is needed to recover from it.
Try to avoid military analogies. We're not an army, we're not at war, there is no battle, we're not killing anyone, and we don't have weapons. Military language is not inclusive and can lead to zero sum thinking. We take competing and winning very seriously, but there is no need to describe things using vocabulary of physical violence. Similarly, non-collaborative and aggressive terms like "rockstar" and "badass" put up walls between people. If a term is standard in the industry, for example killing a Unix process, it is acceptable to use it because that is more efficient. Do use "primary-secondary" instead of "master-slave" for replication mechanisms.
Ability to align the day-to-day execution to the top objectives of the company.
Work peer-to-peer and sponsor healthy conflict amongst the team to resolve issues quickly, escalating only when all options are exhausted.
Working on defining what our criteria for a VP are. The CEO has approval on VP titles. Please don’t set expectations with internal/external candidates without initiating the discussion with the CEO first.
This is the executive group.
Like everyone at the company, they live our values.
They suggest relevant, ambitious, and quantifiable OKRs, and achieve 70% of them.
They are reliable and ensure their teams complete what they agreed to do.
They detect and communicate problems in their departments before other departments even notice them.
They hire and retain people that perform better at their jobs than they do.
They get a huge amount of things done by iterating fast and training their department in iteration.
VPs define and communicate the business strategy and vision instead of being completely tactical in the business.
VPs share insights about other functional areas that make other VPs better at their job.
VPs suggest and implement improvements to our cross functional processes.
This is the group with the CxO titles (CEO, CFO, etc.).
Have broad responsibilities, maximizing the scope of their discipline.
Frequently achieve results outside their discipline.
Make other executives better in their discipline.
We recorded a training video on this subject:
We combine the best of both hierarchical and consensus organizations. Hierarchical organizations have good speed but are bad at gathering data, leading to people saying yes but not doing it. Consensus organizations are good at gathering data but lack speed, leading to projects happening under the radar. We split decisions into two phases. The data gathering phase has the best of consensus organizations, where everyone can contribute. The decision phase has the best of a hierarchical organization, the person that does the work or their manager decides what to do.
At GitLab, decision making is based on an informed and knowledgeable hierarchy, not on consensus or democracy. Voting on material decisions shows a lack of informed leadership.
Make data driven decisions but consider environments that do not allow reliable data collection. According to research by the Harvard Business Review, "experience and knowledge of leaders in the subject matter still outperforms purely data-driven approaches."
Be aware of your unconscious biases and emotional triggers.
We don't have project managers. Individual contributors need to manage themselves. Not everyone will be able to do this effectively and fit our organization. Making someone responsible for managing others will cause negative effects to the results of the people that can manage themselves. If you manage yourself you have a much greater freedom to make decisions, and those decisions are based on deep knowledge of the situation. We want to retain the people that can handle that responsibility and therefore we can't retain the ones that struggle. Assigning a project manager/coordinator/case manager/etc. to something is an indicator that something is wrong and we are picking the wrong solution.
The person that does the work makes the decisions, they are the Directly Responsible Individual (DRI). They should listen to the data and informed opinions of others to arrive at their decision. Part of making good decisions is knowing who has good information and/or experience that informs that decision.
Giving Performance Feedback
We recorded a training video on this subject:
Giving regular feedback is extremely important for both managers and team members. Feedback can take the form of coaching sessions (we created a training video on coaching), separate from 1-1 meetings. Giving feedback is also about being prepared and, depending on the situation, you should create separate agendas and structure them as follows:
Put your feedback into three areas: Start, Stop, Continue
As a leader, the way you respond to negative feedback makes a significant impact on your team. Remember that it can be difficult for people to approach someone in authority with concerns and respond with sensitivity and appreciation. In particular, we recommend that you keep the following in mind:
Don't argue or get defensive. Accept the feedback for what it is - an attempt to help you improve your work or your professional relationships. If you do have to explain yourself, try to remain empathetic.
It's fine (even preferable) to defer action. When presented with negative feedback, we often feel like we have to either justify our actions or promise change, and since change isn't always easy when you're responsible for a large team, justification becomes the default. It's OK to say you need time to evaluate the feedback and decide how to proceed.
We don't want a matrix organization where you work with a lead day to day but formally report to someone else.
The advantage of a functional structure is that you get better feedback and training since your manager understands your work better than a general manager.
For the organization, forgoing a separate class of managers ensures a simple structure with clear responsibilities.
A functional organization structure mimics the top structure of our organizations (Finance, Sales, Engineering, etc.).
It reduces compensation costs, coordination costs, and office politics.
The disadvantage is that your manager has a limited amount of time for you and probably has less experience managing people.
To mitigate these disadvantages we should offer ample training, coaching, support structures, and processes to ensure our managers can handle these tasks correctly and in a limited amount of time.
Everyone deserves a great manager that helps you with your career. They should let you know when you should improve, hire a great team, and motivate and coach you to get the best out of you.
"Nuke all matrices. Nuke all dual reporting structures. And nuke as many shared services functions as you possibly can." from the great guide to big companies from Marc Andreessen (the other guides are awesome too).
We recommend reading High Output Management, and its author coined Grove's law: All large organizations with a common business purpose end up in a hybrid organizational form. We believe a dual reporting structure is inevitable, we just want to delay it as long as possible.
We do make features with a ad-hoc cross-functional group called a crew. This group is not a permanent team reporting to a project manager. The group consists of people that are assigned by their functional manager to work on an issue at the beginning of our monthly sprint. In practice it make sense to assign the same people if possible, but the composition of the group is variable. This is more flexible due to cases where people are not available, there is more work for a certain functional group, or when a specific expertise is needed. An example of a crew is the people working on our project to migrate GitLab.com to Google Cloud Platform who are from the production, build, database, and Geo groups.
Having a crew requires a lot of discipline from the people in that group to work together. People need to be managers of one. There is no safety net in the form of a project manager. It means that people that do not manage themselves well are not a good fit. It also means that people that do manage themselves well have more freedom.
Functional companies are easier when you focus on one product. Apple focusses on the iPhone and can have a unitary/functional/integrated organizational form. The advantage is that you can make one strong integrated product. We can also maintain a functional organization as long as we keep offering new functionality as features of GitLab instead of different products. The fact that we're in touch with the market because we use our own product helps as well.
Having functional managers means that they are rarely spending 100% of their time managing. They always get their hands dirty. Apart from giving them relevant experience, it also focuses them on the output function more than the process. Hopefully both the focus and not having a lot of time for process reduces the amount of politics.
We want to promote organic cross-functional collaboration by giving people stable counterparts for other functions they need to work with. For example, each Strategic Account Leader (SAL) works with one Sales Development Representative (SDR). With our categories every backend team of developers maps to a Product Manager (PM), a frontend team. Giving people a stable counterpart allows for more social trust and familiarity, which speeds up decision making, prevents communication problems, and reduces the risk of conflicts.
Factory vs. studio
We want the best combination of a factory and a studio. The studio element means anyone can chime in about anything, from a user to the CEO. You can step outside your work area and contribute. The factory element means everyone has a clearly assigned task and authority.
Process got a bad rep
Process has a bad reputation. It has that reputation for things that we try to avoid doing at GitLab. When you have processes that are not needed it turns into a bureaucracy. A good example are approval processes. We should keep approval processes to a minimum, by both giving people the authority to make decisions by themselves and by having a quick lightweight approval process where needed.
But process also has good aspects. Having a documented process for how to communicate within the company greatly reduces time spend on on-boarding, increases speed, and prevents mistakes. A counterintuitive effect is that it also makes it easier to change processes. It is really hard to change a process that doesn't have a name or location and lives in different versions in the heads of people. Changing a written process and distributing the diff is much easier.