{"id":456,"date":"2013-01-04T15:55:17","date_gmt":"2013-01-04T20:55:17","guid":{"rendered":"http:\/\/blog.agilityfeat.com\/?p=456"},"modified":"2013-01-04T15:55:17","modified_gmt":"2013-01-04T20:55:17","slug":"change-org","status":"publish","type":"post","link":"https:\/\/agilityfeatpanama.com\/en\/blog\/2013\/01\/change-org\/","title":{"rendered":"How Change.org fit Agile Engineering in with Lean Startups"},"content":{"rendered":"<p><strong>How do you convince engineers that it\u2019s okay to build quick experiments, and deploy code that you will probably throw away?<\/strong> How do you convince rigorous engineers that it\u2019s actually more efficient to work in a lean startup style?<\/p>\n<p>That is a topic that <a href=\"https:\/\/twitter.com\/sammcafee\">Sam McAfee<\/a> from <a href=\"http:\/\/Change.org\">Change.org<\/a> addressed during a panel at the <a href=\"http:\/\/leanstartup.co\/\">LeanStartupConference<\/a> last December in San Francisco.<\/p>\n<h2>A little bit about Change.org<\/h2>\n<p style=\"text-align: left;\"><strong><img loading=\"lazy\" class=\"size-full wp-image-457 aligncenter\" alt=\"Screen Shot 2013-01-04 at 3.31.27 PM\" src=\"https:\/\/agilityfeat.com\/wp-content\/uploads\/2013\/01\/Screen-Shot-2013-01-04-at-3.31.27-PM.png\" width=\"550\" height=\"172\" \/>Change.org is \u201cthe world\u2019s petition platform\u201d<\/strong>, and a very cool social activism site where you can start petitions about issues you care about. These aren\u2019t just petitions about your neighbor\u2019s annoying cats, many of these petitions are about real life changing events on a global scale.<\/p>\n<p>For instance, right now there are petitions highlighted on change.org to fight corrective rape in South Africa, to end driving license corruption in India, to allow women to drive in Saudi Arabia, and many more issues. Many of these petitions actually effect the change they are asking for, and Change.org marks those as \u201cwon.\u201d<\/p>\n<h2>Sam McAfee\u2019s journey to Lean<\/h2>\n<p><strong><a href=\"https:\/\/twitter.com\/sammcafee\"><img loading=\"lazy\" class=\"alignleft size-full wp-image-458\" alt=\"Screen Shot 2013-01-04 at 3.48.50 PM\" src=\"https:\/\/agilityfeat.com\/wp-content\/uploads\/2013\/01\/Screen-Shot-2013-01-04-at-3.48.50-PM.png\" width=\"196\" height=\"192\" \/><\/a>Sam is director of Web Engineering at Change.org<\/strong>, and I appreciate how generous he was with his time. Sam and I talked more about the issues that he discussed on the engineering panel at the Lean Startup Conference, and we started with talking about his journey to the world or agile and lean startups.<\/p>\n<p>Sam got into software development at the tail end of the dot com boom. He was first exposed to agile around 2002 or 2003. At the time he was building a consulting company and stumbled on <a href=\"http:\/\/en.wikipedia.org\/wiki\/Kent_Beck\">Kent Beck<\/a> and <a href=\"http:\/\/martinfowler.com\/\">Martin Fowler<\/a>, and was inspired to incorporate their <a href=\"http:\/\/en.wikipedia.org\/wiki\/Extreme_Programming\">eXtreme Programming (XP)<\/a> techniques into his consulting company.<\/p>\n<p>The methods of XP are great, and things like Test Driven Development and Pair Programming are a great way to become more agile. But in Sam\u2019s experience, it\u2019s easy to get lost in the mechanics of those practices but still lose sight of your core goals. <strong>The practices by themselves don\u2019t automatically make you \u201cagile\u201d<\/strong>, and it took Sam a while to really grasp that. So far Sam\u2019s story is very similar to my own, and so this was really ringing true to me.<\/p>\n<p>The lean movement got it\u2019s start more in overall business process design and some higher level concepts, and Sam started reading <a href=\"http:\/\/www.poppendieck.com\/\">Mary and Tom Poppendieck<\/a> and getting more exposed to the lean movement. The intersection of agile and lean was originally presented to him as \u201cagile for the project and lean for the enterprise\u201d. So Sam read all he could, going all the way back to reading about <a href=\"http:\/\/www.processexcellencenetwork.com\/technology-for-process-improvement\/columns\/agile-software-development-learns-from-dr-deming\/\">Deming\u2019s process improvement work<\/a> in the post WWII era. Reading Deming really helped him solidify his understanding of the goals that agile has.<\/p>\n<p>As you can imagine by now, Sam is really jazzed about the increasing overlap of the lean and agile worlds.<\/p>\n<h2>Combining Lean Startup and Agile Engineering at Change.org<\/h2>\n<p><a href=\"https:\/\/www.change.org\/petitions\/take-a-stand-for-the-girl-who-stood-up-nominate-malala-for-the-nobel-peace-prize\"><img loading=\"lazy\" class=\"alignleft size-full wp-image-459\" alt=\"Screen Shot 2013-01-04 at 3.31.52 PM\" src=\"https:\/\/agilityfeat.com\/wp-content\/uploads\/2013\/01\/Screen-Shot-2013-01-04-at-3.31.52-PM.png\" width=\"313\" height=\"298\" \/><\/a>Prior to joining Change.org, Sam had already read <a href=\"http:\/\/www.startuplessonslearned.com\/\">Eric Ries\u2019 book on Lean Startups<\/a>. The team at Change.org was already embracing the \u201cBuild Measure Learn\u201d loop, but getting a little lost in the practices. They were also using scrum, but it was only marginally successful. Estimation was all over the place, and stories were not always finished. They were starting to deploy regularly manually, but it wasn\u2019t automated yet. <strong>Ultimately they decided that Scrum was holding them back<\/strong>.<\/p>\n<p>Sam reached out to Eric Ries, and asked him to get on the phone and chit chat about how Change.org was applying lean startup ideas. <strong>They decided to start separating the work at Change.org into two broad areas: 1) work on well known domains, and 2) more unknown areas where Minimum Viable Products (MVPs) would be helpful.<\/strong><\/p>\n<h2>Coding to learn<\/h2>\n<p><strong>How do you get rigorous agile TDD engineers to think like Lean Startupers?<\/strong> For Sam, it required convincing engineers that <strong>sometimes code has the sole purpose of learning a thing rather than doing a thing<\/strong>. Crossing this mental block means<strong> it\u2019s okay to throw that code away<\/strong> and not be too strict about how you code it.<\/p>\n<p>Here are a few <strong>challenges<\/strong> that Sam and Change.org ran into initially:<\/p>\n<ul>\n<li>The team had code quality very high in mind, which is great for a known problem. But when building a new business, it gets in the way of testing ideas.<\/li>\n<li>You might not keep experiments or A\/B tests &#8211; there\u2019s at least a 50% chance that you won\u2019t keep the code.<\/li>\n<li>Engineers were aghast at the waste of a lean startup process initially.<\/li>\n<li>They were afraid that quick &amp; dirty code would get integrated with the rest of the app and left there as technical debt.<\/li>\n<li>The team initially struggled to modularize the experiments, and send user segments to the experiments<\/li>\n<li>Business stakeholders had to understand that even successful tests still need to be re-engineered<\/li>\n<\/ul>\n<p>It took patience and some architectural changes, but now the team is pretty accomplished at running frequent lean experiments before they invest a lot of time in new ideas for Change.org.<\/p>\n<p><strong>Most of the experiments are a couple days to a week in length.<\/strong> They are integrated into the scrum sprints but not in a real formal way, and the <strong>experiments are not bound by the time box of the sprint<\/strong>. Product Owners have to indicate if a user story is related to an experiment or a permanent change on the site.<\/p>\n<p>From the customers\u2019 perspective, the features on the site just gradually change for users. <strong>There are no \u201cbig bang\u201d releases or big announcements.<\/strong><\/p>\n<p>On the tech side, Change.org runs a Rails stack. Their Continuous Integration (CI) system is custom designed for their needs. The team can spin up AWS server instances to run tests on production type environments.<\/p>\n<p><strong>Code deploys happen multiple times a day with small clusters of features in them.<\/strong> These deployments are not fully automated yet, but the team continues to iterate towards that.<\/p>\n<p>Automated testing is important for an environment that changes this frequently, and so the team writes RSpec and Cucumber tests at various levels of the system. Tests have to run parallelized now because the test suite is pretty large.<\/p>\n<h2>Closing thoughts<\/h2>\n<p><strong>Lean Startups help tie together business and engineering concerns.<\/strong> This is a key point to Sam, and one of the big benefits. It makes it easier to show that every decision you make is ultimately an economic decision. <strong>Will this change help us achieve some goal with our customers or not?<\/strong> No tool should be purchased or software developed until you have proven it\u2019s benefit in advance with lean experiments.<\/p>\n<p><strong>Engineers understandably want to wait to delay all code deployments until everything is perfect<\/strong>. And while it may feel dirty to deploy code that you know is not perfect, and doesn\u2019t have fully automated tests around it, <strong>you need to make a distinction between code that is intended to be permanent, and code that is a temporary experiment.<\/strong><\/p>\n<p>As Sam pointed out, even Kent Beck says it\u2019s ok to write some code without TDD. The agile engineering practices are good, but you have to understand the intent.<\/p>\n<p>The lesson I am drawing from Change.org is that if you can draw a clear line between experiments and permanent code, build an architecture that allows you to run experiments easily, and attend to the cultural concerns of engineers and the business, then <strong>you too can balance rigorous agile engineering with highly efficient and dynamic lean startup software development.<\/strong><\/p>","protected":false},"excerpt":{"rendered":"<p>How do you convince engineers that it\u2019s okay to build quick experiments, and deploy code that you will probably throw away? How do you convince rigorous engineers that it\u2019s actually more efficient to work in a lean startup style? That is a topic that Sam McAfee from Change.org addressed during a panel at the LeanStartupConference [&hellip;]<\/p>","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":""},"categories":[88,59],"tags":[5,37,19,65,86,11,32,66,15,87,60,39,35],"jetpack_featured_media_url":"","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How Change.org fit Agile Engineering in with Lean Startups - AgilityFeat Panama Software Test Center<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/agilityfeatpanama.com\/en\/blog\/2013\/01\/change-org\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Change.org fit Agile Engineering in with Lean Startups - AgilityFeat Panama Software Test Center\" \/>\n<meta property=\"og:description\" content=\"How do you convince engineers that it\u2019s okay to build quick experiments, and deploy code that you will probably throw away? How do you convince rigorous engineers that it\u2019s actually more efficient to work in a lean startup style? That is a topic that Sam McAfee from Change.org addressed during a panel at the LeanStartupConference [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/agilityfeatpanama.com\/en\/blog\/2013\/01\/change-org\/\" \/>\n<meta property=\"og:site_name\" content=\"AgilityFeat Panama Software Test Center\" \/>\n<meta property=\"article:published_time\" content=\"2013-01-04T20:55:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/agilityfeat.com\/wp-content\/uploads\/2013\/01\/Screen-Shot-2013-01-04-at-3.31.27-PM.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"6 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/34.200.113.64\/#website\",\"url\":\"https:\/\/34.200.113.64\/\",\"name\":\"AgilityFeat Panama Software Test Center\",\"description\":\"AgilityFeat Panama offers customized, multilevel web and mobile software testing for a variety of industries.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/34.200.113.64\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/agilityfeatpanama.com\/en\/blog\/2013\/01\/change-org\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/agilityfeat.com\/wp-content\/uploads\/2013\/01\/Screen-Shot-2013-01-04-at-3.31.27-PM.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/agilityfeatpanama.com\/en\/blog\/2013\/01\/change-org\/#webpage\",\"url\":\"https:\/\/agilityfeatpanama.com\/en\/blog\/2013\/01\/change-org\/\",\"name\":\"How Change.org fit Agile Engineering in with Lean Startups - AgilityFeat Panama Software Test Center\",\"isPartOf\":{\"@id\":\"https:\/\/34.200.113.64\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/agilityfeatpanama.com\/en\/blog\/2013\/01\/change-org\/#primaryimage\"},\"datePublished\":\"2013-01-04T20:55:17+00:00\",\"dateModified\":\"2013-01-04T20:55:17+00:00\",\"author\":{\"@id\":\"https:\/\/34.200.113.64\/#\/schema\/person\/c8d60d597071526db386b2b8a4afac64\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/agilityfeatpanama.com\/en\/blog\/2013\/01\/change-org\/\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/34.200.113.64\/#\/schema\/person\/c8d60d597071526db386b2b8a4afac64\",\"name\":\"arin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/34.200.113.64\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cc498e210512c707ed769986dd745896?s=96&d=mm&r=g\",\"caption\":\"arin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/agilityfeatpanama.com\/en\/wp-json\/wp\/v2\/posts\/456"}],"collection":[{"href":"https:\/\/agilityfeatpanama.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/agilityfeatpanama.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/agilityfeatpanama.com\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/agilityfeatpanama.com\/en\/wp-json\/wp\/v2\/comments?post=456"}],"version-history":[{"count":0,"href":"https:\/\/agilityfeatpanama.com\/en\/wp-json\/wp\/v2\/posts\/456\/revisions"}],"wp:attachment":[{"href":"https:\/\/agilityfeatpanama.com\/en\/wp-json\/wp\/v2\/media?parent=456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agilityfeatpanama.com\/en\/wp-json\/wp\/v2\/categories?post=456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agilityfeatpanama.com\/en\/wp-json\/wp\/v2\/tags?post=456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}