Developer

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, 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!

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

Developers Roles at GitLab

Developers 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 backend or frontend developers to solve common goals.

Junior Developer

Junior Developers share the same requirements outlined below, but typically join with less or alternate experience in one of the key areas of Developer expertise (Ruby on Rails, Go, Git, reviewing code).

Intermediate Developer

Senior Developer

The Senior Developer role extends the Developer role.


A Senior Developer may want to pursue the engineering management track at this point. See Engineering Career Development for more detail.


Staff Developer

The Staff Developer role extends the Senior Developer role.

Distinguished Developer

The Distinguished Developer role extends the Staff Developer role.

Engineering Fellow

The Engineering Fellow role extends the Distinguished Developer role.

Specialties

Read more about what a specialty is at GitLab here.

Platform/Discussion

The Platform and Discussion teams are responsible for working on the main Rails application in GitLab, with different focuses. Both teams do very similar work, and share a hiring pool.

Ruby experience

For this position, a significant amount of experience with Ruby is a strict requirement.

We would love to hire all great backend developers, regardless of the language they have most experience with, but at this point we are looking for developers who can get up and running within the GitLab code base very quickly and without requiring much training, which limits us to developers with a large amount of existing experience with Ruby, and preferably Rails too.

For a time, we also considered applicants with little or no Ruby and Rails experience for this position, because we realize that programming skills are to a large extent transferable between programming languages, but we are not currently doing that anymore for the reasons described in the merge request that removed the section from this listing that described that policy.

Build

Build team closely partners with the rest of the engineering organization to build, configure, and automate GitLab installation. GitLab's build team is tasked with creating a seamless installation experience for customers and community users across multitude of platforms.

Build engineering is interlaced with the broader development team in supporting newly created features. Notably, the infrastructure team is the build team's biggest internal customer, so there is significant team interdependency. Build team also provides significant variety in tasks and access to a diversity of projects, including helping out on various community packaging projects. This is reflected in the job requirements: we are tasked with creating and maintaining a Cloud Native GitLab deployment and upgrade methods, Omnibus GitLab package installation across multiple Linux based Operating Systems, and various Cloud providers deployment methods (such as AWS Cloudformation, GC Deployment Manager and so on).

Security

Focus on security features and security products for GitLab. This role will report to and collaborate directly with our CTO.

  1. Responsibilities
    • Develop security products from proposal to polished end result.
    • Integrating 3rd party security tools into GitLab.
    • Key aspects of this role are focused on security products and features.
    • The complexity of this role will increase over time.
    • If you are willing to stick to working on these features for at least a year, then this role is for you.
  2. Requirements
    • Strong Ruby developer with security expertise or proven security interest.
    • Passion and interest toward security (scanning, dependencies, etc.).
    • Experience in using GitLab and GitLab CI.
    • Ability to work in European timezone.
  3. Additional Hiring Process
    • Candidates will be invited to schedule a 60 minute interview with our CTO as the the technical interview.

CI/CD

CI/CD Backend Developers 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 reliable 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.

  1. Requirements
    • Go developer with a lot of Kubernetes production experience is a plus
    • Significant amount of experience with Ruby is a strict requirement

Candidates may be invited to schedule an interview with either an Engineer or Product Manager as part of the hiring process.

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.

  1. Geo Requirements (Staff Level)
    • Architect Geo and Disaster Recovery products for GitLab
    • Identify ways to test and improve availability and performance of GitLab Geo at GitLab.com scale
    • Instrument and monitor the health of distributed GitLab instances
    • Educate all team members on best practices relating to high availability
  2. Requirements
    • Deep experience architecting and implementing fault-tolerant, distributed systems
    • Experience building and scaling highly-available systems
    • In-depth experience with Ruby on Rails, Go, and/or Git

Edge

Edge Backend Developers are 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 Edge team for more details. The position also involves working with the community as merge request coach, and working together with our issue triage specialists to respond and address issues from the community.

Monitoring

Monitoring developers work primarily on two aspects of GitLab: improving the instrumentation of GitLab itself, as well as building features our customers can use to monitor their own applications. This functionality includes metrics, tracing, and logging.

The requirements for a Monitoring developer are:

BizOps

BizOps 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 BizOps developer will be tasked with executing on the vision of the BizOps project, to bring the product to market. The requirements for a BizOps developer include:

Database

A database specialist is a developer 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

Hiring Process

Applicants for this position can expect the hiring process to follow the order below. Please keep in mind that applicants 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.

As always, the interviews and screening call will be conducted via a video call. See more details about our hiring process on the hiring handbook.

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

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

Compensation

Annual Compensation
--
Unfortunately GitLab is not hiring at your selected country at this time. Please read our hiring handbook for more details.

How did we calculate your compensation?

SF benchmark $120,000
x
(
0.7
x
(
max
(
0.2,
Rent Index --
+
Hot Market Adjustment --
)
/
1.26
)
+
0.30
)
x
Level 1.0
x
Experience 0.8 to 1.2
x
Contract Type --
x
Country Factor --
Find out how our calculator works. You are also eligible for stock options and other benefits.