SlideShare a Scribd company logo
1 of 41
Download to read offline
Large Scale CSS Refactoring at trivago
@pistenprinz
Ironman release picture
Crazy Guy
Talking to you 

right now
Does something
with frontend at
trivago
Loves giving
presentations
U.Bolt
Performance
Unicorn
Christoph Reinartz - @pistenprinz
What is it?

A description
Project Ironman was the technical migration of the
trivago hotel search's existing CSS core to a pattern
library based user interface.*
*) business translation for #refactorAllTheThings
Christoph Reinartz - @pistenprinz
Ironman - the tech context

The big picture
• Establishing a Frontend / Design System
• Reduce technical debt
• Consistency in Code (and Design) over all
applications
• Provide base for modern & sustainable UI rebuild
Christoph Reinartz - @pistenprinz
Ironman & the pattern library

Built without Design Thinking and Atomic Design
Christoph Reinartz - @pistenprinz
Ironman & the pattern library

Built with Design Thinking and Atomic Design
Christoph Reinartz - @pistenprinz
Ironman & Atomic Design

Atomic Design in one gif
http://bradfrost.com/blog/post/atomic-design-in-one-gif/
Christoph Reinartz - @pistenprinz
Ironman & the pattern library

Behind the scenes - the developer playground
Christoph Reinartz - @pistenprinz
Before Ironman

The pain points
• IE7 support
• Layout built on reset.css
• Overly complex CSS/DOM structure
• Desktop first approach
• Inconsistency
Christoph Reinartz - @pistenprinz
Before Ironman

The pain points
Christoph Reinartz - @pistenprinz
Fifty shades of grey

Or how to prove inconsistency
Christoph Reinartz - @pistenprinz
Specificity graph 2012

The specificity wall
Christoph Reinartz - @pistenprinz
Graph before ironman

Way better, but still …
peaks at the beginning
of the stylesheet
Christoph Reinartz - @pistenprinz
Ironman & IE7

Disqualification
Christoph Reinartz - @pistenprinz
Ironman - the scope

The 3 disciplines
• Normalize.css incl. border-box switch*
• Mobile first switch*
• SVG icons instead of image sprites*
*) integrate the new CSS framework base which was developed with the
Pattern Library but retain the existing layout and design
Christoph Reinartz - @pistenprinz
Ironman - the scope

In detail
• Refactor > 50000 lines of Code of SCSS
• Adapt dozens of templates
• Keep IE8 support
• Remove 1200 Icons
• Extensive (Device-)Testing
• In 4 weeks!
Christoph Reinartz - @pistenprinz
Ironman - the challenges

The business
How to tell management that you need 4 weeks of
feature freeze and the User Interface will look exactly
the same afterwards?
Code / Process Audits
How to tell management that you need you need 4 weeks of feature
freeze and the User Interface will exactly look the same afterwards?
Christoph Reinartz - @pistenprinz
Ironman - the challenges

Possible ways to convince the business side
• Argue!
• Be a salesman- Sell it! Prove it! Show benefits!
• Do it in 3 weeks!
• Don’t only think technically!
Christoph Reinartz - @pistenprinz
Ironman - the challenges

The process
• How to integrate such a project into an existing
process?
• How to handle management expectation?
• How to plan and estimate?
Christoph Reinartz - @pistenprinz
Ironman - the challenges

Possible ways to enforce culture
• People over process
• Commitment over estimation
• Agility
• Make progress transparent
• Involve everybody
• Motivate people and let them be awesome
Christoph Reinartz - @pistenprinz
Christoph Reinartz - @pistenprinz
Ironman in numbers

People and processes
• 1 Project Team
• 9 awesome developers, 3 lovely designers
• Infinite supporters
• 3 Meetings
• 17 daily stand-ups
• 67 Post-Its on Kanban board
• 1 Slack-channel
Christoph Reinartz - @pistenprinz
Ironman in numbers

Code and Outcome
• ~800 Commits in 3 weeks
• 11973 LOC added
• 36668 LOC removed
• Reduced SCSS LOC from 52991 to 39755
• Infinite icons replaced with 451 SVGs
• 352 files changed
Code / Process Audits
• 1 Project Team
• 7 awesome developers
• infinite supporters
Christoph Reinartz - @pistenprinz
Showcase 1

Desktop first vs. Mobile first
Christoph Reinartz - @pistenprinz
Showcase 2

Sprite Wars vs. SVG beauty
Christoph Reinartz - @pistenprinz
Showcase 3

HTTP Requests
Christoph Reinartz - @pistenprinz
Showcase 3

HTTP requests
Christoph Reinartz - @pistenprinz
Showcase 3

HTTP requests
Christoph Reinartz - @pistenprinz
Ironman - At a glance

Happy times
• Foundation built to move the UI Development to
the next level
• Better rendering performance on mobile
• Shared knowledge and understanding
throughout, between all developers and the entire
design/product team
Christoph Reinartz - @pistenprinz
Ironman - At a glance

Happy times
• Optimized design-development process through
Atomic Design
• Changed coding guidelines and improved
structure (ITCSS, BEM, OOCSS, …)
Christoph Reinartz - @pistenprinz
Moved to ITCSS

Prepared base for new UI components
Christoph Reinartz - @pistenprinz
Graph before Ironman

Way better, but still …
peaks at the beginning
of the stylesheet
Christoph Reinartz - @pistenprinz
Graph after Ironman

Improved curve
New CSS
base
Adapted old UI components.
Can now be easily rebuilt!
SVG
Christoph Reinartz - @pistenprinz
Ready for the next steps

Automate the pattern integration
Christoph Reinartz - @pistenprinz
Thanks

I’m done
Christoph Reinartz
Team Lead UI/UX Engineering
@pistenprinz

More Related Content

Viewers also liked

Was nicht passt wird responsive gemacht - Extended Edition
Was nicht passt wird responsive gemacht - Extended EditionWas nicht passt wird responsive gemacht - Extended Edition
Was nicht passt wird responsive gemacht - Extended EditionChristoph Reinartz
 
Trivago - NOAH12 London
Trivago - NOAH12 LondonTrivago - NOAH12 London
Trivago - NOAH12 LondonNOAH Advisors
 
Trivago - NOAH12 San Francisco
Trivago - NOAH12 San FranciscoTrivago - NOAH12 San Francisco
Trivago - NOAH12 San FranciscoNOAH Advisors
 
29112014 rhino kruger national park
29112014 rhino kruger national park29112014 rhino kruger national park
29112014 rhino kruger national parkJati D
 
La importancia del ejercicio fisico regular
La importancia del ejercicio fisico regularLa importancia del ejercicio fisico regular
La importancia del ejercicio fisico regularzeukz
 
14 san valentin (1)
14 san valentin (1)14 san valentin (1)
14 san valentin (1)Aurora Lopez
 
Cuidados en enfermería
Cuidados en enfermeríaCuidados en enfermería
Cuidados en enfermeríaZuli Campaña
 

Viewers also liked (7)

Was nicht passt wird responsive gemacht - Extended Edition
Was nicht passt wird responsive gemacht - Extended EditionWas nicht passt wird responsive gemacht - Extended Edition
Was nicht passt wird responsive gemacht - Extended Edition
 
Trivago - NOAH12 London
Trivago - NOAH12 LondonTrivago - NOAH12 London
Trivago - NOAH12 London
 
Trivago - NOAH12 San Francisco
Trivago - NOAH12 San FranciscoTrivago - NOAH12 San Francisco
Trivago - NOAH12 San Francisco
 
29112014 rhino kruger national park
29112014 rhino kruger national park29112014 rhino kruger national park
29112014 rhino kruger national park
 
La importancia del ejercicio fisico regular
La importancia del ejercicio fisico regularLa importancia del ejercicio fisico regular
La importancia del ejercicio fisico regular
 
14 san valentin (1)
14 san valentin (1)14 san valentin (1)
14 san valentin (1)
 
Cuidados en enfermería
Cuidados en enfermeríaCuidados en enfermería
Cuidados en enfermería
 

Similar to Project Ironman - Large Scale CSS Refactoring @trivago

Large Scale Refactoring at Trivago - Christoph Reinartz - Codemotion Amsterda...
Large Scale Refactoring at Trivago - Christoph Reinartz - Codemotion Amsterda...Large Scale Refactoring at Trivago - Christoph Reinartz - Codemotion Amsterda...
Large Scale Refactoring at Trivago - Christoph Reinartz - Codemotion Amsterda...Codemotion
 
Ensuring Successful Office 365 Tenant to Tenant Migration SPS Cambridge 2017...
Ensuring Successful Office 365 Tenant to Tenant Migration  SPS Cambridge 2017...Ensuring Successful Office 365 Tenant to Tenant Migration  SPS Cambridge 2017...
Ensuring Successful Office 365 Tenant to Tenant Migration SPS Cambridge 2017...Chirag Patel
 
SPFx- A modern development model for SharePoint
SPFx- A modern development model  for SharePointSPFx- A modern development model  for SharePoint
SPFx- A modern development model for SharePointKirti Prajapati
 
Enhancing SharePoint with Responsive Web Design
Enhancing SharePoint with Responsive Web DesignEnhancing SharePoint with Responsive Web Design
Enhancing SharePoint with Responsive Web DesignEric Overfield
 
PLAT-20 Building Alfresco Prototypes in a Few Hours
PLAT-20 Building Alfresco Prototypes in a Few HoursPLAT-20 Building Alfresco Prototypes in a Few Hours
PLAT-20 Building Alfresco Prototypes in a Few HoursAlfresco Software
 
Scaling Your Architecture for the Long Term
Scaling Your Architecture for the Long TermScaling Your Architecture for the Long Term
Scaling Your Architecture for the Long TermRandy Shoup
 
Practical Scanning Uses for Construction Applications by Tim Schubert
Practical Scanning Uses for Construction Applications by Tim SchubertPractical Scanning Uses for Construction Applications by Tim Schubert
Practical Scanning Uses for Construction Applications by Tim SchubertMelissa Tiffany
 
SEF 2014 - Responsive Design in SharePoint 2013
SEF 2014 - Responsive Design in SharePoint 2013SEF 2014 - Responsive Design in SharePoint 2013
SEF 2014 - Responsive Design in SharePoint 2013Marc D Anderson
 
Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?C4Media
 
What's Agile ? Introduction to Agile methods
What's Agile ? Introduction to Agile methodsWhat's Agile ? Introduction to Agile methods
What's Agile ? Introduction to Agile methodsBruno Sbille
 
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizingAWSKRUG - AWS한국사용자모임
 
Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessChristian Posta
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshJudy Breedlove
 
Web based interactive big data visualization
Web based interactive big data visualizationWeb based interactive big data visualization
Web based interactive big data visualizationWenli Zhang
 
Le big data à l'épreuve des projets d'entreprise
Le big data à l'épreuve des projets d'entrepriseLe big data à l'épreuve des projets d'entreprise
Le big data à l'épreuve des projets d'entrepriseRubedo, a WebTales solution
 
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open Source
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open SourceDesenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open Source
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open SourceRodrigo Kono
 
Cross Platform Angular 2 and TypeScript Development
Cross Platform Angular 2 and TypeScript DevelopmentCross Platform Angular 2 and TypeScript Development
Cross Platform Angular 2 and TypeScript DevelopmentJeremy Likness
 

Similar to Project Ironman - Large Scale CSS Refactoring @trivago (20)

Large Scale Refactoring at Trivago - Christoph Reinartz - Codemotion Amsterda...
Large Scale Refactoring at Trivago - Christoph Reinartz - Codemotion Amsterda...Large Scale Refactoring at Trivago - Christoph Reinartz - Codemotion Amsterda...
Large Scale Refactoring at Trivago - Christoph Reinartz - Codemotion Amsterda...
 
Microservices
MicroservicesMicroservices
Microservices
 
Ensuring Successful Office 365 Tenant to Tenant Migration SPS Cambridge 2017...
Ensuring Successful Office 365 Tenant to Tenant Migration  SPS Cambridge 2017...Ensuring Successful Office 365 Tenant to Tenant Migration  SPS Cambridge 2017...
Ensuring Successful Office 365 Tenant to Tenant Migration SPS Cambridge 2017...
 
SPFx- A modern development model for SharePoint
SPFx- A modern development model  for SharePointSPFx- A modern development model  for SharePoint
SPFx- A modern development model for SharePoint
 
CV - Abhijit
CV - AbhijitCV - Abhijit
CV - Abhijit
 
Enhancing SharePoint with Responsive Web Design
Enhancing SharePoint with Responsive Web DesignEnhancing SharePoint with Responsive Web Design
Enhancing SharePoint with Responsive Web Design
 
PLAT-20 Building Alfresco Prototypes in a Few Hours
PLAT-20 Building Alfresco Prototypes in a Few HoursPLAT-20 Building Alfresco Prototypes in a Few Hours
PLAT-20 Building Alfresco Prototypes in a Few Hours
 
Scaling Your Architecture for the Long Term
Scaling Your Architecture for the Long TermScaling Your Architecture for the Long Term
Scaling Your Architecture for the Long Term
 
Practical Scanning Uses for Construction Applications by Tim Schubert
Practical Scanning Uses for Construction Applications by Tim SchubertPractical Scanning Uses for Construction Applications by Tim Schubert
Practical Scanning Uses for Construction Applications by Tim Schubert
 
SEF 2014 - Responsive Design in SharePoint 2013
SEF 2014 - Responsive Design in SharePoint 2013SEF 2014 - Responsive Design in SharePoint 2013
SEF 2014 - Responsive Design in SharePoint 2013
 
Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?
 
What's Agile ? Introduction to Agile methods
What's Agile ? Introduction to Agile methodsWhat's Agile ? Introduction to Agile methods
What's Agile ? Introduction to Agile methods
 
Con3036 soaring-through-the-clouds-oow2016-160920214845
Con3036 soaring-through-the-clouds-oow2016-160920214845Con3036 soaring-through-the-clouds-oow2016-160920214845
Con3036 soaring-through-the-clouds-oow2016-160920214845
 
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing
 
Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverless
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
 
Web based interactive big data visualization
Web based interactive big data visualizationWeb based interactive big data visualization
Web based interactive big data visualization
 
Le big data à l'épreuve des projets d'entreprise
Le big data à l'épreuve des projets d'entrepriseLe big data à l'épreuve des projets d'entreprise
Le big data à l'épreuve des projets d'entreprise
 
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open Source
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open SourceDesenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open Source
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open Source
 
Cross Platform Angular 2 and TypeScript Development
Cross Platform Angular 2 and TypeScript DevelopmentCross Platform Angular 2 and TypeScript Development
Cross Platform Angular 2 and TypeScript Development
 

Recently uploaded

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 

Recently uploaded (20)

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 

Project Ironman - Large Scale CSS Refactoring @trivago

  • 1. Large Scale CSS Refactoring at trivago @pistenprinz
  • 2. Ironman release picture Crazy Guy Talking to you 
 right now Does something with frontend at trivago Loves giving presentations U.Bolt Performance Unicorn
  • 3. Christoph Reinartz - @pistenprinz What is it?
 A description Project Ironman was the technical migration of the trivago hotel search's existing CSS core to a pattern library based user interface.* *) business translation for #refactorAllTheThings
  • 4. Christoph Reinartz - @pistenprinz Ironman - the tech context
 The big picture • Establishing a Frontend / Design System • Reduce technical debt • Consistency in Code (and Design) over all applications • Provide base for modern & sustainable UI rebuild
  • 5. Christoph Reinartz - @pistenprinz Ironman & the pattern library
 Built without Design Thinking and Atomic Design
  • 6. Christoph Reinartz - @pistenprinz Ironman & the pattern library
 Built with Design Thinking and Atomic Design
  • 7. Christoph Reinartz - @pistenprinz Ironman & Atomic Design
 Atomic Design in one gif http://bradfrost.com/blog/post/atomic-design-in-one-gif/
  • 8. Christoph Reinartz - @pistenprinz Ironman & the pattern library
 Behind the scenes - the developer playground
  • 9. Christoph Reinartz - @pistenprinz Before Ironman
 The pain points • IE7 support • Layout built on reset.css • Overly complex CSS/DOM structure • Desktop first approach • Inconsistency
  • 10. Christoph Reinartz - @pistenprinz Before Ironman
 The pain points
  • 11. Christoph Reinartz - @pistenprinz Fifty shades of grey
 Or how to prove inconsistency
  • 12. Christoph Reinartz - @pistenprinz Specificity graph 2012
 The specificity wall
  • 13. Christoph Reinartz - @pistenprinz Graph before ironman
 Way better, but still … peaks at the beginning of the stylesheet
  • 14. Christoph Reinartz - @pistenprinz Ironman & IE7
 Disqualification
  • 15. Christoph Reinartz - @pistenprinz Ironman - the scope
 The 3 disciplines • Normalize.css incl. border-box switch* • Mobile first switch* • SVG icons instead of image sprites* *) integrate the new CSS framework base which was developed with the Pattern Library but retain the existing layout and design
  • 16. Christoph Reinartz - @pistenprinz Ironman - the scope
 In detail • Refactor > 50000 lines of Code of SCSS • Adapt dozens of templates • Keep IE8 support • Remove 1200 Icons • Extensive (Device-)Testing • In 4 weeks!
  • 17. Christoph Reinartz - @pistenprinz Ironman - the challenges
 The business How to tell management that you need 4 weeks of feature freeze and the User Interface will look exactly the same afterwards?
  • 18. Code / Process Audits How to tell management that you need you need 4 weeks of feature freeze and the User Interface will exactly look the same afterwards?
  • 19. Christoph Reinartz - @pistenprinz Ironman - the challenges
 Possible ways to convince the business side • Argue! • Be a salesman- Sell it! Prove it! Show benefits! • Do it in 3 weeks! • Don’t only think technically!
  • 20. Christoph Reinartz - @pistenprinz Ironman - the challenges
 The process • How to integrate such a project into an existing process? • How to handle management expectation? • How to plan and estimate?
  • 21. Christoph Reinartz - @pistenprinz Ironman - the challenges
 Possible ways to enforce culture • People over process • Commitment over estimation • Agility • Make progress transparent • Involve everybody • Motivate people and let them be awesome
  • 22. Christoph Reinartz - @pistenprinz
  • 23. Christoph Reinartz - @pistenprinz Ironman in numbers
 People and processes • 1 Project Team • 9 awesome developers, 3 lovely designers • Infinite supporters • 3 Meetings • 17 daily stand-ups • 67 Post-Its on Kanban board • 1 Slack-channel
  • 24. Christoph Reinartz - @pistenprinz Ironman in numbers
 Code and Outcome • ~800 Commits in 3 weeks • 11973 LOC added • 36668 LOC removed • Reduced SCSS LOC from 52991 to 39755 • Infinite icons replaced with 451 SVGs • 352 files changed
  • 25. Code / Process Audits • 1 Project Team • 7 awesome developers • infinite supporters
  • 26. Christoph Reinartz - @pistenprinz Showcase 1
 Desktop first vs. Mobile first
  • 27.
  • 28.
  • 29. Christoph Reinartz - @pistenprinz Showcase 2
 Sprite Wars vs. SVG beauty
  • 30.
  • 31.
  • 32. Christoph Reinartz - @pistenprinz Showcase 3
 HTTP Requests
  • 33. Christoph Reinartz - @pistenprinz Showcase 3
 HTTP requests
  • 34. Christoph Reinartz - @pistenprinz Showcase 3
 HTTP requests
  • 35. Christoph Reinartz - @pistenprinz Ironman - At a glance
 Happy times • Foundation built to move the UI Development to the next level • Better rendering performance on mobile • Shared knowledge and understanding throughout, between all developers and the entire design/product team
  • 36. Christoph Reinartz - @pistenprinz Ironman - At a glance
 Happy times • Optimized design-development process through Atomic Design • Changed coding guidelines and improved structure (ITCSS, BEM, OOCSS, …)
  • 37. Christoph Reinartz - @pistenprinz Moved to ITCSS
 Prepared base for new UI components
  • 38. Christoph Reinartz - @pistenprinz Graph before Ironman
 Way better, but still … peaks at the beginning of the stylesheet
  • 39. Christoph Reinartz - @pistenprinz Graph after Ironman
 Improved curve New CSS base Adapted old UI components. Can now be easily rebuilt! SVG
  • 40. Christoph Reinartz - @pistenprinz Ready for the next steps
 Automate the pattern integration
  • 41. Christoph Reinartz - @pistenprinz Thanks
 I’m done Christoph Reinartz Team Lead UI/UX Engineering @pistenprinz