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.
A group is any arrangement of people that is not reflected directly in our org structure.
Members of the management group are expected to demonstrate leadership in the way all GitLab team members are, plus:
Ensuring team members feel included and valued is one of the most important tasks of a manager. Proactively create psychological safety with your team members so that diverse perspectives can be heard and everyone can communicate and contribute authentically and creatively.
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-on-1s 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 where you expect the organization to be in 6 months from now.
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 #team-member-updates 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.
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.
GitLab Contribute (formerly GitLab summits) is meant for informal communication and bonding across the company. There is a limited time for business activities during GitLab Contribute so all our regular meetings should happen outside of the it. 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 GitLab Contribute. Instead, use them 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 compensation calculator may change before the amount of the raise is decided.
Do not discuss promotions or increase amounts until the promotion have gone through the entire approval process. People Analysts will inform the manager when they can inform the team member of the promotion and increase.
Instead of prescribing a direction to your reports, it is best to 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.
Complain up and explain down. Raise concerns you hear to your manager. When peers or reports complain, explain why a decision was made. If you don't understand why, ask your manager.
Create empathy for decisions from other leaders that negatively impact your team by explaining the reasons behind them. Organize a recorded AMA session with your team and the other leaders and encourage your team (as well as yourself) to ask any unanswered questions. Lead by example by ensuring that the discussion exposes what is best for the organization as a whole. Never present yourself as protecting the team from the rest of the organization; this creates a siege mentality and hinders collaboration.
These are the senior leaders.
Members of the S-group are expected to demonstrate leadership in the way all members of the director group are, plus:
They have significant strategic and functional responsibility.
They have significant operating budget responsibility (things like compensation planning, budget allocation, negotiation, investment tradeoff decisions).
They have leverage and influence over the performance and success of large teams (both reporting directly and indirectly) and their success will result in increased success across large numbers of people.
The impact of their decisions are broad and significant.
Some of them have critical external responsibility to represent the company and make decisions and statements for which the company is accountable.
This is an uncommon title and a small group that is nominated by the E-group. Please don't set expectations with internal/external candidates without initiating the discussion with the CEO first. The CEO has approval on addition of all these titles.
These are the executives.
Members of the E-group are expected to demonstrate leadership in the way all members of the S-group are, plus:
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 are proactive about detecting and communicating problems in their functions before other departments even notice them.
They hire and retain leaders that perform better in their functional areas they are.
They create roles and set requirements for what is needed 3-4 years out and hire for that profile.
They get a huge amount of things done by iterating quickly and training their department in iteration.
They define and communicate the business strategy and vision, instead of being overly tactical in the business.
They share insights about other functional areas that make others better at their job.
They suggest and implement improvements to our cross-functional processes.
They frequently help achieve results outside their function.
They make other executives better in their discipline.
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.
If you apply consensus in both the data gathering phase and the decision phase you lose speed and you get decisions that try to stay under the radar so there are fewer people to convince.
If you apply hierarchy in both the data gathering phase and the decision phase you lose valuable input.
Providing input but then not being part of the decision making phase is counterintuitive, you feel ignored. We'll have to accept that people listened to us but don't owe us an explanation to have fast decisions based on everyone's input.
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."
When analyzing trends, never show cumulative graphs because they always look up and to the right even if business is bad.
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 notable exception to this is in the Professional Services organization. While most functions at GitLab are serving the product or the company, ProServe is a services company which collaborates closely with customers and is sometimes contractually obligated to have project managers.
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.
Short way to phrase this: We can allow others into our kitchen because we can always send them out (inviting people to give input is much easier if you retain the ability to make a decision by yourself).
There are two schools of thought about how information should flow within companies. By far the most common way is chain of command, which means that you always flow communication through your manager. The problem with this approach is that, while it serves to enhance the power of the manager, it fails to serve the company.
Instead of a problem getting solved quickly, where a person in one dept talks to a person in another dept and makes the right thing happen, people are forced to talk to their manager who talks to their manager who talks to the manager in the other dept who talks to someone on his team. Then the info has to flow back the other way again. This is incredibly dumb. Any manager who allows this to happen, let alone encourages it, will soon find themselves working at another company. No kidding.
Anyone at Tesla can and should email/talk to anyone else according to what they think is the fastest way to solve a problem for the benefit of the whole company. You can talk to your manager's manager without his permission, you can talk directly to a VP in another dept, you can talk to me, you can talk to anyone without anyone else's permission. Moreover, you should consider yourself obligated to do so until the right thing happens. The point here is not random chitchat, but rather ensuring that we execute ultra-fast and well.
These principles also apply to GitLab.
Managers should not be bottlenecks or silos for communication.
Anyone should feel comfortable reaching out to anyone else with the best information they can to solve a problem.
This is a more efficient, transpararent, and collaborative way to work.
Giving regular feedback is extremely important for both managers and team members. Feedback can take the form of coaching sessions, separate from 1-on-1 meetings. Giving feedback is also about being prepared and, depending on the situation, you should create separate agendas and structure them as follows:
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.
Whenever there is need to work on a specific, high-level, cross functional business problem, we can assemble a working group.
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) and 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. This way we can work effectively cross functionally without the downsides of a matrix organization.
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 gets 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.
Recruiting and retention
Managers have an tremendous responsibility around recruiting and retention of team members.
Voluntary departures should be low, especially unexpected ones. The most common reasons for resignations can be tied back to the manager.
We want few candidates to decline an offer, especially when the reason isn't compensation.
We need adequate candidate pipeline volume and quality, especially for crucial positions.
Candidates that have a proposed offer should meet the bar, especially for more senior positions.
Feel free to reach out to anyone in the People Group for further support on leadership development topics. You can find us on the team page, search for People Operations. The team may also be reached in the #peopleops chat channel.