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
Most backend developers work on all aspects of GitLab, building features, fixing bugs, and generally improving the application. The Memory team is responsible for optimizing GitLab application performance by managing the memory resources required. The team is also responsible for changes affecting the responsiveness of the application.
The Memory team
is responsible for optimizing GitLab application performance by managing the memory resources required. The team is also responsible for changes affecting the responsiveness of the application. We will accomplish these goals in two ways. First we will research and resolve reported memory issues to the best of our ability and within our published SLAs. Additionally, will build tooling to proactively inform developers of the static and dynamic memory consumption of their proposed changes.
- Identify, troubleshoot, improve and manage memory-intensive aspects of the GitLab application.
- Explore alternatives outside of the GitLab application for reducing memory consumption through contributions to, e.g., Rails, Ruby, Puma, or other key third-party components.
- Define and help implement best practices for creating efficient and performant code.
- Setting standards that changes are not affecting memory utilization and can be validated.
- Partner with the Quality team to maintain effective performance reporting and monitoring through instrumentation and testing.
An ideal engineer candidate -
- Proficiency in the English language, both written and verbal, sufficient for success in a remote and largely asynchronous work environment
- Demonstrated capacity to clearly and concisely communicate about complex technical, architectural, and/or organizational problems and propose thorough iterative solutions
- Experience with performance and optimization problems and a demonstrated ability to both diagnose and prevent these problems
- Comfort working in a highly agile, intensely iterative software development process
- Demonstrated ability to onboard and integrate with an organization long-term
- Positive and solution-oriented mindset
- Effective communication skills: Regularly achieve consensus with peers, and clear status updates
- An inclination towards communication, inclusion, and visibility
- Experience owning a project from concept to production, including proposal, discussion, and execution.
- Self-motivated and self-managing, with strong organizational skills.
- Demonstrated ability to work closely with other parts of the organization
- Experience of performance tuning and/or architecture, Example.
- Experience of memory leak troubleshooting, Example 1, Example 2.
Alternatively, some of the following qualifications, may not necessarily be all -
- Must be proficient in one or more of the following in preference order
- Similar OOP languages (e.g. Python, C++, Java, C#, etc.).
- AND/OR proficient in one or more of the following
- Proven record of building scalable solutions.
- Top notch understanding of DB principles and optimization mechanisms.
- Familiar with a framework similar to the concepts of Rails (e.g. CakePHP, Ember, Node.js, Angular, J2EE, etc.) - For reference and apply with due diligence.
- High-level principles: has knowledge of existing perf testing tools and test automation with some Ruby.
- Low-level principles: Understands internals, how memory works, garbage collection. Sorting algorithms.
Nice to have
- Tuning up performance from architecture/design perspective.
- Troubleshooting memory leaks (any language).
- Optimizing full stack implementation, e.g. I/O, caching.
- Good knowledge of performance testing.
- Strong problem analysis and solving skills, methodological in problem solving.
- Must be a proven fast-learner and self-starter.
- Share our values, and work in accordance with those values
- Ability to thrive in a fully remote organization
- 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
The compensation calculator for this role can be found here.