Skip to main content
a woman wearing a helmet
From the inside

A Day in the Life of a Tech Lead at Criteo

Posted by Jessica Cao |

Hi! I'm Jessica. I'm an engineer and the tech lead for the Shared Components team. After working in North America for my entire career, I took 18 months off to build out a camper van with my husband for an extended rock-climbing road trip. After our sabbatical, I was looking for an opportunity with exciting technical challenges and a vibrant work culture. Criteo seemed like the perfect match. I moved to Paris when I joined Criteo in October 2019. So far it has been an interesting and rewarding experience.


The Shared Components team is responsible for building and growing the Criteo Design System, from CSS themes and helper classes to reusable components and templates. We provide the tools necessary for external-facing teams to present a consistent and user-friendly interface across Criteo products.

Let me walk you through what a typical day might look like for me.

9:00 I start my work day with a routine check: are all of our builds healthy? Are there any questions or bug reports on our feedback Slack channel? Do I have any outstanding emails?

Someone reported a pain point on our demo site: the site search doesn't match queries if the words are entered in the wrong order. After a quick discussion we agree that the user experience could be improved if we allow queries to be entered in any order. It is not an urgent bug though as the search feature still works well for the most common use cases.

Afterwards, I jump into coding. One of our current objectives is to adapt our site to all platforms. I've been working on adding a responsive component preview to our demo site so designers and developers can check how components render in various screen resolutions and build more respo

nsive UI. I use Angular’s DragDropModule to create a resizable container to hold the components. I like that the Angular Component Development Kit provides many flexible built-in features, so we don't have to reinvent the wheel.

10:15 I take a break for our team's daily (virtual) standup.

11:50 I message Yves, a designer on my team, to set up a QA session later today.

12:00 Time for lunch! My husband and I are both working from home (actually both working for Criteo!), so we take a break together to cook a quick Japanese curry loaded with veggies.

Japanese curry

I put in extra effort for a good presentation before snapping a photo of our lunch to share in #menudujour, one of my favorite Slack channels at Criteo. What was once used by our work canteen to post lunch menus has now morphed into a community around our homemade meals. While I miss eating lunch with coworkers (a sacred time in France - I've never seen anyone eat their lunch at their desk, like people sometimes do in North America), this is a fun way for us to connect even while apart.

After eating, I spend some time on an online French language course. While English is the business language at Criteo (we pride ourselves in being a global and diverse company) and one could get by without any French, Criteo provides 30 hours of French lessons as part of our relocation package for international hires. This has been crucial for me to adapt to and fully enjoy my new country.

13:30 back to work. I've completed most of the functionality of the responsive component preview. I just need to polish the UI up to spec, and clean up my code for review.

15:30 time for QA! I set up a secure tunnel so Yves can access my local server and test out the feature. After playing around with it, he finds a few things I need to tweak. For example, I forgot to set a limit to prevent the user from resizing the preview container past a reasonable minimum. Oops.

We finish the QA. While we have each other on Zoom, Yves shows me some work-in-progress mockups and I review their technical feasibility. I always appreciate having ongoing visibility in his work, as it gives me the chance to raise any concerns early on, and makes the eventual handoff process a lot smoother when he's ready for me to implement the specs. Now we discuss how we might incorporate it in the Design System: instead of trying to encapsulate all the complex business logic into a new component, we would just create helper CSS classes and provide sample code for developers to use. This allows us to balance the dual needs for consistent UI and flexible development.

This process still feels slightly awkward over Zoom. When we were all in the office, he would have just called me over to his desk and showed me his screen. Adapting the way we work as a team can be tricky when everyone is physically distant, but we continuously try to improve and make it work with regular video calls and check-ins.

17:30 I finish tweaking the responsive preview and put my change up for review. I draft up an announcement to post on our Slack channel after my change gets merged.

Now that we can easily see which components are optimized for all resolutions and which are not, the next step is to audit our templates and layouts, and how they all come together.

It's a little late in the day and I don't want to start on anything big, so the bug report from this morning is perfect. There turns out to be a super simple solution using RegExp. After some tweaking and testing, the code is much cleaner than before and works like a charm. The commit was only a 4-line change but will make a big difference in user experience. It doesn't always work out this way, but I love it when I get to end the day with a UX win.

18:30pm I check messages one last time, then I review my day and plan what I want to do tomorrow. I like to write it out ahead of time, so in the morning I'm ready to hit the ground running.

I hope this gives you a little insight to what it's like working at Criteo. For more updates and information, follow us on LinkedIn!

Jessica Cao

Staff Software Development Engineer

The Future is Yours.

Search jobs