- You are here:
- Senior Backend 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.
- Develop features from proposal to polished end result.
- Review merge requests from your coworkers.
- 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
- You are a senior developer
- 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 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.
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
- Capable of leading complicated features, bug fixes, and integrations with limited guidance from leads
- Should make the entire team more productive through their efforts. This might be through mentoring junior developers, or by improving the team's process, documentation, testing or tooling in a way that helps everyone in the team be more effective.
- Code quality
- Leave code in substantially better shape than before
- Keep complexity contained as much as possible: if a feature is complex, that's sometimes unavoidable, but Senior Developers show that they can reduce or mitigate complexity in their changes
- 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, leaving minimal work for later reviews / maintainers
- 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
The basics of GitLab development can be found in the developer onboarding document.
The handbook details the complete GitLab Workflow.
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.
- Part of the application process is to provide links to some code. Some candidates want to share code privately, so if they do, we send them an email with our GitLab.com / GitHub / Bitbucket usernames and also invite them to email code to us.
- If the code looks good, we ask the candidate to answer two questions about web applications. One is fairly Rails-specific, to do with the MVC pattern, concerns, and services; the other is about the stages a web request goes through when someone gets the GitLab CE repo on GitLab.com.
- Selected candidates will be invited to schedule a 30 minute screening call with our Global Recruiters
- Next, candidates will be invited to schedule a 45 minute behavioral interview with a Backend Lead
- Candidates will then be invited to schedule a technical interview with a Backend Lead
- Candidates will be invited to schedule a third one hour interview with our VP of Engineering
- Finally, candidates will have a 50 minute interview with our CEO
- Successful candidates will subsequently be made an offer via email
Additional details about our process can be found on our hiring page.