- Location
- Location not stated
- Compensation
- Not stated in this snapshot
- Employment
- Not stated
- Experience level
- STAFF (10+ years exp)
- Specialization
- Software Engineer, Greenhouse
- Source
- Greenhouse
Overview of this role
As a Staff Backend Engineer on GitLab's Security Factory: Code Scanning team, you help developers find and fix security issues. Those issues live in the code they write, and you set the technical direction for the static analysis engine that finds them.
Your work spans two complementary parts of a complete security analysis. On the engine side, you shape how the static analysis toolkit models a program: parsing source into intermediate representations, resolving symbols, building call graphs, and tracking tainted data across files and languages. You define the architecture and specifications the team builds against, and you delegate component specifications within them to engineers and to the AI agents that implement them. On the evaluation side, you build and apply tooling that tests, measures, and validates what the engine finds against benchmark applications with known vulnerabilities.
What you do
- Act as the directly responsible individual (DRI) for the team's highest-scope initiatives from design through delivery, shipping large features with minimal guidance and shaping the long-range goals of the team.
- Bring systems built by one engineer to team ownership through documentation, tests, and shared review.
- Set the technical direction for the AI-assisted tooling that implements, reviews, and validates engine changes and findings, design the checks that decide whether an agent-written change or generated result is fit to merge, and measure detection quality against benchmark applications with known vulnerabilities, raising the bar for what counts as a trustworthy result. That includes static application security testing (SAST) rules mapped to CWE and OWASP, and the test fixtures that prove they work.
- Own the architecture of the program model (parsing, symbol resolution, intermediate representations, call graphs, and taint and data-flow analysis) and of the pipeline that turns source code into findings, and define how both extend to new languages and frameworks.
- Solve technical problems of the highest scope and complexity, actively seek out difficult impediments affecting the whole team, and advocate for improvements to quality, security, and performance with Product Management, UX, and partner teams such as Code Security and Composition Analysis.
- Mentor all engineers on the team through code review and pairing, remove blockers to their autonomy, and shepherd the definition and improvement of our internal standards through review.
- Participate in on-call rotations to assist troubleshooting product operations, security operations, and urgent engineering issues.
- Define the overarching architecture and specification documents for the engine, delegate component specifications within them, and drive their implementation by AI agents and engineers working independently through phased plans, small reviewable units of change, and specifications kept in lockstep with the code.
- Build and maintain the harness, agent instructions, and agentic skills that keep agent-written code trustworthy, including separate coding and reviewing agents, rules and tests the coding agents cannot change, independent review panels of agents from different model providers, and performance, API, and dependency gates, with risky changes escalated to human review.
- Stay current with research in program analysis and security, run AI-assisted research and spikes, and turn the findings into prototypes, proposals, and upstream contributions, including responsible disclosure of findings in open source projects.
- Take part in on-call or operational support where your team’s ownership model requires it.
What you bring
- Experience building your own LLM tooling, such as a harness, an agent pipeline, or evaluations, with the judgment to know when output is trustworthy and when it isn't.
- Extensive professional experience writing, testing, and reviewing production code in Rust, Go, or a comparable systems language, with depth in at least one. The engine is Rust, the analyzer wrapper is Go, and the monolith integration is Ruby, and we value willingness to work across them.
- Experience with performance optimization and with containerized workflows and CI/CD (we use Docker heavily).
- A deep program analysis and static analysis background, including experience with parsing source code, resolving symbols, building call graphs, and tracking tainted data across files and languages.
- Strong problem-solving and technical skills, with a focus on software engineering and security.
- Experience with AI-assisted analysis and tooling development.
How GitLab supports full-time employees
- Flexible Paid Time Off
- Team Member Resource Groups
- Equity Compensation & Employee Stock Purchase Plan
- Growth and Development Fund
- Parental Leave
Application
- First Name
- Last Name
- Preferred First Name
- Phone
- Country
- Phone
- Resume/CV
- Cover Letter
- LinkedIn Profile
- What is your current country of residence?
- Are you subject to any employment agreements and/or post-employment restrictions with your current employer or a past employer?
- Have you previously worked at or consulted for GitLab?
- Voluntary Self-Identification
- GitLab username
- Will you now or in the future require sponsorship for a visa to remain in your current location?
- Have you previously worked at or consulted for GitLab?
- Submit application