one product - many countries. how we scaled stylight to 10 countries
TRANSCRIPT
|Slide 1 | STYLIGHT | Proud to bleed purple | @stylight
ONE PRODUCT – MANY COUNTRIESHow we scaled STYLIGHT to 10 countries
Slide 2 | STYLIGHT | Proud to bleed purple | @stylight
WHAT IS STYLIGHT ABOUT?The best way to shop fashion
Slide 3 | STYLIGHT | Proud to bleed purple | @stylight
WHAT IS STYLIGHT ABOUT?Internationalization
Slide 4 | STYLIGHT | Proud to bleed purple | @stylight
WHAT IS STYLIGHT ABOUT?Some Stats
• 100 employee• 10 countries (three more planed for this year)• 5 years old• Headquarted in Munich
Slide 5 | STYLIGHT | Proud to bleed purple | @stylight
WHAT IS STYLIGHT ABOUT?How do we earn money
OrganicSocial Media
PerformanceMarketing
cpc
Slide 6 | STYLIGHT | Proud to bleed purple | @stylight
INTERNATIONALIZATION
Slide 7 | STYLIGHT | Proud to bleed purple | @stylight
INTERNATIONALIZATIONIsn’t a website global by default?
• eCommerce is a local business• Trends vary by country• Each country has their own preferences with payment and logistics
• We target the main stream• The website needs to be in the local language – to foster trust• A English-only website isn’t an option
Slide 8 | STYLIGHT | Proud to bleed purple | @stylight
INTERNATIONALIZATIONOur approach
Fundamental approach:The very same codebase for all countries, but we localize content• Language• Products and ranking• Editorial content
Why?• Scales• We can roll out features quickly to all countries• Easy to maintain for engineering• Little extra infrastructure needed when adding a new country
Slide 9 | STYLIGHT | Proud to bleed purple | @stylight
INTERNATIONALIZATIONAtomic Unit “site”
Triple of• Language• Country• Domain
Advantages• Adaptable per country, even though
it might be the same language(Moin / Servus / Grützi)
• Supports multi-lingual countries(fr.stylight.ch)
• SEO: improved targeting and risk diversion
Slide 10 | STYLIGHT | Proud to bleed purple | @stylight
INTERNATIONALIZATIONThe company needs to internationalized as well
• With a single code base, country managers wouldn’t be able to request their-country-only features=> we do not have country managers
• Functional organization• Per functional team, there’s someone in charge of each site• Ideal exchange of know-how within the team• Teams have to sit together
Slide 11 | STYLIGHT | Proud to bleed purple | @stylight
INTERNATIONALIZATIONThe company needs to internationalized as well
• All employees shall be in a single office• Natives of each country are essential to build a local product
=> We relocate everyone to Munich, one awesome shared office
• Email and VoIP emulate local presences• Single location simplifies creating and maintaining a good company culture• Works well for most countries, most issues around visa regulations
But there are limits to it• Some countries require a local presence – be it for networking or being it hard to
get people to relocate• Legal entity required to conduct business in some countries
Slide 12 | STYLIGHT | Proud to bleed purple | @stylight
INTERNATIONALIZATIONWhich country to go to?
• GDP is a good proxy within Europe• Market entry with existing partners
• Shops• Advertising partners• Payment providers
• Source tax regulations• Google’s AdWords team has good insights when evaluating other countries
Slide 13 | STYLIGHT | Proud to bleed purple | @stylight
DEVELOPMENT PROCESS
Slide 14 | STYLIGHT | Proud to bleed purple | @stylight
DEVELOPMENT PROCESSHow do we structure the engineering department
• 18 engineers / designers / DevOps• 6 nationalities, all based in Munich• SCRUM, 3 teams
• Website• Mobile• Internal Tools
• Website and mobile share the same product owner to keep the products in sync• We’re data driven – each feature has to prevail in an A/B test
Slide 15 | STYLIGHT | Proud to bleed purple | @stylight
DEVELOPMENT PROCESSOne country is in the lead
Code the feature
A/B test in DE
Localization
Global roll-out
Slide 16 | STYLIGHT | Proud to bleed purple | @stylight
LOCALIZATION
Slide 17 | STYLIGHT | Proud to bleed purple | @stylight
LOCALIZATIONWe adapt to each country
• Define the tune for each country (i.e. what “to heart” means)• During development, create all content in English• Translate using a web-based tool (as of now Weblate)
• It’s not that easy to judge the quality of a translation, if you don’t speak that particular language
• Translators rarely know where the translated string is located on the website• Build process checks that all translations are in place• Date and currency formatting can easily be handled via libraries
(more technical details in tomorrow’s talk)
Slide 18 | STYLIGHT | Proud to bleed purple | @stylight
LOCALIZATIONHow do we maintain efficiency?
Engineering perspective• Once central location where we maintain the list of available sites• Aim at configs relying on this central location• Fall back solution: generator scripts
• During database design – think of places where the site reference could make sense later
• Don’t do hacks. Seriously. It will hurt you at some point• Don’t put text in pictures• Chose one currency for evaluating A/B tests across countries• Add Google translate to all text fields with the internal tools
Slide 19 | STYLIGHT | Proud to bleed purple | @stylight
LOCALIZATIONHow do we maintain efficiency?
Content perspective• „One Country First“ – each campaign is being tested in one country first• If successful, the content is centrally produced• Countries can pull the content and then translate it
Þ Ensures quality, avoids irrelevant content for countries
Products perspective• Match products across countries• Store as much as possible information globally, as little as necessary local.
Example: product category vs. product price
Slide 20 | STYLIGHT | Proud to bleed purple | @stylight
LAUNCH
Slide 21 | STYLIGHT | Proud to bleed purple | @stylight
LAUNCH2-3 months until go-live
• 5 phases until go-live• All parts of the company are somehow involved
• I.e. domain registry, tune of the language, launch event• We use asana as our task manager
• We copy the process template to launch new countries• A single person is in charge, maintains the process
• Stand-Up meetings before we move on to each new phase, examine the task list• Do we have any blockers?• Can we proceed to the next phase?• Did we encounter any special cases for this country?
Slide 22 | STYLIGHT | Proud to bleed purple | @stylight
LAUNCHPhase 0 - Preperations
• Hire natives• Register domain• Apply for ssl certificate (EV certificates might take a while)• Research the legal situation
• Is our technology compliant for a given country• Can local companies to business with our German entity
Slide 23 | STYLIGHT | Proud to bleed purple | @stylight
LAUNCHPhase I – Enabling
• Translate the category tree• Translate the brand book / fix tune• Acquire first partner shop
Slide 24 | STYLIGHT | Proud to bleed purple | @stylight
LAUNCHPhase II - Engineering
• Distribute configuration files• Pixel• Analytics• SSL certificates
• Generate site specific setups• Install solr cores• Generate default URLs• Setup domain on loadbalancers
• Content• Duplicate CMS templates• Create language property files
• Enable domain in local DNS servers (enables local testing)
Slide 25 | STYLIGHT | Proud to bleed purple | @stylight
LAUNCHPhase III - Content
• Prepare marketing material• SEO: titles & descriptions• SEM: templates, keywords• Display: banner
• Translation• Translate CMS content (About us, Magazin)• Translate language files for the website / mobile apps
• Have first partner shops integrated
Slide 26 | STYLIGHT | Proud to bleed purple | @stylight
LAUNCHPhase IV – Go-Live
• 404-Check with a crawler• Switch DNS• Launch-Event
Slide 27 | STYLIGHT | Proud to bleed purple | @stylight
LAUNCHLessons learned
• Internally have your DNS already point to your setup – enable internal testing• Launch with a count-down is hard• Start translating early and proceed with iterations. • For engineering: add multiple countries in parallel
Slide 28 | STYLIGHT | Proud to bleed purple | @stylight
STUPID MISTAKES WE MADE
Slide 29 | STYLIGHT | Proud to bleed purple | @stylight
STUPID MISTAKES WE MADEAnd you can hopefully avoid
• It’s not enough to have someone that speaks a certain language – he needs to be a native from that country• Sales period in France• When do kids in Netherlands do get their presents?
• You need to watch out when summing fields in the DB and currencies are involved
• Do not handle upper / lower case in the language file if you have design issues in mind
• Some languages are very different from your own• 1 product, 100 products is only the start… some languages are way more
complicated here• Word order „Nike Schuhe“ vs. „chaussures de Nike“• There are special chars you ain’t have seen yet (i.e. in SEO)
Slide 30 | STYLIGHT | Proud to bleed purple | @stylight
STUPID MISTAKES WE MADEAnd you can hopefully avoid
• Make use of libraries for localization where ever possible• Check if your font supports all languages, i.e. Cyrillic• Be aware to what time zone you configure your tools and if they match• Seasons: if you have snow in the northern hemisphere, it might not be the same
in Australia…
Slide 31 | STYLIGHT | Proud to bleed purple | @stylight
THANKS FOR YOUR ATTENTION!
We‘re hiring!
Sebastian Schuon Co-Founder & CTO [email protected]
http://www.stylight.com/Engineering/
Slide 32 | STYLIGHT | Proud to bleed purple | @stylight