Developer

At GitLab, developers are highly independent and self-organized individual contributors who work together as a tight team in a remote and agile way.

Most backend developers work on all aspects of GitLab, building features, fixing bugs, and generally improving the application. Some developers specialize and focus on a specific area, such as packaging, performance or GitLab CI. Developers can specialize immediately after joining, or after some time, when they have gained familiarity with many areas of GitLab and find one they would like to focus on.

Responsibilities

Requirements

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.

If you think you would be an asset to our engineering team regardless, please see if another position better fits your experiences and interests, or apply using the Open Application.

If you would still prefer to join the backend development team as a Ruby developer, please consider contributing to the open-source GitLab Community Edition. We frequently hire people from the community who have shown through contributions that they have the skills that we are looking for, even if they didn’t have much previous experience with those technologies, and we would gladly review those contributions.

Junior Developers

Junior Developers share the same requirements outlined above, but typically join with less or alternate experience in one of the key areas of Developer expertise (Ruby on Rails, Git, reviewing code). For example, a person with extensive experience in a web framework other than RoR, but with experience on the other areas would typically join as a Junior.

Senior Developers

Senior Developers are experienced developers who meet the following requirements:

  1. Technical Skills
    • Are able to write modular, well-tested, and maintainable code
    • Know a domain really well and radiate that knowledge
    • Contribute to one or more complementary projects
  2. Leadership
    • Begins to show architectural perspective
    • Proposing new ideas, performing feasibility analyses and scoping the work
  3. Code quality
    • Leaves code in substantially better shape than before
    • Fixes bugs/regressions quickly
    • Monitors overall code quality/build failures
    • Creates test plans
  4. Communication
    • Provides thorough and timely code feedback for peers
    • Able to communicate clearly on technical topics
    • Keeps issues up-to-date with progress
    • Helps guide other merge requests to completion
    • Helps with recruiting
  5. Performance & Scalability
    • Excellent at writing production-ready code with little assistance
    • Able to write complex code that can scale with a significant number of users

Staff Developers

A Senior Developer will be promoted to a Staff Developer when he/she has demonstrated significant leadership to deliver high-impact projects. This may involve any type of consistent "above and beyond senior level" performance, for example:

  1. Technical Skills
    • Identifies significant projects that result in substantial cost savings or revenue
    • Able to create innovative solutions that push GitLab's technical abilities ahead of the curve
  2. Leadership
    • Leads the design for medium to large projects with feedback from other engineers
    • Working across functional groups to deliver the project
  3. Code quality
    • Proactively identifying and reducing technical debt
    • Proactively defining and solving important architectural issues
  4. Communication
    • Writing in-depth documentation that shares knowledge and radiates GitLab technical strengths
  5. Performance & Scalability
    • Leads development of projects that lead to a significant improvement of the overall performance and scalability of GitLab

Security Specialist

An Security Specialist is a developer who focuses on ensuring that GitLab and associated applications are as secure as possible. The Security Specialist works in close collaboration with the Security Lead and has the following set of skills, experience, and responsibilities:

  1. Technical Skills
    • Ability to discover and patch SQLi, XSS, CSRF, SSRF, authentication and authorization flaws, and other web-based security vulnerabilities (OWASP Top 10 and beyond).
    • Knowledge of common authentication technologies including OAuth, SAML, CAs, OTP/TOTP.
    • Knowledge of browser-based security controls such as CSP, HSTS, XFO.
    • Experience with standard web application security tools such as Arachni, Brakeman, and BurpSuite.
  2. Code quality
    • Proactively identifying and reducing security risks.
    • Finding and removing outdated and vulnerable code and code libraries.
  3. Communication
    • Consult with other developers and product managers to analyze and propose application security standards, methods, and architectures.
    • Handle communications with independent vulnerability researchers and design appropriate mitigation strategies for reported vulnerabilities.
    • Educate other developers on secure coding best practices.
    • Ability to professionally handle communications with outside researchers, users, and customers.
    • Ability to communicate clearly on technical issues.
  4. Performance & Scalability
    • An understanding of how to write code that is not only secure but scales to a large number of users and systems.

Internships

We normally don't offer any internships, but if you get a couple of merge requests accepted, we'll interview you for one. This will be a remote internship without supervision; you'll only get feedback on your merge requests. If you want to work on open source and qualify please submit an application. In the cover letter field, please note that you want an internship and link to the accepted merge requests. The merge requests should be of significant value and difficulty, which is at the discretion of the hiring manager. For example, fixing 10 typos isn't as valuable as shipping 2 new features.

Workflow

The basics of GitLab development can be found in the developer onboarding document.

The handbook details the complete GitLab Workflow.

Compensation

Annual Compensation
--

How did we calculate your compensation?

NYC benchmark $87,337
x
(
Rent Index --
+
Hot Market Adjustment --
+
0.25
)
x
Level 1.0
x
Experience 0.8 to 1.2
x
Contract Type --
Find out how our calculator works. You are also eligible for stock options and other benefits.