building a technical culture @ grammarly

45
Technical Culture

Upload: aleksey-yashchenko

Post on 15-Jan-2017

734 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Building a Technical Culture @ Grammarly

Technical Culture

Page 2: Building a Technical Culture @ Grammarly

Who am I?Aleksey Yashchenko

Software Engineer &Engineering Manager at Grammarly

@tuxslayer

Page 3: Building a Technical Culture @ Grammarly

The CompanyUkrainian bootstrapped startup

60 engineers

Offices in Kyiv and San-Francisco

Page 4: Building a Technical Culture @ Grammarly

The ProductGrammar

Spell

Style

Plagiarism

… checker

Page 5: Building a Technical Culture @ Grammarly

5M weekly active users on Chrome and growing

10M+ WebSocket connections/day

Services in Java, Lisp, Scala and Python

6 UI applications in JS, TypeScript and F#

The Product

Page 6: Building a Technical Culture @ Grammarly

Our Apps: UI3 Browser Plugins: Chrome, Safari, FF

Web App

M$ Office Add-in

Desktop Editor

Funnels at www.grammarly.com

Page 7: Building a Technical Culture @ Grammarly
Page 8: Building a Technical Culture @ Grammarly

Our Growthrapid user base growth: 5M in 1.5 years

new products

60 engineers

Page 9: Building a Technical Culture @ Grammarly

We can only allow ourselves intensive growth

Page 10: Building a Technical Culture @ Grammarly

Any tech culture won’t do the thingTech Culture

Tech ExcellenceJust excellence ‘all the time’ is hard

Page 11: Building a Technical Culture @ Grammarly

Technical excellence culture is needed to grow intensely

Page 12: Building a Technical Culture @ Grammarly

Technical Excellence Culture

HOW?

Page 13: Building a Technical Culture @ Grammarly

Our Approach

Orgstructure

TechnicalmeansT.E.C.

Page 14: Building a Technical Culture @ Grammarly

The Foundation

Orgstructure

Technicalmeans

Page 15: Building a Technical Culture @ Grammarly

The Problem: Time-Eater[s]Low development pace

Buggy releases =>

regular outages =>

high downtime

Page 16: Building a Technical Culture @ Grammarly

Our SolutionEngineers at

Cross-functional Teams

Fully own services and releases, while

Tools solve all the hassle

Page 17: Building a Technical Culture @ Grammarly

Cross-func Teams

QA => SE in Test => Feature Teams

Story #1

XP

Continuos Delivery

Monitoring

ORG: crossfit TECH: CI

Page 18: Building a Technical Culture @ Grammarly

Solution #1: org

Feature Cross-functional Teams

Page 19: Building a Technical Culture @ Grammarly

Solution #1: org

Catch bugs

Build for quality

Write code

… well… catch bugs

no-QA: from QA to SET

Page 20: Building a Technical Culture @ Grammarly

Solution #1: techXP

pair programming

defensive programming

code review

tests for new code / bugs found

… and more

Page 21: Building a Technical Culture @ Grammarly

Solution #1: techCI/CD: Release often

Feature branches on git

CI Server (TeamCity)

Unit / Integration / Load / … tests

Continuous Deployment

Page 22: Building a Technical Culture @ Grammarly

Solution #1: techCI/CD: Release often

Feature branches on git

CI Server (TeamCity)

Unit / Integration / Load / … tests

Continuous Deployment

Doesn’t work

Page 23: Building a Technical Culture @ Grammarly

Monitor All the Things!

Page 24: Building a Technical Culture @ Grammarly

Make it an engineering practice

Measure everything, choose what to monitor then

Validate monitoring data!

Monitor All the Things!

Page 25: Building a Technical Culture @ Grammarly

Logs: back-end and front-end

Time-series metrics: counters, timers

More: www.slideshare.net/tuxSlayer/frontend-monitoring-grammarly

Monitor All the Things!

Page 26: Building a Technical Culture @ Grammarly

Results #1Zero ping-pong time between teams

Developers can release “at will”

QA-people are involved from day 1

Everybody writes tests

Everybody* can fix a bug

* almost

Page 27: Building a Technical Culture @ Grammarly

Results #1Time to release from 1-2h to 1-10 min

Rollback instead of fixing => Short outages

Whole team does not get distracted by outages

Page 28: Building a Technical Culture @ Grammarly

Release Calendar

Page 29: Building a Technical Culture @ Grammarly

Platform Team

Embedded Ops in Teams

Story #2

docker

rocker

Terraform

ORG: no-Ops TECH: containers

Page 30: Building a Technical Culture @ Grammarly

Solution #2: Platform TeamNot a “service” team

PaaS

Strategic rather than tactical

Software Engineers + DevOps

Embedded Ops for Feature Teams

Page 31: Building a Technical Culture @ Grammarly

Solution #2: Containers

Container Platform

Static content

Nginx configs

Nginx

Responsible Dev Team Happy Ops Kitchen

ship it! Container

Container

Container

Page 32: Building a Technical Culture @ Grammarly

Results #2Wait no more for DevOps tasks

Reproducible environments => Safe deployments

Configuration as a code (versioning, automation, templating etc)

Multi-service deployments (e.g. DB+Redis+App+Nginx)

Page 33: Building a Technical Culture @ Grammarly

… soEngineers at

Cross-functional Teams

Fully own services and releases, while

Tools solve all the hassle

Page 34: Building a Technical Culture @ Grammarly

Our Approach

Orgstructure

TechnicalmeansT.E.C.

Page 35: Building a Technical Culture @ Grammarly

T.E.C.: the FoundationOptimize every single phase of dev cycle

Create an env for dev practices

Apply best practices to

Stop fire-fighting and free more time and mindshare for improvements

Page 36: Building a Technical Culture @ Grammarly

T.E.C.: let’s do it!

Page 37: Building a Technical Culture @ Grammarly

Build ExpertiseHire the best

Take coursesmake internal talks afterwards

Mentorship including external mentors

Free Books

Fun Days for learning

Internal

Hackathons

Page 38: Building a Technical Culture @ Grammarly

Build ExcellenceDefinition of Done

Tech Excellence Check Lists (forever!)

SLOs / SLAs

Page 39: Building a Technical Culture @ Grammarly

Check Lists: Practices

Page 40: Building a Technical Culture @ Grammarly

Check List: Quality Aspects (50+)

Page 41: Building a Technical Culture @ Grammarly

Build CultureTechnical Leadership Guild

2 tech-leads + 2 managers

Set expectations

Praise: pride & recognition

Create more space for communication

Page 42: Building a Technical Culture @ Grammarly

T.E.C.…

Profit: time and space for intensive growth

Page 43: Building a Technical Culture @ Grammarly

TakeawaysIt’s hard

It’s expensive

It’s slow

You don’t always need it

But when you have it – it’s a pure joy!

Page 44: Building a Technical Culture @ Grammarly
Page 45: Building a Technical Culture @ Grammarly

Thank you!Aleksey Yashchenko

Software Engineer &Engineering Manager at Grammarly

@tuxslayer