Senior Developer, CI/CD
CI/CD Backend Developers are primarily tasked with improving the Continuous Integration (CI) and Continuous Deployment (CD) functionality in GitLab. GitLab CI/CD is widely used by a number of organizations over the world. CI/CD engineers are expected to be self-directed, communicative, and versatile; they should have experience with different developer technologies and frameworks. Engineers working in that position should be willing to learn Kubernetes and Container Technology.
Engineers at that position 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 almost two millions of CI/CD jobs on GitLab.com monthly. CI/CD is interlaced with a number of teams across a 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, 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.
Being part of the CI/CD team, you have a unique opportunity to use bleeding edge technologies, such as Kubernetes and Docker, and work on Ruby and Go projects. Not only will you work on features that deliver value for hundreds of thousands of organizations around the world, but you will also face massive scale issues with running a CI/CD system.
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.
Work remotely from anywhere in the world. Curious to see what that looks like? Check out our remote manifesto.
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!
- 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.
Senior CI/CD Backend Developer Requirements:
- Able to write complex code that can scale with a significant number of users
- 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
- Deep expertise within at least one programming environment
- Basic proficiency in at least one additional programming environment
- Begins to show architectural perspective
- Proposing new ideas, performing feasibility analyses and scoping the work
- Fully capable of taking substantial features from concept to shipping
- Helps set and maintain professional standards (e.g. code quality) for the entire organization
- Code quality
- Leaves code in substantially better shape than before
- Fixes bugs/regressions quickly
- Monitors overall code quality/build failures
- Creates test plans
- Work doesn't need extensive review for common issues
- 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
- Performance & Scalability
- Excellent at writing production-ready code with little assistance
Engineering Experience Required - All Levels:
- For this position, a significant amount of experience with Ruby is a strict requirement. Extra bonus points is Go experience. We do expect that you will like to work on Go during your journey at GitLab.
- If you are great Go developer with a lot of Kubernetes production experience and the strong drive towards improving a developers workflow please drop us the note.
- 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.
- If you think you would be an asset to our engineering team regardless, please see if another position better fits your experiences and interests.
- If you would still prefer to join the backend development team as a Ruby or Go developer, please consider contributing to the open-source GitLab Community Edition or GitLab Runner. 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.
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.
1. Selected candidates will be invited to schedule a 30min screening call with our Global Recruiters
2. A technical interview is part of the process
3. Next, candidates will be invited to schedule a first interview with an Engineering Lead
4. Candidates will then be invited to schedule an interview with the Head of Product
5. Candidates will be invited to schedule a third interview with our VP of Engineering
6. Finally, candidates will interview with our CEO
7. Successful candidates will subsequently be made an offer via email
Additional details about our process can be found on our hiring page.