Software Development Engineer
Role details
Job location
Tech stack
Job description
The concept of Product Reliability Engineering (PRE) draws inspiration from the principles of SRE. At Criteo, PRE acts as the bridge between Product, Platform Engineering and Infrastructure. The PRE group comprises eight global engineering teams helping R&D design, build, and operate large-scale distributed systems reliably and efficiently. The common objective of the PRE teams is to build the most reliable platform in AdTech.
How You'll Make An Impact
As a Software Development Engineer, you'll work closely with product engineering to dig into our apps, existing pipelines, and jobs to assess where optimization is needed most. You'll tell stories with meaningful monitoring and hopefully never be paged on your on-call rotation because we've worked hard with dev teams to make our platform the most reliable in AdTech.
You'll learn skills from the other team members along the way and have opportunities to teach us as well. It's perfect for an engineer who likes shipping code but also wants to be involved in reliability, code migration, profiling, architecture, troubleshooting & incident prevention. If you have ever dreamt about building large-scale infrastructure that supports billions of requests per day handled by real-time applications that answer within 10ms, you're in the right place!
Analyze memory allocations and GC behavior with dotnet-trace, PerfView, and TraceEvent; dig into memory dumps with WinDbg, dotnet-dump, CLRmd; identify bottlenecks using load testing tools and CPU sampling; fix it and improve it.
What You Will Do
- Debug, troubleshoot, and profile real world .NET applications
- Review design and code for performance
- Help improve applications performance globally
- Build troubleshooting and monitoring tools for .NET applications
- Design and build reliable regression testing framework
- Manage technical migration to the latest runtimes and libraries (ex: .NET 10)
- Lead workshops and training to promote awareness around best practices on profiling and troubleshooting
- Contribute to open-source projects we use every day, like dotnet/runtime, microsoft/perfview, etc.
- Stack: Linux, Windows, Mesos, .NET Core, C#
Requirements
PhD or Master's degree in Software Engineering or related field
- 5+ years of programming experience, shipping code, and unit tests in C#
- A strong knowledge on Microsoft .NET runtimes.
- A passion for understanding the implementation detail of .NET and performing low level analysis on code performance
- Strong commitment to quality designs, automation, and documentation
- Pride in mentoring, collaboration, and taking initiative
- An effective communicator, problem-solver, and a creative technologist
- Flexible with change and excited to learn what's needed to bring projects to completion
Take a look at for access and insight into our engineering culture and achievements.
We understand that you might not meet each of the outlined requirements listed above, or may have experience that is a little different from our specifications. If you think that you can still bring value to the role, we want to hear from you.