Gitlab hero border pattern left svg Gitlab hero border pattern right svg

Backend Engineers

Backend Engineering Roles at GitLab

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 developers to solve common goals.

Unless otherwise specified, all Backend Engineering roles at GitLab share the following requirements and responsibilities:

Requirements

Nice-to-haves

Responsibilities


Professional Experience

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.

Some history on this policy: https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/2695


Primary programming language

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 expecation 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.

Levels

Read more about levels at GitLab here.

Junior Backend Engineer

Junior Backend Engineers share the same requirements and responsibilities outlined above, but typically join with less or alternate experience than a typical Backend Engineers.

Senior Backend Engineer

The Senior Backend Engineer role extends the Backend Engineer role.

Responsibilities


A Senior Backend Engineer may want to pursue the engineering management track at this point. 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.


Staff Backend Engineer

The Staff Backend Engineer role extends the Senior Backend Engineer role.

Responsibilities

Distinguished Backend Engineer

The Distinguished Backend Engineer role extends the Staff Backend Engineer role.

Engineering Fellow

The Engineering Fellow role extends the Distinguished Backend Engineer role.

Hiring Process

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 her/his job title on our team page.

Engineering Management Roles at GitLab

Managers in the engineering department at GitLab see the team as their product. While they are technically credible and know the details of what backend engineers work on, their time is spent 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.

Engineering Manager

Unless otherwise specified below, all Engineering Manager roles at GitLab share the following requirements and responsibilities:

Responsibilities

Requirements

Nice-to-haves

Hiring Process

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 her/his job title on our team page.

Additional details about our process can be found on our hiring page.

Director of Engineering

The Director of Engineering role extends the Engineering Manager role.

Must-have Requirements

Nice-to-have Requirements

Senior Director of Engineering

The Senior Director of Engineering role extends the Director of Engineering role. This role is defined by the functional area(s) the person manages.

VP of Engineering

The VP of Engineering role extends the Senior Director of Engineering role.

Specialties

Read more about what a specialty is at GitLab here.

Distribution

The Distribution team closely partners with our greater engineering organization to build, configure and automate GitLab deployments. GitLab's distribution team is tasked with creating a seamless installation and upgrade experience for users across a multitude of platforms.

Distribution engineering regularly interfaces with broader development teams in supporting newly created features. Notably, our infrastructure team is the distribution team's biggest internal customer, so there is significant team interdependency. The Distribution team is involved with diverse projects and tasks that include assisting community packaging efforts. This is reflected in the job role:

Requirements

Package

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.

Responsibilities

Secure

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.

Requirements

Responsibilities

Configuration

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.

Requirements

Responsibilities

CI/CD

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:

  1. Provide value to the user and communicate such with product managers,
  2. Introduce features that work at scale and in untrusting environments,
  3. Always focus on defining and shipping the Minimal Viable Change.

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:

  1. by automating application testing and deployment through Auto DevOps,
  2. by managing GitLab Runners on top of Kubernetes,
  3. by working with other teams that provide facilities to monitor all running applications,
  4. in the future implement A-B testing, feature flags, etc.

Additionally, we also focus on improving the efficiency, performance, and scalability of all aspects of CI/CD:

  1. Improve performance of developer workflows, e.g. faster CI testing, by improving parallelization,
  2. Improve performance of implementation, ex.:by allowing us to run 10-100x more in one year,
  3. Identify and add features needed by us, ex.:to allow us to test more reliably and ship faster.

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.

Requirements

Geo

GitLab Geo is an enterprise product feature that speeds up the work of globally distributed teams, adds redundancy for GitLab instances, and provides Disaster Recovery as well.

Requirements

Requirements (Staff Level)

Growth

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.

Requirements

Engineering Productivity

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.

Responsibilities

Requirements

See the description of the Quality 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 Performance Indicators

Engineering Productivity Engineers have the following job-family performance indicators.

Memory

The Memory team is responsible for optimizing GitLab application performance by managing the memory resources required. The team is also responsible for changes affecting the responsiveness of the application.

Responsibilities

Requirements

An ideal engineer candidate -

Alternatively, some of the following qualifications, may not necessarily be all -

  1. Must be proficient in one or more of the following in preference order
    1. Ruby.
    2. Go.
    3. Similar OOP languages (e.g. Python, C++, Java, C#, etc.).
  2. AND/OR proficient in one or more of the following
    1. Proven record of building scalable solutions.
    2. Top notch understanding of DB principles and optimization mechanisms.
    3. Familiar with a framework similar to the concepts of Rails (e.g. CakePHP, Ember, Node.js, Angular, J2EE, etc.) - For reference and apply with due diligence.
    4. High-level principles: has knowledge of existing perf testing tools and test automation with some Ruby.
    5. Low-level principles: Understands internals, how memory works, garbage collection. Sorting algorithms.
  3. Nice to have
    1. Tuning up performance from architecture/design perspective.
    2. Troubleshooting memory leaks (any language).
    3. Optimizing full stack implementation, e.g. I/O, caching.
    4. Good knowledge of performance testing.
  4. Strong problem analysis and solving skills, methodological in problem solving.
  5. Must be a proven fast-learner and self-starter.

Ecosystem

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.

Responsibilities

Requirements

Gitaly

Gitaly is a new service in our architecture that handles git and other filesystem operations for GitLab instances, and aims to improve reliability and performance while scaling to meet the needs of installations with thousands of concurrent users, including our site GitLab.com. This position reports to the Gitaly Lead.

Responsibilities

Requirements:

Meltano (BizOps Product)

Meltano is an early stage project at GitLab focused on delivering an open source framework for analytics, business intelligence, and data science. It leverages version control, data science tools, CI, CD, Kubernetes, and review apps.

A Meltano Engineer will be tasked with executing on the vision of the Meltano project, to bring the product to market.

Requirements

Database

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; though you will also spend time working on the database infrastructure that powers GitLab.com.

Unlike the Database Engineer position the database specialist title focuses more on application development and less on knowledge of PostgreSQL. As such Ruby knowledge is absolutely required, but the requirements for PostgreSQL knowledge / experience are less strict compared to the Database Engineer position.

Example Projects

Requirements

Release Management

Release management specialist is an engineer that focuses on improving the engineering 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.

Responsibilities

Gitter

Gitter specialists are full-stack JavaScript developers who are able to write JavaScript code that is shared between multiple environments. Gitter uses uses a JavaScript stack running Node.js on the server, and bundled with webpack on the client. The iOS, Android, MacOS (Cocoa) and Linux/Windows (NW.js) clients reuse much of the same codebase but also require some knowledge of Objective-C, Swift and Java. Gitter uses MongoDB, Redis, and Elasticsearch for backend storage.

Requirements

Responsibilities

Infrastructure

Infrastructure specialists work alongide 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.

Requirements

Responsibilities

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).

Requirements

Responsibilities

Compensation

Components

Compensation at GitLab consists of:

  1. Base salary
  2. Options
  3. Bonus in some functions
  4. Discretionary bonus
  5. Retirement contributions in eligible regions
  6. Pay for equipment
  7. Remote work
  8. Unlimited time off
  9. Benefits

Base salary calculator

Select a role

Annual Compensation
{{ compensationRange }}
Unfortunately GitLab is not hiring in your selected country at this time. Please read our frequently asked questions for more details.

How did we calculate your compensation?

SF benchmark {{ formatAmount(currentRole.salary) }}
x
Location Factor {{ formatAreaLocationFactor(currentArea) }}
x
Level {{ currentLevelFactor }}
x
Experience {{ currentExperience.min }} to {{ currentExperience.max }}
x
Contract Factor {{ contractTypeFactor || '--' }}

Share compensation url - copy


Find out how our calculator works. Also check out the remote work ROI calculator (we are working on building our own). Based on the information provided, we expect you will be an employee a contractor of {{ contractType.entity }}.

Apply

Please note that if we are actively hiring for a position, you will see it listed on our jobs page, where all of our current openings are advertised. To apply, please click on the name of the role you are interested in, which will take you to our applicant tracking system (ATS), Greenhouse.

Avoid the confidence gap; you do not have to match all the listed requirements exactly to apply. Our hiring process is described in more detail in our hiring handbook.

About GitLab

GitLab Inc. is a company based on the GitLab open-source project. GitLab is a community project to which over 1,000 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, frugality, collaboration, directness, kindness, diversity and inclusion, 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:

  1. Work with helpful, kind, motivated, and talented people.
  2. Work remote so you have no commute and are free to travel and move.
  3. Have flexible work hours so you are there for other people and free to plan the day how you like.
  4. Everyone works remote, but you don't feel remote. We don't have a head office, so you're not in a satellite office.
  5. Work on open source software so you can interact with a large community and can show your work.
  6. Work on a product you use every day: we drink our own wine.
  7. Work on a product used by lots of people that care about what you do.
  8. As a company we contribute more than we take, most of our work is released as the open source GitLab CE.
  9. Focused on results, not on long hours, so that you can have a life and don't burn out.
  10. Open internal processes: know what you're getting in to and be assured we're thoughtful and effective.

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.