Software Engineer: CodeQL C++ Compiler
Github (View all Jobs)
Remote - Europe
1. Take-home exercise 2. Code review and technical discussions.
Programming Languages Mentioned
GitHub is the home for software development, where developers collaborate to build some of the world’s most important software. The security of that software is a collective problem, a responsibility that involves producers and consumers of code, open source maintainers, security researchers, and security teams. At GitHub, we want to give the community the tools it needs to secure the software we all depend on.
CodeQL is one such tool: our semantic code analysis engine that lets you query code as though it were data. CodeQL combines the latest research in compiler optimization with insights in database implementation. It understands the complex data structures inherent in code, and makes analysis available to researchers using a declarative, object-oriented query language.
The CodeQL C/C++ team is looking for a compiler engineer to maintain and improve our state-of-the-art tools that extract information from source code and build processes. For code written in C or C++, we instrument the build process to identify and intercept invocations of the compiler. For every such invocation, we invoke our own compiler-like program that parses the file, resolving macros and includes according to what it gleans from the compiler command line. Header files can be included in multiple compilation units, and symbols in a header can resolve differently each time. The performance budget is tight as each compilation unit can expand to megabytes of source text after preprocessor and template expansion. The balance of producing small databases from large preprocessor-expanded source files is a unique and challenging engineering problem.
- Be part of a team of programming language experts working to redefine what’s possible through static analysis and variant analysis.
- Be one of the engineers creating the C/C++ components in our codebase, including C/C++ program analysis and build-system instrumentation tools.
- Ensure that our support for C/C++ language features and tooling is kept up to date with customer usage.
- Keep our build-system instrumentation compatible with the latest operating systems, build systems, and compilers.
- Investigate performance improvements, taking responsibility for design decisions, improving design and maintainability, and adopting a data-driven approach to software improvements.
- Understanding of and experience with compiler construction.
- Fluency in programming directly to operating system interfaces: POSIX or the Windows API.
- Familiarity with the compiler for a major language.
- Experience with modern compiler front-ends (e.g. Edison Design Group, GCC, LLVM)
- In-depth knowledge of the C and C++ languages
We work as a distributed group within a distributed company. The majority of our team members live in Europe and across the US and Canada, and while we do have some offices, all our meetings are location-agnostic and happen online. We operate with a high degree of autonomy and trust, and we have a significant level of influence on the product and technical direction of CodeQL, as well as the broader code intelligence products at GitHub. We value learning, introspection and reflection, and we’re always looking for ways to improve as a team and as individuals, so candor and a culture that values safety to speak up are highly important to us.
GitHub is made up of people from a wide variety of backgrounds and lifestyles. We support and reward spending time on improving diversity, inclusion, and belonging, as well as other important improvement-work outside your core role as a software engineer.
Location: In this role, you can work remotely from the following countries: Austria, Denmark, Germany, Ireland, Netherlands, Spain, Sweden, Switzerland, United Kingdom or onsite in one of GitHub’s European offices (Amsterdam, Oxford).
Who We Are:
GitHub is the developer company. We make it easier for developers to be developers: to work together, to solve challenging problems, and to create the world’s most important technologies. We foster a collaborative community that can come together—as individuals and in teams—to create the future of software and make a difference in the world.
Customer Obsessed - Trust by Default - Ship to Learn - Own the Outcome - Growth Mindset - Global Product, Global Team - Anything is Possible - Practice Kindness
Why You Should Join:
At GitHub, we constantly strive to create an environment that allows our employees (Hubbers) to do the best work of their lives. We've designed one of the coolest workspaces in San Francisco (HQ), where many Hubbers work, snack, and create daily. The rest of our Hubbers work remotely around the globe. Check out an updated list of where we can hire here: https://github.com/about/careers/remote
We are also committed to keeping Hubbers healthy, motivated, focused and creative. We've designed our top-notch benefits program with these goals in mind. In a nutshell, we've built a place where we truly love working, we think you will too.
GitHub is made up of people from a wide variety of backgrounds and lifestyles. We embrace diversity and invite applications from people of all walks of life. We don't discriminate against employees or applicants based on gender identity or expression, sexual orientation, race, religion, age, national origin, citizenship, disability, pregnancy status, veteran status, or any other differences. Also, if you have a disability, please let us know if there's any way we can make the interview process better for you; we're happy to accommodate!
Please note that benefits vary by country. If you have any questions, please don't hesitate to ask your Talent Partner.
Please mention No Whiteboard if you apply!
I'm a one-man team looking to improve tech interviews, and could use any support! 😄