Once again, the Codemotion conference took place in Madrid on May 21 and 22. This event is one of Spain’s premier gatherings for developers and tech communities, attracting over 1,500 attendees and more than 100 international speakers.
As Gold sponsors, we proudly sent a team to the event and set up a booth that served as a hub for discussions about Criteo and our innovative work. This was our first time supporting Codemotion, and the interest in our company was tremendous.
Visitors to our booth were initially surprised by the range of technologies we utilize. However, once we explained our Retail Commerce Media platform and the scale at which we operate, they quickly understood the need to maximize performance at every level.

We were inspired by the diverse range of topics covered at Codemotion, from AI and machine learning to front-end development and virtual reality. Their experience at the conference not only enriched our professional knowledge but also reinforced Criteo’s commitment to staying at the forefront of technology and innovation.
Criteos’ takeaways
As part of the Criteo crew at Codemotion, we were delighted to have Paola, a Software Engineer based in Paris, and Alik, an SRE Engineer based in Barcelona, representing our team. Throughout the event, Paola and Alik actively engaged with attendees, took detailed notes, and captured memorable moments through their photographs. They are both eager to share their key takeaways and insights from this dynamic conference with you.
Paola Valdivia
I had the chance to go to Codemotion Madrid, and it was a really engaging event filled with interesting talks and cool presentations, some of which were in Spanish, my native language! The venue, a cinema, gave it a unique vibe with presentations shown on big screens, making the slides even more impactful. There were people from both the local scene and abroad, and the whole place was filled with great energy thanks to different booths offering prizes, although I didn’t win any 😞
AI was a predominant theme throughout the conference. The opening keynote by Martina Ercoly, titled “Unlocking Tomorrow: Innovations in Work Dynamics and AI Integration in Hiring,” highlighted both the potential benefits and the risks of AI in recruitment. Ercoly emphasized the issue of data bias and the danger of automated discrimination, stressing the importance of diverse and inclusive data to prevent perpetuating biases. The closing keynote by Rodger Werkhoven also tackled AI, discussing topics such as latent prompting, wearables, AI robots, and the critical notion that while AI might not replace jobs, those using AI will.


In addition to these insightful discussions on AI, I attended several talks focused on web performance, a subject that greatly interests me. Below, I summarize the key points from these talks, integrating insights and practical advice on how to enhance web performance.
Why web performance?
Web performance is critical not only for enhancing user experience but also for driving business success. Users have limited patience; research indicates that if a webpage takes more than three seconds to load, 53% of users will abandon it. This drop-off translates directly to lost revenue and decreased user satisfaction. Therefore, optimizing web performance is essential.

Measuring web performance (a.k.a. measuring User Experience on the web)
To make informed decisions, it’s crucial to measure web performance accurately. Ines Akrap’s talk “What you need to know about Core Web Vitals”, discussed Core Web Vitals, a set of metrics that Google uses to rank websites based on user experience. Core Web Vitals include metrics like Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS), and Interaction to Next Paint (INP).
- LCP measures loading performance, or how long the user waits to see the largest content element on the page. This is important because a faster LCP improves user satisfaction and reduces bounce rates. It can be improved by using CDNs, optimizing browser caching, avoiding unnecessary redirects, and optimizing images (choosing the right format) and CSS/JS files.
- CLS measures visual stability, or how elements move on the page while loading. A high CLS can frustrate users, as unexpected shifts can cause them to click on the wrong elements or lose their place while reading. To avoid large CLS, ensure all images have defined dimensions, pre-allocate space for ads and iframes, and avoid dynamic content shifts.
- INP recently replaced First Input Delay (FID) as a Core Web Vital. It measures responsiveness, focusing on how quickly a page reacts to user interactions. Poor INP can lead to user frustration as the site feels sluggish and unresponsive. To improve INP, reduce large JS bundles, break down long tasks, and manage third-party scripts efficiently (more information in Measuring INP).
Measuring real user experiences
But how or when to measure these? Carly Richmond, in her talk “Are They Really — Using It? Monitoring Digital Experience to Determine Feature Effectiveness“, highlighted the importance of monitoring real user experiences rather than relying only on synthetic tests like Lighthouse. Real User Monitoring (RUM) captures actual user interactions, providing a more accurate picture of performance. Tools like Elastic RUM Agent and OpenTelemetry can help gather and analyze this data, offering insights into how users interact with your site in real-world conditions (more information in Performing Real User Monitoring (RUM) with Elastic APM).
Current State of JavaScript Performance
As for the current state of JavaScript Performance, Joan Leon pointed out that the state of JavaScript on the web, as detailed in the Web Almanac, shows significant room for improvement. The excessive amount of JavaScript loaded per page, much of which is unused, and the prevalence of long tasks are major performance bottlenecks. In his presentation titled “JavaScript Loading Priorities and Adaptive Loading”, Leon offered practical guidance on improving performance.
Enhancing JavaScript Performance
Some strategies for JavaScript Optimization and practical advice gathered from these amazing talks include:
- Import on Interaction: Use facades to postpone the loading of non-critical resources until the user interacts with them. For instance, instead of loading the video, load an image of the video and the video itself only when the user clicks.
- Yield to the Main Thread: Use
setTimeoutto break up long tasks and allow the main thread to handle user interactions smoothly. - Lazy Loading: Load JavaScript only when needed using
asyncanddeferattributes. - Adaptive Loading: Adjust loading based on user’s device capabilities and network conditions using the Network information API, and the Device Memory API.
- Resource Hints: Use
preload,prefetch,preconnect, and other resource hints to prioritize critical resources (see Preload, Prefetch, and Priorities in Chrome). - Speculation rules: Use speculation rules for prerendering pages based on user behavior to achieve almost instant loading ( See Google I/O 2024 Talk “From fast loading to instant loading”).
Improving web performance requires a comprehensive approach that combines accurate measurement, real user monitoring, and effective optimization strategies. By focusing on Core Web Vitals, leveraging real user data, and implementing best practices for JavaScript and resource loading, we can significantly enhance user experience and drive business success. Remember, performance should always be user-centric and data-driven! Thank you Codemotion for the insightful discussions on improving web performance!
Alik Khilazhev
The Codemotion Conference I attended was a vibrant and insightful event, with a strong focus on artificial intelligence. Both the opening and closing keynotes centered on AI, reflecting the current direction and priorities of the tech community.
The conference was held at the Kinepolis cinema theater, which provided a fantastic venue. The large auditoriums, equipped with comfortable chairs and big screens, made attending the talks an enjoyable experience.
The sponsor hall, where various company booths were set up, buzzed with activity and engagement. Each booth had its own set of interactive activities, creating a dynamic and lively atmosphere. The noise level was often quite high due to the numerous conversations happening simultaneously, requiring raised voices to be heard.
At our booth, it was particularly enjoyable to engage with attendees who were curious about Criteo and our work. It became evident that many people in Spain were not yet familiar with our company, making these interactions both interesting and informative.


Playing Tetris with Cognitive Load by Manuel Pais, coauthor of “Team Topologies”
This talk was a keynote of the conference. Manuel delved into the concept of cognitive load and its impact on team performance and productivity. He used the metaphor of playing Tetris to illustrate how managing cognitive load is crucial for effective team dynamics.
Manuel explained that just as in Tetris, where players must efficiently organize falling blocks to avoid being overwhelmed, teams need to manage their cognitive load to maintain high performance. He discussed strategies for reducing unnecessary complexity and improving workflow within teams. Speaker emphasized the importance of clear boundaries and responsibilities, as well as the need for continuous learning and adaptation.
The talk provided valuable insights into optimizing team structures and processes, making it a must-attend session for anyone interested in enhancing team efficiency and reducing burnout.

TDD — Seriously, Try It” by Nacho Cougil
It covered several key points about the importance and benefits of Test-Driven Development (TDD). Here are the main highlights:
- Introduction to TDD: Nacho began by explaining the principles of Test-Driven Development, emphasizing its role in producing high-quality, reliable code.
- Benefits of TDD: He discussed the numerous advantages of TDD, including improved code design, easier refactoring, and early bug detection.
- TDD Workflow: Nacho outlined the TDD cycle: writing a failing test, writing just enough code to pass the test, and then refactoring the code while keeping the tests green.
- Common Misconceptions: He addressed common misconceptions and challenges associated with TDD, providing insights on how to overcome them.
- Live Coding Demonstration: Nacho conducted a live coding session to demonstrate the TDD process in action, showing practical application and real-time problem-solving.
The talk was an engaging and informative session, encouraging developers to adopt TDD practices for better software development.
From Hero to Zero: A Practical Guide to Destroy Your Employees” by Antonio Cobo
It was a satirical yet insightful session that highlighted the detrimental management practices that can demotivate and ultimately destroy employees. Antonio cleverly used satire to underscore the importance of good leadership by illustrating what not to do. Here are the key techniques he discussed:
- Micromanagement Mayhem: Antonio humorously emphasized how constant micromanagement stifles creativity and autonomy, leading to frustration and disengagement.
- Undermining Authority: He discussed the negative impact of consistently undermining employees’ authority, which erodes trust and confidence.
- Communication Catastrophes: Antonio pointed out how poor communication, whether through lack of clarity or frequent miscommunication, can create confusion and frustration.
- Recognition Avoidance: By avoiding recognition of employees’ hard work and achievements, managers can demoralize their teams and diminish motivation.
- Overloading with Unrealistic Expectations: Antonio highlighted the damage caused by setting unrealistic expectations, which leads to stress and a sense of failure.
- Creating a Toxic Environment: He explained how fostering a toxic work environment through negativity and conflict can quickly erode team morale and productivity.
- Burnout: Finally, Antonio addressed the severe consequences of burnout, which results from prolonged stress and overwork, leading to physical and mental exhaustion.
Antonio’s satirical approach provided a memorable and thought-provoking guide on how not to manage employees, emphasizing the importance of positive and supportive leadership practices.

What an amazing conference!
As we wrap up this article, we want to extend our heartfelt thanks to everyone who visited our booth and engaged with our team. We truly enjoyed every conversation with you all (though some of us, like Kini, lost our voices the next day!). Such a successful outcome was made possible by the fantastic organization of the Codemotion team and the dedicated volunteers who did an outstanding job throughout the event.
¡Muchas gracias!




