Fitter, Happier, More Productive. Removing Friction in the - - PowerPoint PPT Presentation

fitter happier more productive
SMART_READER_LITE
LIVE PREVIEW

Fitter, Happier, More Productive. Removing Friction in the - - PowerPoint PPT Presentation

Fitter, Happier, More Productive. Removing Friction in the Developer Experience Q-Con New York, June 27th 2017 Ade Trenaman, SVP Engineering, HBC Digital t: @adrian_trenaman http://tech.gilt.com t: @hbcdigital fa: @hbcdigital in: hbc_digital


slide-1
SLIDE 1

Fitter, Happier, More Productive.

Removing Friction in the Developer Experience

Q-Con New York, June 27th 2017 Ade Trenaman, SVP Engineering, HBC Digital t: @adrian_trenaman http://tech.gilt.com t: @hbcdigital fa: @hbcdigital in: hbc_digital

slide-2
SLIDE 2

What are you doing while in the US? I’m speaking a software conference. Sir.

slide-3
SLIDE 3

What’s your official title? I’m SVP Engineering at Hudson’s Bay Co.

slide-4
SLIDE 4

What’s your talk about? Ummm. Improving the way we do software engineering.

slide-5
SLIDE 5

So, how do you do that? <fear induced pause> Provide unfettered access to cloud computing resources and remove all things that block engineers from getting software to production.

slide-6
SLIDE 6

It’s hard, huh, all that red tape and bureaucracy? Yup. Well, hope you solve it! :) Welcome to America.

slide-7
SLIDE 7

minimise the distance between “hello, world” and production.

scala> println ("hello, world.") hello, world. production

slide-8
SLIDE 8

minimise the distance between a good idea and production.

production a good idea

slide-9
SLIDE 9

For great dev-ex:

“... build an organisation and architecture that allows you to deploy change frequently, swiftly and safely to production, and own the impact of that change”

slide-10
SLIDE 10
  • Laptop. Wifi. VPN. Seat.

Standing Desk. Screen.

  • Warmth. Light.
  • Fuzbol. Beanbags.

Free-food. Pet-creche. Self Actualise: Get stuff done and have cool stories that impress your friends. Perks.

  • Basics. You must have

these. This is the most important thing. DEVELOPER HIERARCHY OF NEEDS

slide-11
SLIDE 11

code first

Teams: 5±2 in size Departments: 20±4 #leadersnotmanagers #leaderswhocode: 85%, 60%, 15% IC & Lead tracks #devops #ownership #opensource

slide-12
SLIDE 12

SAY “AUTONOMY, MASTERY, PURPOSE”

ONE MORE TIME

slide-13
SLIDE 13

M

  • G

FApplied Friction* * reactive force resisting motion … motivation: autonomy, mastery, purpose The change we want to make... … work is hard. … all the things that slow us down or block us.

slide-14
SLIDE 14

f : Staging/Testing Environments Prefer to test in production. #srsly

slide-15
SLIDE 15

Dev, QA & Test environments are high-friction places to write code.

PROD DEV DEV DEV DEV DEV DEV DEV DEV DEV QA QA QA PRE PROD

slide-16
SLIDE 16

Lack of Flow, Excessive Bending, Kneeling, Reaching Increased Waste = Lower Productivity, Safety Opportunities

Borrowing from lean / six-sigma

slide-17
SLIDE 17

MOTION STUDY – “SPAGHETTI DIAGRAMS”

Spaghetti Diagrams make poor layouts and wasted motion obvious

slide-18
SLIDE 18

Spaghetti diagram of movement and handover within the software delivery process.

PROD DEV DEV DEV DEV DEV DEV DEV DEV DEV QA QA QA PRE PROD

slide-19
SLIDE 19

Overproduction ▪ Encourages fewer ‘big bang’ releases Waiting ▪ Can’t get my stuff deployed Motion ▪ Commit deploy test commit deploy test commit deploy test... Transportation ▪ Multiple handoffs between Engineers, QA & Ops Inventory ▪ Lots of commits held up in the pipeline. Rework ▪ Works in one environment, not in another Overprocessing ▪ Tickets tested and rested in different environments. Intellect ▪ Spending time building and debugging environments instead

  • f adding value

Muda - “Waste” in the software software delivery process

slide-20
SLIDE 20

Prod

Core idea #1: test in prod with dark canaries, canaries, release, roll-back.

Dark Canary 1.0.0 Instance_0 1.0.0 Instance_1 1.0.0 Instance_n 1.0.0 Dark Canary 1.0.1 Canary 1.0.1 Instance_0 1.0.1 Instance_1 1.0.1 Instance_2 1.0.1

slide-21
SLIDE 21

github.com/gilt/nova- deployment patterns

Instance_0 - v1.0.0 Instance_1 - v1.0.0 Instance_2 - v1.0.0 Live Traffic Instance_3 - v1.0.0 Canary Instance_4 - v1.0.0 Dark Canary Elastic Load Balancer (ELB)

http://hello-world-nova.common.giltaws.com

Elastic Load Balancer (ELB)

http://hello-world-nova-dark.common.giltaws.com

slide-22
SLIDE 22

github.com/gilt/nova - creating environments

nova.yml templates $> nova stack create production CloudFormation CodeDeploy

slide-23
SLIDE 23

github.com/gilt/nova- deployment

Instance_0 - v1.0.0 Instance_1 - v1.0.0 Instance_2 - v1.0.0 Live Traffic Instance_3 - v1.0.0 Canary Instance_4 - v1.0.0 Dark Canary Elastic Load Balancer (ELB)

live

Elastic Load Balancer (ELB)

dark

$> nova deploy common DarkCanary 1.0.1 Instance_4 - v1.0.1 $> nova deploy common Canary 1.0.1 Instance_3 - v1.0.1 $> nova deploy common Production 1.0.1 Instance_0 - v1.0.1 Instance_1 - v1.0.1 Instance_2 - v1.0.1 CodeDeploy S3 bundle

slide-24
SLIDE 24

Core idea #2: your teams are startups providing services to other development teams

prod

contract

sandbox

slide-25
SLIDE 25

Core idea #3: exploit multi-tenant design for confident testing in production

api-brand-fav api-brand-fav api-brand-fav api-brand-fav

dark canary https://...hbc.com/saks/favourites/... https://...hbc.com/bay/favourites/... https://...hbc.com/test/favourites/...

slide-26
SLIDE 26

Core idea #4: give your teams secure, unfettered control

  • ver their own infrastructure. Segregate and apply

command-and-control where you need it most.

Master AWS Account Web & Shared Services ML & Algos Mobile Services Data INFRA

slide-27
SLIDE 27

f : Forced technology choices. Prefer voluntary adoption.

slide-28
SLIDE 28

adopt hold trial assess std.

https://github.com/gilt/standards

CodeDeploy Docker CodePipeline ION Roller ECS sbt-code-deploy AWS Lamda Docker Hub (Open Source) CloudFormation NOVA ECR

slide-29
SLIDE 29

Philosophical note: choose your abstractions & frameworks carefully.

adoption by rule centralised uniform efficient go voluntary adoption decentralised diverse effective Scala, Java, Ruby, Swift, JS, Node, ... Steer towards classroom size consensus

slide-30
SLIDE 30

f : Fear of Breaking All The Things Adopt µ-services. Adopt λ. Maximize code-to-cruft-ratio.

slide-31
SLIDE 31

A minimalist abstraction of our architectural evolution

2007 Monolith 2010 Service Oriented 2012 µ-Services

λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ

2016 Rise of λ

slide-32
SLIDE 32

Lots of Small Apps (LOSA) - AKA “micro-frontends”.

<<monolith>> swift:jsp <<traffic manager>> :zxtm ~15 more small, simple, isolated web apps that share the same look and feel.

slide-33
SLIDE 33

I hear ya.

slide-34
SLIDE 34

We have marketing URLs like: https://gilt.com/loveaws We need to look up the slug ‘loveaws’ and change that to a ‘pkey’ for our login, so we can redirect with 302 to: https://gilt.com/login?pkey=loveaws&... Existing solution routed to legacy Ruby on Rails app:

  • not scalable.
  • not ‘symmetric’

A small-but-important problem: marketing redirects

Rails

Postgres

Zeus

:( customer-facing traffic on Rails :(

slide-35
SLIDE 35

λ-based solution

Replace with solution using API-Gateway + Lambda + KMS

  • 3/80 LOC (cruft/code) .js
  • KMS used for encrypted DB credentials
  • Response cached
  • No longer hits Rails!

λ

Postgres

Zeus

Tiny λ

API Gateway

slide-36
SLIDE 36

It’s just code.

slide-37
SLIDE 37

f : Forced team choices. Prefer self-selection.

slide-38
SLIDE 38

Self Selection

Product Mgr, Tech Lead & Project Mgr ‘pitch’ to engineers.

slide-39
SLIDE 39

“I love the team I’m on right now!”

Imagine the power of a fully-aligned team who want to work together.

slide-40
SLIDE 40

f : Distractions. Reinforce the notion that coding is the primary activity.

slide-41
SLIDE 41

RED HOT ENGINEER

slide-42
SLIDE 42

Work your meetings

5@4 (~3w, by location) Tech Huddle (weekly, by location) All Hands (monthly, global) Team KPI meetings: 2-4 weeks Quality Review Team meetings? Up to them. Ask: “was this meeting valuable? should we meet again?”

slide-43
SLIDE 43

~ 2.75 - 5 hrs a week

slide-44
SLIDE 44

Measure It.

slide-45
SLIDE 45

POps Mission

To build and maintain the best product development teams in the world through establishing the models around how we staff and

  • rganize our teams, how we plan

and execute our work, and how we develop our people and our culture. Reduce the Friction in the Employee Experience!

slide-46
SLIDE 46

Team Health Check - Trends

Baseline 9/27/2016 Current 11/23/2016

slide-47
SLIDE 47

#thanks @adrian_trenaman @gilttech @hbcdigital

Seek out and remove friction in your engineering process. Give freedom-of-choice & freedom-of-movement to your engineers. Code is the primary artifact. Minimize the distance between “hello, world” and prod.

slide-48
SLIDE 48

Overproduction ▪ Routinely exceed customer needs ("gold-plating") ▪ Exceeding scope of SLAs Waiting ▪ Idle time during automated program runs ▪ Waiting between assignments Motion ▪ Interruptions leading to context switching, mental motion ▪ Lack of or sub-optimal Standard Operating Procedures (SOP) Transportation ▪ Multiple handoffs of incidents, changes ▪ Sub-optimal dispatch and routing ▪ Insufficient use of remote diagnosis Inventory ▪ Large number of servers due to a low server utilization ▪ System-generated alerts clogging ticket queues Rework ▪ Misrouted tickets ▪ Inadequate testing before production ▪ Poor change-window planning Overprocessing ▪ Unnecessary system replacement, patching ▪ Backup/defrag runs earlier than needed ▪ Excessive documentation Intellect ▪ Mismatched work functions with skill sets ▪ Lack of best prac- tice sharing across groups

Muda - “Waste” in manufacturing process