One Product - Many Countries. How we scaled STYLIGHT to 10 countries

Post on 26-Jun-2015

1.166 views 0 download

Tags:

Transcript of One Product - Many Countries. How we scaled STYLIGHT to 10 countries

|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 sebastian.schuon@stylight.com

http://www.stylight.com/Engineering/

Slide 32 | STYLIGHT | Proud to bleed purple | @stylight