- You are here:
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:
- Work with helpful, kind, motivated, and talented people.
- Work remote so you have no commute and are free to travel and move.
- Have flexible work hours so you are there for other people and free to plan the day how you like.
- Everyone works remote, but you don't feel remote. We don't have a head office, so you're not in a satellite office.
- Work on open source software so you can interact with a large community and can show your work.
- Work on a product you use every day: we drink our own wine.
- Work on a product used by lots of people that care about what you do.
- As a company we contribute more than we take, most of our work is released as the open source GitLab CE.
- Focused on results, not on long hours, so that you can have a life and don't burn out.
- Open internal processes: know what you're getting in to and be assured we're thoughtful and effective.
See our culture page for more!
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.
- Develop features from proposal to polished end result.
- Support and collaborate with our support engineers in getting to the bottom of user-reported issues and come up with robust solutions.
- Engage with the core team and the open source community to collaborate on improving GitLab.
- Manage and review code contributed by the rest of the community and work with them to get it ready for production.
- Create and maintain documentation around features and configuration to save our users time.
- Take initiative in improving the software in small or large ways to address pain points in your own experience as a developer.
- Keep code easy to maintain and keep it easy for others to contribute code to GitLab.
- Qualify developers for hiring.
- You can reason about software, algorithms, and performance from a high level
- You are passionate about open source
- You have worked on a production-level Ruby application, preferably using Rails. (This is a strict requirement)
- You know how to write your own Ruby gem using TDD techniques
- Strong written communication skills
- Experience with Docker, Nginx, Go, and Linux system administration a plus
- Experience with online community development a plus
- Self-motivated and have strong organizational skills
- You share our values, and work in accordance with those values.
- A technical interview is part of the hiring process for this position.
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 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 are experienced developers who meet the following requirements:
- Technical Skills
- Write modular, well-tested, and maintainable code
- Know a domain really well and radiate that knowledge
- Contribute to one or more complementary projects
- Take on difficult issues, big or small
- Begin to show architectural perspective
- Propose new ideas, performing feasibility analyses and scoping the work
- Code quality
- Leave code in substantially better shape than before
- Fix bugs/regressions quickly
- Monitor overall code quality/build failures
- Leave tests in better shape than before: faster, more reliable, more comprehensive, etc.
- Provide thorough and timely code feedback for peers
- Able to communicate clearly on technical topics and present ideas to the rest of the team
- Keep issues up-to-date with progress
- Help guide other merge requests to completion
- Performance and scalability
- Excellent at writing production-ready code with little assistance
- Are able to write complex code that can scale with a significant number of users
- Are able to fix performance issues on GitLab.com with minimal guidance using our existing tools, and improve those tools where needed
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:
- Technical Skills
- Can demonstrate a deep knowledge and experience with multiple technical domains as well as a very good broad knowledge of the entire GitLab technology stack. What Kent Beck refers to as a Paint Drip Person
- Proactively identifies and reduces technical debt
- Identifies and reduces scalability issues and performance bottlenecks in the GitLab stack
- Actively contributes to the long-term strategic architectural vision for the company, helping to set the technical direction for GitLab
- Works across functional groups, engaging stakeholders, gatekeepers, and engineers to deliver major features from idea to production
- Demonstrates the ability to break a complex problem down into a set of minimum viable changes that can be shipped through a series of short release cycles
- Proactively shares knowledge and radiates GitLab technical skills to team members through mentorship, documentation, pairing and other approaches
- Excellent written and spoken language skills: a staff developer should be able to communicate their ideas efficiently and concisely
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 manager. For example, fixing 10 typos isn't as valuable as shipping 2 new features.
The basics of GitLab development can be found in the developer onboarding document.
The handbook details the complete GitLab Workflow.
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.
Work remotely from anywhere in the world. Curious to see what that looks like? Check out our remote manifesto. Apply