hello
End toEnd
10+ million  members
800,000+  sellers
11 million+   items
1 billion+page views a month
$600 million   this year
Design    forContinuousDeployment
HELL  Design    forYES!ContinuousDeployment
“What is he doing here?”
getGreateWork done
HowThings  areMade
MakingTogether
“What is continuous deployment?”
“deployment”Release Changes
“continuous”All of the Time
Always Improve
Frequent BoringLow-Risk
Release EarlyRelease Often
Easy to Identify  Easy to Fix
“Why design for continuous deployment?”
We’re all inthis together.
Share EarlyShare Often
code
code
Empowerment, Responsibility      &    Trust
Decentralize   Work
Engineers   Deployers
Engineers         Deployers70605040302010 0     Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov
Engineers         Deployers7060                                                                 58                        ...
Engineers         Deployers70                                                                 6260                        ...
Engineers         Deployers70                                                                 6260                        ...
Share LanguageShare Knowledge
Version Control Design Assets
“How do you do it?”
Tools  &Process
Dev Environment
LocalEnvironment
Quick Start Guides        &    Packages
Chat & Share
send Local Changes       toDev Environemnt
Pattern Library
Config Flags
On/Off
On/OffDev/Prod
On/Off  Dev/ProdWhitelist/Co./All
On/Off  Dev/ProdWhitelist/Co./All   %A/%B
URL Params
{% if $smarty.get.url_param ==url_param_value %}a design for review{% /if %}
{% if $smarty.get.url_param ==version-A %}a design for review{% /if %}
{% if $smarty.get.url_param ==version-B %}another design for review{% /if %}
Commit & Review
Test
Push
Push it toMaster in Git
Deploy Queue
Deployinator
etsy.github.com
Measure
Performance
PerformanceBusiness Metrics
PerformanceBusiness Metrics A/B Analyzer
Repeat
“Why ‘hell yes’?”
Simplify   theComplex
Work Closely
Make Change Easy
Make Great Work
Make People Happy
Make People Happy
That Is    aBeautiful Thing
That Is  anAwesome Thing
WE’RE  That Is    anHIRING Awesome  Thing
randy@etsy.com  @randyjhunt
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Randy Hunt, Etsy - Warm Gun Conference
Upcoming SlideShare
Loading in …5
×

Randy Hunt, Etsy - Warm Gun Conference

1,891 views

Published on

www.warmgun.com

Published in: Technology, Sports
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,891
On SlideShare
0
From Embeds
0
Number of Embeds
414
Actions
Shares
0
Downloads
29
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • Hello\n
  • Hello\n
  • What is Etsy?\nEtsy is a commerce platform & a community where people buy direct from designers & artists who make & sell their own products.\n
  • Any creative person can open a shop, list items, receive and fulfill orders, promote themselves, connect with other people, curate collections of items, watch site activity...\n
  • 96% goes straight to the seller.\n
  • There are products made by hand or with very small scale production.\n
  • There are vintage and antique products.\n
  • There are supplies for making.\n
  • Etsy is more than products. It’s a community.\n
  • I’m in the lucky position to be creative director at Etsy.\nI get to be the arbiter of Etsy's experience end-to-end across all channels...\n
  • ...out in the world...\n
  • ...on your phone...\n
  • ...and at etsy.com. I’m the design cheerleader, with a critical eye. And I make sure great design work gets done.\n
  • There’s a lot to get done. In a complex environment.\n
  • \n
  • \n
  • \n
  • And...\n
  • About 140 people in Product Design & Engineering\n(that’s designers, product managers, engineers, and devops).\nWe have to make that all work!\n
  • Which brings me to the topic at hand. Design for Continuous Deployment.\n
  • Which is awesome.\n
  • You might be asking yourself, “why is a designer talking to room of developers about deployment?”\n
  • Return to this idea of helpinggreat work get done.\n
  • Getting great work done means working together.\nAnd it means valuing how things are made.\n
  • In fact, it means Making Together.\nTHAT is designing for continuous deployment.\nIf our engineers practice continuous deployment, so must we. We’re building one product.\n
  • Designers...\n
  • ...and engineers...(no wait)...\n
  • ...and engineers working together.\n
  • That brings us to our next question. You might be asking, \n“What is continuous deployment?”\n
  • “Deployment” is really just releasing changes to your product.\n
  • “Continuous” means those changes are being released all of the time.\n
  • Assuming that each change is intended to be an improvement (and why wouldn’t it be?), then that means the product is always improving.\n
  • These changes happen often, they’re trivial, and because they’re small, they should be low risk. This is really the philosophy of continuous deployment.\n
  • This is saying frequency another way: a catchy way. This is how you say it if you want to remind someone they haven’t released small enought or frequently enough.\n
  • Again, because the changes are small (and we measure what happens) problems are easier to find and easier to fix.\n
  • So, you ask, “why design for continuous deployment?”\n
  • Well, we’re working together building one product, so we should work similarly. Design doesn’t get left behind in a powerful engineering culture. In fact, design can scale and be more fluid when it’s close to engineering.\n
  • This is the collaboration counterpart to releasing early and often. You encounter problems sooner. You learn sooner. You fix sooner.\nThis isn’t about speed, it’s about quality.\n
  • You sketch it out...\n
  • ...make it real...\n
  • ...and share it!\nYou’ve made your design in the actual application environment. For engineers, no big deal. For designers, this is huge!\n
  • And when you get to the point of releasing, you’re empowered and trusted to do that. (yep, designers deploy to production too)\n
  • People like these things. Being trusted feels good.\nAs Kellan our CTO says, “optimize for developer happiness.”\nWhen you’re happy, you do better work.\n
  • When everyone can access code and everyone can deploy, there’s not single bottleneck or central deployment authority.\n
  • Here we can see the moment in 2010 when the number of people deploying to production surpassed the number of engineers on staff. This is good.\n
  • Here we can see the moment in 2010 when the number of people deploying to production surpassed the number of engineers on staff. This is good.\n
  • Here we can see the moment in 2010 when the number of people deploying to production surpassed the number of engineers on staff. This is good.\n
  • Here we can see the moment in 2010 when the number of people deploying to production surpassed the number of engineers on staff. This is good.\n
  • When designers and engineers work in the same environment, they share a language. This makes is easier to share knowledge. It also means you sympathize more with each other’s motivations and challenges.\n
  • As an added bonus. When you have designers working this way, you get version control of your design assets happening naturally. Nice!\n
  • Enough with the philosophy and motivational messages.\n“How does this work at Etsy?”\n
  • I’ll describe the tools and basic process we use on the product design team (and where we intersect with engineering).\n
  • We all have a dedicated virtual machine that serves as our development environment. They are configured as mirrors of production in almost every way.\n
  • And we all work locally on our Macs. This is like some engineers, but not most of them. Most of them like to work in their development environment directly. Us designers don’t like things like Vim.\n
  • Along with our engineers, we’ve made quick guides to help designers get started in this environment.\n
  • Some engineers even made us a handy package to install. Ta-da!\n
  • \n
  • The whole company uses IRC to communicate.\n
  • The product design team also uses Campfire (and the Propane client) to share visual designs in conversation as well. We’ll post links to dev environments, as well as still and motion screen captures.\n
  • Remember those set up tools? Well there’s a handy script that auto-sends local changes to your development environment.\n
  • We’ve built a design Pattern Library. It allows us to quickly get designs roughed. Don’t duplicate efforts. Be more consistent throughout the product.\n\nIt covers mark-up, style, and behavior.\n
  • This doesn’t solve everything, every time, but a patterns solves many things many times. Makes it easy to get started. Helps share design decisions between designers and with engineers.\n\nIf we do something more than once, we patternize it.\n
  • We put every feature behind config flags. They’re dead simple. They live in a few simple PHP files.\n\nThese allow us to safely work in production code and only deliver designs to the right people at the right time.\n
  • These flags turn things on and off.\nThey determine what environment they’re on/off in.\nThey can determine what specific users.\nAnd they integrate with our a/b experiment framework.\n
  • These flags turn things on and off.\nThey determine what environment they’re on/off in.\nThey can determine what specific users.\nAnd they integrate with our a/b experiment framework.\n
  • These flags turn things on and off.\nThey determine what environment they’re on/off in.\nThey can determine what specific users.\nAnd they integrate with our a/b experiment framework.\n
  • These flags turn things on and off.\nThey determine what environment they’re on/off in.\nThey can determine what specific users.\nAnd they integrate with our a/b experiment framework.\n
  • We’ve implemented very simple template tags that allow us to specify URL parameters and next design states or variations inside them.\n
  • \n
  • \n
  • \n
  • Before we send our changes back to master, we get code reviews from our peers.\n
  • We use Crucible or Github or really anything you’d like to use to do a code review. The important thing is that we check our work. Designers can learn a ton from engineers in this step.\n
  • Before we send changes to master, we run functional and unit tests.\n
  • Then we push it.\n
  • Wow, tech-y slide.\nWhat about merging? We merge when we pull.\nNo branches. We only “branch in code” using the config flags. That saves us from any annoying merging issues and keeps everyone accountable. It’s also just simple and easy to understand.\n
  • Who’s turn is it? We find out by joining the Deploy Queue.\nSo how do you manage 100 people pushing and deploying code to production? You make them talk to each other.\n
  • That’s right, IRC. There’s a special IRC room just for Pushes. There’s a little bot that helps you be polite, but the only policy enforcement is self enforcement. We respect the system and respect our peers.\n
  • When the queueu says it’s okay to deploy, we turn to our tool, Deployinator. It’s a dashboard and simple UI for 1-button deploys.\n
  • \n
  • It patternizes behavior.\n
  • It’s so easy, even our investors deploy! ;-)\n
  • Deployinator (and several of our other home-brew tools) are open-sourced and avaliable on github.\n
  • After we deploy, we measure, measure, measure.\n
  • We monitor performance immediately and over the long term.\nWe look at business metrics immediately and over the long term.\nAnd we watch behavioral metrics and funnels using our analyzer tool.\n
  • We monitor performance immediately and over the long term.\nWe look at business metrics immediately and over the long term.\nAnd we watch behavioral metrics and funnels using our analyzer tool.\n
  • We monitor performance immediately and over the long term.\nWe look at business metrics immediately and over the long term.\nAnd we watch behavioral metrics and funnels using our analyzer tool.\n
  • And we do this over and over and over again, deploying up to 50 times day.\n
  • Why’s it all so exciting to designers...and engineers?\n
  • Working continuously, and releasing small pieces breaks complex things down into simpler things.\n
  • You end up working closely together, because we use the same tools and languages. This is good.\n
  • This makes it easier to make changes happen, and get them out in the world.\n
  • Develop a way of working that facilitates great work.\n
  • And when you make great work, the people you make it and the people who use it are better for it.\n
  • Afterall, it’s people that matter most.\n
  • \n
  • If you find that as awesome as I do...\n\n
  • \n
  • Please come talk to me.\n\n
  • Thank you so much.\n\n
  • Randy Hunt, Etsy - Warm Gun Conference

    1. 1. hello
    2. 2. End toEnd
    3. 3. 10+ million members
    4. 4. 800,000+ sellers
    5. 5. 11 million+ items
    6. 6. 1 billion+page views a month
    7. 7. $600 million this year
    8. 8. Design forContinuousDeployment
    9. 9. HELL Design forYES!ContinuousDeployment
    10. 10. “What is he doing here?”
    11. 11. getGreateWork done
    12. 12. HowThings areMade
    13. 13. MakingTogether
    14. 14. “What is continuous deployment?”
    15. 15. “deployment”Release Changes
    16. 16. “continuous”All of the Time
    17. 17. Always Improve
    18. 18. Frequent BoringLow-Risk
    19. 19. Release EarlyRelease Often
    20. 20. Easy to Identify Easy to Fix
    21. 21. “Why design for continuous deployment?”
    22. 22. We’re all inthis together.
    23. 23. Share EarlyShare Often
    24. 24. code
    25. 25. code
    26. 26. Empowerment, Responsibility & Trust
    27. 27. Decentralize Work
    28. 28. Engineers Deployers
    29. 29. Engineers Deployers70605040302010 0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov
    30. 30. Engineers Deployers7060 58 5550 49 4740 42 3530 30 2620 23 20 1510 0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov
    31. 31. Engineers Deployers70 6260 57 58 54 5550 50 49 4740 42 35 3230 30 26 26 2220 23 20 15 1510 10 7 8 0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov
    32. 32. Engineers Deployers70 6260 57 58 54 5550 50 49 4740 42 35 3230 30 26 26 2220 23 20 15 1510 10 7 8 0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov
    33. 33. Share LanguageShare Knowledge
    34. 34. Version Control Design Assets
    35. 35. “How do you do it?”
    36. 36. Tools &Process
    37. 37. Dev Environment
    38. 38. LocalEnvironment
    39. 39. Quick Start Guides & Packages
    40. 40. Chat & Share
    41. 41. send Local Changes toDev Environemnt
    42. 42. Pattern Library
    43. 43. Config Flags
    44. 44. On/Off
    45. 45. On/OffDev/Prod
    46. 46. On/Off Dev/ProdWhitelist/Co./All
    47. 47. On/Off Dev/ProdWhitelist/Co./All %A/%B
    48. 48. URL Params
    49. 49. {% if $smarty.get.url_param ==url_param_value %}a design for review{% /if %}
    50. 50. {% if $smarty.get.url_param ==version-A %}a design for review{% /if %}
    51. 51. {% if $smarty.get.url_param ==version-B %}another design for review{% /if %}
    52. 52. Commit & Review
    53. 53. Test
    54. 54. Push
    55. 55. Push it toMaster in Git
    56. 56. Deploy Queue
    57. 57. Deployinator
    58. 58. etsy.github.com
    59. 59. Measure
    60. 60. Performance
    61. 61. PerformanceBusiness Metrics
    62. 62. PerformanceBusiness Metrics A/B Analyzer
    63. 63. Repeat
    64. 64. “Why ‘hell yes’?”
    65. 65. Simplify theComplex
    66. 66. Work Closely
    67. 67. Make Change Easy
    68. 68. Make Great Work
    69. 69. Make People Happy
    70. 70. Make People Happy
    71. 71. That Is aBeautiful Thing
    72. 72. That Is anAwesome Thing
    73. 73. WE’RE That Is anHIRING Awesome Thing
    74. 74. randy@etsy.com @randyjhunt

    ×