fitter happier more productive
play

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


  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

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

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

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

  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.

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

  7. scala> println ("hello, world.") production hello, world. minimise the distance between “hello, world” and production.

  8. a good idea production minimise the distance between a good idea and production.

  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”

  10. Self Actualise: Get stuff done and have cool This is the most important thing. stories that impress your friends. Fuzbol. Beanbags. Free-food. Perks. Pet-creche. Laptop. Wifi. VPN. Seat. Standing Desk. Screen. Basics. You must have Warmth. Light. these. DEVELOPER HIERARCHY OF NEEDS

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

  12. SAY “AUTONOMY, MASTERY, PURPOSE” ONE MORE TIME

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

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

  15. DEV QA DEV DEV PRE DEV QA PROD DEV DEV PROD DEV QA DEV DEV Dev, QA & Test environments are high-friction places to write code.

  16. Lack of Flow, Excessive Bending, Kneeling, Reaching Borrowing from lean / six-sigma Increased Waste = Lower Productivity, Safety Opportunities

  17. MOTION STUDY – “SPAGHETTI DIAGRAMS” Spaghetti Diagrams make poor layouts and wasted motion obvious

  18. DEV QA DEV DEV PRE DEV QA PROD DEV DEV PROD DEV QA DEV DEV Spaghetti diagram of movement and handover within the software delivery process.

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

  20. Prod Dark Canary Dark Canary Instance_0 Instance_0 Canary Instance_1 Instance_1 Instance_2 Instance_n 1.0.1 1.0.0 1.0.1 1.0.1 1.0.0 1.0.0 1.0.1 1.0.0 1.0.1 Core idea #1: test in prod with dark canaries, canaries, release, roll-back.

  21. Instance_0 - v1.0.0 Live Traffic Instance_1 - v1.0.0 Instance_2 - v1.0.0 Elastic Load Balancer (ELB) http://hello-world-nova.common.giltaws.com Instance_3 - v1.0.0 Canary Elastic Load Dark Balancer (ELB) Instance_4 - v1.0.0 Canary http://hello-world-nova-dark.common.giltaws.com github.com/gilt/nova- deployment patterns

  22. CloudFormation nova.yml $> nova stack create production CodeDeploy templates github.com/gilt/nova - creating environments

  23. Instance_0 - v1.0.1 Instance_0 - v1.0.0 bundle S3 CodeDeploy Live Traffic Instance_1 - v1.0.0 Instance_1 - v1.0.1 Instance_2 - v1.0.1 Instance_2 - v1.0.0 Elastic Load Balancer (ELB) Instance_3 - v1.0.1 Instance_3 - v1.0.0 live Canary Elastic Load Dark Balancer (ELB) Instance_4 - v1.0.0 Instance_4 - v1.0.1 Canary dark $> nova deploy common Production $> nova deploy common DarkCanary $> nova deploy common Canary 1.0.1 1.0.1 1.0.1 github.com/gilt/nova- deployment

  24. prod contract sandbox Core idea #2: your teams are startups providing services to other development teams

  25. https://...hbc.com/ saks /favourites/... https://...hbc.com/ test /favourites/... https://...hbc.com/ bay /favourites/... api-brand-fav api-brand-fav api-brand-fav api-brand-fav dark canary Core idea #3: exploit multi-tenant design for confident testing in production

  26. Master AWS Account ML & Algos Mobile Data Services Web & Shared Services INFRA Core idea #4: give your teams secure, unfettered control over their own infrastructure. Segregate and apply command-and-control where you need it most.

  27. f : Forced technology choices. Prefer voluntary adoption.

  28. hold https://github.com/gilt/standards ION Roller assess NOVA CodePipeline trial ECS AWS Lamda adopt sbt-code-deploy CodeDeploy CloudFormation std. Docker ECR Docker Hub (Open Source)

  29. adoption by rule voluntary adoption centralised decentralised Steer towards classroom size uniform diverse consensus efficient effective Scala, Java, Ruby, Swift, JS, go Node, ... Philosophical note: choose your abstractions & frameworks carefully.

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

  31. λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ λ 2010 2012 2016 2007 Service µ-Services Rise of λ Monolith Oriented A minimalist abstraction of our architectural evolution

  32. <<traffic manager>> :zxtm <<monolith>> swift:jsp ~15 more small, simple, isolated web apps that share the same look and feel. Lots of Small Apps (LOSA) - AKA “micro-frontends”.

  33. I hear ya.

  34. A small-but-important problem: marketing redirects We have marketing URLs like: https://gilt.com/loveaws Zeus We need to look up the slug ‘loveaws’ and change that to a ‘pkey’ for our login, so we can :( customer-facing redirect with 302 to: traffic on Rails :( Rails https://gilt.com/login?pkey=loveaws&... Existing solution routed to legacy Ruby on Rails app: Postgres ● not scalable. ● not ‘symmetric’

  35. λ-based solution Zeus Replace with solution using API-Gateway + Lambda + KMS API ● 3/80 LOC (cruft/code) .js Gateway ● KMS used for encrypted DB credentials ● Response cached Tiny λ ● No longer hits Rails! λ Postgres

  36. It’s just code.

  37. f : Forced team choices. Prefer self-selection.

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

  39. “I love the team I’m on right now!” Imagine the power of a fully-aligned team who want to work together.

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

  41. RED HOT ENGINEER

  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?”

  43. ~ 2.75 - 5 hrs a week

  44. Measure It.

  45. POps Mission To build and maintain the best product development teams in the world through establishing the models around how we staff and organize 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!

  46. Team Health Check - Trends Baseline 9/27/2016 Current 11/23/2016

  47. 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. #thanks @adrian_trenaman @gilttech @hbcdigital

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

Recommend


More recommend