What You'll Do:
What's the Platform PRE group?
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 Senior Software Development Engineer in the JVM Performance team at Criteo, you'll play a key role in:
Driving quality standards in writing efficient and reliable Java and Scala code.
Challenge the design of new and existing systems from a performance perspective to reduce the infrastructure cost.
Support Product Engineering and PRE in troubleshooting and performance optimizations of their applications.
Keep JVM ecosystem up to date and suitable for load and scale of Criteo.
What You’ll Do
Engage in and improve the whole lifecycle of services - from inception and design, through to deployment, operation, and refinement.
Support services before they go live through activities such as system design consulting, developing software platforms and frameworks, capacity planning, and launch reviews.
Scale, automate, and evolve systems by pushing for changes that improve reliability, efficiency and performance.
Optimize and maintain services once they are live by measuring and monitoring availability, latency, and overall system health.
Maintain the JVM stack up to date, lead large-scale upgrade initiatives, and drive migrations across hundreds of repositories.
Stack: Linux, Kubernetes, Mesos, .NET Core, C#, Java/Scala/JVM, Python, Prometheus, Grafana, Kibana and more.
Who You Are:
You hold a master's or PhD degree in computer science, a related field, or equivalent practical experience.
You have at least 6 years of experience in software development in one or more programming languages, and data structures or algorithms.
You're at ease with designing, analyzing, and troubleshooting large-scale distributed systems,
You have experience working in computing, distributed systems, storage, or networking.
You are used to debug, optimize code, and to automate routine tasks.
You show a systematic problem-solving approach, coupled with effective verbal and written communication skills.
You are familiar with big data frameworks and distributed processing technologies such as Hadoop and Spark.
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.