AYN

Staff Software Engineer, Security Factory: Static Analysis

GitLab · Canada · Israel · United Kingdom · United States · remote

GitLab is the intelligent orchestration platform for DevSecOps. GitLab enables organizations to increase developer productivity, improve operational efficiency, reduce security and compliance risk, and accelerate digital transformation. More than 50 million registered users and more than 50% of the Fortune 100* trust GitLab to ship better, more secure software faster.

The same principles built into our products are reflected in how our team works: we embrace AI as a core productivity multiplier, with all team members expected to incorporate AI into their daily workflows to drive efficiency, innovation, and impact. GitLab is where careers accelerate, innovation flourishes, and every voice is valued. Our high-performance culture is driven by our values and continuous knowledge exchange, enabling our team members to reach their full potential while collaborating with industry leaders to solve complex problems. Co-create the future with us as we build technology that transforms how the world develops software.

*Fortune 500® is a registered trademark of Fortune Media IP Limited, used under license. Claim based on GitLab data. Fortune 100 refers to the top 20% ranked companies in the 2025 Fortune 500 list, published in June 2025. Fortune and Fortune Media IP Limited are not affiliated with, and do not endorse products or services of GitLab.

An 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 the engine can model and how we measure what it finds are parts of one picture. As a Staff engineer you hold that picture, shape the long-range technical goals of the team, and raise the bar for every engineer on it. We build the engine with AI agents that write and review code from written specifications, under human direction. We expect you to direct that work effectively and with good judgment, and to help the team do the same.

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

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, such as parsing and ASTs, intermediate representations (SSA, control-flow and call graphs), taint and data-flow analysis, type inference, incremental and fixpoint computation, or writing detection rules, with the ability to read, evaluate, and apply the research literature

- Deep application security experience, such as vulnerability research, secure code review, or writing detection rules, and fluency with vulnerability classes (OWASP Top 10, CWE)

- Demonstrated capacity to communicate clearly and concisely about complex technical, architectural, and organizational problems, and to write architecture and design specifications that bring a team to a decision

- A track record of taking ownership of ambiguous, team-wide problems and shipping them from concept to production with minimal guidance, with specific, regular async updates on progress, blockers, risks, and next steps

- Experience defining a system's overarching architecture, delegating component specifications to engineers and AI agents, and getting them implemented reliably

- A track record of mentoring engineers, raising a team's technical bar, and influencing technical direction by achieving consensus with peers and leadership

Helpful experience

- Familiarity with popular web or mobile application frameworks and how they handle input, data, and configuration

- Experience designing guardrails for agent-written code, such as mutation testing, fuzzing, and CI gates the coding agent cannot modify

- A record of engaging with the research community, such as publications, tool papers, or upstream open source contributions in program analysis or security

About the team

The Security Factory: Code Scanning team develops GitLab's SAST capabilities for customer software repositories.

We work closely with the Code Security team on scanning rules & flows, with Composition Analysis on the broader software supply chain, and with other groups across the Sec Section. We rely heavily

Apply on the employer’s site