Backend Engineers at GitLab work on our product. This includes both the open source version of GitLab, the enterprise editions, and the GitLab.com service as well. They work with peers on teams dedicated to areas of the product. They work together with product managers, designers, and frontend engineers to solve common goals.
Unless otherwise specified, all Backend Engineering roles at GitLab share the following requirements and responsibilities:
At GitLab, due to the pace we're moving, people joining our team will be expected to have significant professional experience in the primary programming language of the specialty that they'll be joining. Because the majority of our codebase is written in Ruby, even in specialized roles, a knowledge of Ruby and Ruby on Rails or a desire to learn and contribute is necessary.
For context, see this merge request with some history on this policy.
Some specialties within GitLab are using primary programming languages other than Ruby. These programming languages are defined as being primary in terms of an engineer's experience and what they'll be writing day to day. The expectation from the specialty is that engineers will have extensive experience in this primary programming language as well as some level of understanding of Ruby and, Ruby on Rails.
Backend Engineers have the following job-family performance indicators.
Engineering Managers have the following job-family performance indicators. Performance indicators for a Manager role usually apply to the team, meaning the manager and their direct reports.
Read more about levels at GitLab here.
The Associate level in the Engineering Division is a grade 5.
The Intermediate Backend Engineer is a grade 6.
The Senior Backend Engineer role extends the Backend Engineer role.
The Senior Backend Engineer is a grade 7.
A Senior Backend Engineer may want to pursue the engineering management track at this point as a manager of people or a higher level individual contributor. See Engineering Career Development for more detail.
Note: Staff and above positions at GitLab are more of a role than just a "level". We prefer to bring people in as Senior and let the team elevate them to Staff due to an outstanding work history within GitLab.
The Staff Backend Engineer role extends the Senior Backend Engineer role as an individual contributor.
The Staff Backend Engineer is a grade 8.
The Backend Engineering Manager specializes in Backend Engineering Management as a manager of people. Engineering Managers at GitLab see their team as their product. While they are technically credible and know the details of what engineers work on, their time is spent safeguarding their team's health, hiring a world-class team, and putting them in the best position to succeed. They own the delivery of product commitments and are always looking to improve productivity. They must also coordinate across departments to accomplish collaborative goals.
The Backend Engineering Manager role is a grade 8.
For more details on the engineering career ladders, please review the engineering career development handbook page.
Candidates for this position can generally expect the hiring process to follow the order below. Note that as candidates indicate preference or aptitude for one or more specialties, the hiring process will be adjusted to suit. Please keep in mind that candidates can be declined from the position at any stage of the process. To learn more about someone who may be conducting the interview, find their job title on our team page.
For Individual Contributors:
The Build team closely partners with our greater engineering organization to build and distribute GitLab services. The Build team is tasked with ensuring the components that make up GitLab are up to date, license compliant, and available for our users’ platforms and architectures. This group manages the build pipelines, researches support for new services, platforms, and architectures, as well as maintains existing ones. We strive to respond efficiently to build failures, security results, and dependency changes in order to ensure a safe reliable product for our users.
Distribution Build engineering regularly interfaces with broader development teams in supporting newly created features. Notably, the Distribution Deploy team is the Build team's biggest internal collaborator, so there is significant team interdependency. The Distribution Build team is involved with diverse projects and tasks that include assisting community packaging efforts.
The Deploy team closely partners with our greater engineering organization to configure and automate GitLab deployments. The Deploy team is tasked with delivering an intuitive, clear, and frictionless installation experience, followed by smooth, seamless upgrade and maintenance processes for deployments of any scale. We strive to deliver ongoing operational behaviors for scaling, little to zero downtime upgrades, and highly reliable experiences for not only instance administrators but their users.
Distribution Deploy engineering regularly interfaces with broader development teams in supporting newly created features. Notably, our infrastructure team is the deploy team's biggest internal customer, so there is significant team interdependency. The Distribution Deploy team is involved with diverse projects and tasks that include assisting community packaging efforts.
Package engineers are focused on creating the binary repository management system that will extend our Continuous Integration (CI) functionality to allow access and management of artifacts manipulated by projects.
By extending the current CI artifacts system, the Package team will expose GitLab as a package repository allowing access to the most common package managers, e.g. Maven and APT and similar. Additionally, the Package team is improving the Container Registry and is responsible for items listed under Package product category.
Focus on security protection features for GitLab (including policy, vulnerability, dependency, and compliance management). This role will report to and collaborate directly with a Govern Engineering Manager.
Focus on security features for GitLab. This role will specifically focus on security; if you want to work with Ruby on Rails and not security, please apply to our Backend Engineer role instead. This role will report to and collaborate directly with the Secure Engineering Manager.
The configuration team works on GitLab's Application Control Panel, Infrastructure Configuration features, our ChatOps product, Feature flags, and our entire Auto DevOps feature set. It is part of our collection of Ops Backend teams.
CI/CD Backend Engineers are primarily tasked with improving the Continuous Integration (CI) and Continuous Deployment (CD) functionality in GitLab. Engineers should be willing to learn Kubernetes and Container Technology. CI/CD Engineers should always have three goals in mind:
We, as a team, cover end-to-end integration of CI/CD in GitLab, with components being written in Rails and Go. We work on a scale of processing a few million of CI/CD jobs on GitLab.com monthly. CI/CD engineering is interlaced with a number of teams across GitLab. We build new features by following our direction. Currently, we focus on providing a deep integration of Kubernetes with GitLab:
Additionally, we also focus on improving the efficiency, performance, and scalability of all aspects of CI/CD:
The CI/CD Engineering Manager also does weekly stand-up with a team and product managers to talk about plan for the work in the upcoming week and coordinates a deployment of CI/CD related services with infrastructure team.
GitLab Geo is an enterprise product feature, built to help speed up the development of distributed teams by providing one or more read-only mirrors of a primary GitLab instance. This mirror (a Geo secondary node) reduces the time to clone or fetch large repositories and projects, or can be part of a Disaster Recovery solution.
Growth Engineers work with a cross-functional team to influence the growth of GitLab as a business. In helping us iterate and learn rapidly, these engineers enable us to more effectively meet the needs of potential users.
Engineering Productivity Engineers are full-stack engineers primarily tasked with improving the productivity of the GitLab developers (from both GitLab Inc and the rest of the community), and making the GitLab project maintainable in the long-term.
See the description of the Engineering Productivity team for more details. The position also involves working with the community as Merge Request Coach, and working together with our Backend Engineers to respond and address issues from the community.
Engineering Productivity Engineers have the following job-family performance indicators.
The Application Performance team works to improve availability, reliability, and performance of the application. We analyze the behavior, recognize bottlenecks, and propose changes. We work to make GitLab a responsive and performant DevOps platform, which offers a great user experience at any scale.
An ideal engineer candidate -
Alternatively, some of the following qualifications, may not necessarily be all -
The Ecosystem team is responsible for seamless integration between GitLab and 3rd party products as well as making GitLab products available on cloud service providers’ marketplaces such as AWS. The team plays a critical role in developing APIs and SDK and expanding GitLab market opportunities.
Gitaly is the Git data storage tier of GitLab, providing a reliable, secure and fast distributed Git data store over gRPC. For more information about Gitaly, see the team's Direction page. This position reports to the Gitaly lead.
Gitaly's high-availability storage requires developers who understand distributed storage systems, their management, observability and availability. Cluster team contributes features, fixes bugs and improves performance of this software stack.
Gitaly is the Git data storage tier of GitLab, providing a reliable, secure and fast distributed Git data store over gRPC. For more information about Gitaly, see the team's Direction page. This position reports to the Git team lead.
Gitaly uses the open-source Git product under the hood to implement the business logic for repository access. Git team contributes features, fixes bugs and improves performance of upstream Git in accordance with product direction for both Git and GitLab/Gitaly.
A database specialist is an engineer that focuses on database related changes and improvements. You will spend the majority of your time making application changes to improve database performance, availability, and reliability.
Unlike the Database Engineer position the database specialist title has a balance of application development and knowledge of PostgreSQL. As such Ruby knowledge is absolutely required and deep PostgreSQL knowledge is equally important.
Infrastructure specialists work alongside DBREs and SREs and are experienced Ruby/GoLang developers who work in the product with a focus on reliability, observability, performance and scalability at the application level, as well as on resource optimization from an Infrastructure perspective and on operationally relevant features.
Delivery specialist is an engineer that focuses on improving the engineering release workflows, creates new tools, improves release process and works closely with the whole Engineering team to ensure that every GitLab release reaches the public in time.
The Scalability team is responsible for optimising GitLab.com performance through improving the reliability, availability and performance of individual GitLab services and the application as a whole.
Candidate should ideally be:
Other qualifications include:
Elasticsearch engineers are focused on delivering a first class global search experience throughout GitLab products. They are experienced Ruby/GoLang developers who focus on implementing core Elasticsearch functions while advising other development teams on best practices (e.g. indexing).
GitLab Inc. is a company based on the GitLab open-source project. GitLab is a community project to which over 2,200 people worldwide have contributed. We are an active participant in this community, trying to serve its needs and lead by example. We have one vision: everyone can contribute to all digital content, and our mission is to change all creative work from read-only to read-write so that everyone can contribute.
We value results, transparency, sharing, freedom, efficiency, self-learning, frugality, collaboration, directness, kindness, diversity, inclusion and belonging, boring solutions, and quirkiness. If these values match your personality, work ethic, and personal goals, we encourage you to visit our primer to learn more. Open source is our culture, our way of life, our story, and what makes us truly unique.
Top 10 Reasons to Work for GitLab:
See our culture page for more!
Work remotely from anywhere in the world. Curious to see what that looks like? Check out our remote manifesto and guides.