This position is remote based.
At GitLab, developers are independent and self-organized individual contributors who work together as a tight team in a remote and agile way.
The Database Group(https://about.gitlab.com/handbook/engineering/development/enablement/database/) works on developing solutions for scalability, application performance, data growth and developer enablement, especially where it concerns interactions with the database. In support of our Transparency (https://about.gitlab.com/handbook/values/#transparency) value, the Database Group page includes links to the boards listing our current work in flight, team meeting recordings as well as our roadmap. Hopefully this is the type of work that gets you excited about joining the team, if so please read on!
Most backend developers work on all aspects of GitLab, building features, fixing bugs, and generally improving the application. The Database Group is responsible for making application changes to improve database performance, availability and reliability. Additionally, the Backend Engineer, Database (https://about.gitlab.com/job-families/engineering/backend-engineer/#database) will be expected to review database related code with the goal of eventually becoming a Database Maintainer (https://about.gitlab.com/handbook/engineering/development/database/#database-maintainer).
The Work
Our work can be grouped into a couple of main categories: responsive and enablement. Categories that we consider responsive work are areas that require our immediate or near-term attention to help with performance, scaling and SQL expertise. Typically these involve reviewing slow performing queries and providing guidance on how to improve these queries.
Enablement, as the name suggests, is about enabling development efficiencies for our greater development community and improving our scalability story for GitLab.com. We have some lofty goals on what we’d like to achieve in the next year. We cannot do all of the work we have identified by ourselves, so we are creating tools to enable teams to implement scalable solutions. Below is a list of a few of these initiatives:
Automated database migration testing - https://gitlab.com/groups/gitlab-org/database-team/-/epics/6
Database Partitioning - https://gitlab.com/groups/gitlab-org/-/epics/2023
Reduce total size and growth of GitLab.com's PostgreSQL database - https://gitlab.com/groups/gitlab-org/-/epics/4181
Address Primary Key overflow risk for tables with an integer PK - https://gitlab.com/groups/gitlab-org/-/epics/4785
Feature - Automate feedback of database query performance into GitLab (Epic TBD)
Responsibilities
Develop new features in collaboration with our product management, UX, and frontend teams.
Keep changes small and iterate towards the best solution.
Reviewing database related changes submitted by other engineers or community contributors
Documenting database best practices or patterns to avoid
Developing tooling to proactively inform developers of potential performance issues
Research, design and implement solutions to improve product performance
Requirements
Significant professional software engineering experience with PostgreSQL in large production environments
Significant experience with Ruby on Rails or other Ruby frameworks
You can reason about software, algorithms, and performance from a high level
You are passionate about open source.
Strong written communication skills.
Self-motivated and have strong organizational skills.
You share our values, and work in accordance with those values.
Nice-to-haves
Experience in a peak performance organization, preferably a tech startup
Experience with the GitLab product as a user or contributor
Product company experience
Experience working with a remote team
Enterprise software company experience
Developer platform/tool industry experience
Experience working with a global or otherwise multicultural team
Computer science education or equivalent experience
Passionate about/experienced with open source and developer tools