<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Continuous Delivery</title>
	<atom:link href="http://continuousdelivery.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://continuousdelivery.com</link>
	<description>Jez Humble&#039;s work blog</description>
	<lastBuildDate>Sat, 11 May 2013 01:06:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Book Review: The Phoenix Project</title>
		<link>http://continuousdelivery.com/2013/01/book-review-the-phoenix-project/</link>
		<comments>http://continuousdelivery.com/2013/01/book-review-the-phoenix-project/#comments</comments>
		<pubDate>Thu, 17 Jan 2013 01:06:47 +0000</pubDate>
		<dc:creator>jez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://continuousdelivery.com/?p=915</guid>
		<description><![CDATA[<p>I am not going to do a ton of book reviews on this blog (I have one more planned for next month). I’ll only bother posting reviews of books that I believe are both excellent and relevant to Continuous Delivery. This book easily satisfies both criteria. Full disclosure: Gene gave me a draft of this [...]]]></description>
				<content:encoded><![CDATA[<p><em>I am not going to do a ton of book reviews on this blog (I have one more planned for next month). I’ll only bother posting reviews of books that I believe are both excellent and relevant to <a href="http://continuousdelivery.com/">Continuous Delivery</a>. This book easily satisfies both criteria. Full disclosure: Gene gave me a draft of this book for free for reviewing purposes.</em></p>
<p>You’ve probably heard of Gene Kim, Kevin Behr and George Spafford before. They are the three amigos responsible for <a href="http://www.amazon.com/dp/0975568612?tag=contindelive-20">The Visible Ops Handbook</a>, which can be found in the book pile of every good IT operator. Their new book, <a href="http://www.amazon.com/dp/0988262592?tag=contindelive-20">The Phoenix Project:  A Novel About IT, DevOps, and Helping Your Business Win</a>, follows the format of Eliyahu Goldratt’s classic, <a href="http://www.amazon.com/dp/0884271951?tag=contindelive-20">The Goal</a>.</p>
<p>Told from the perspective of newly-minted VP of IT Operations Bill Palmer, it describes the turnaround of failing auto parts company Parts Unlimited. This is to be achieved through the delivery of the eponymous Phoenix Project, a classic “too big to fail” software project designed to build a system which will revive the fortunes of the company.</p>
<p><span id="more-915"></span></p>
<p>To quote (p51):</p>
<blockquote><p>
The plot is simple: First, you take an urgent date-driven project, where the shipment date cannot be delayed because of external commitments made to Wall Street or customers. Then you add a bunch of developers who use up all the time in the schedule, leaving no time for testing or operations deployment. And because no one is willing to slip the deployment date, everyone after Development has to take outrageous and unacceptable shortcuts to hit the date.</p>
<p>The results are never pretty. Usually, the software product is so unstable and unusable that even the people who were screaming for it end up saying that it’s not worth shipping. And it’s always IT Operations who still has to stay up all night, rebooting servers hourly to compensate for crappy code, doing whatever heroics are required to hide from the rest of the world just how bad things really are.
</p></blockquote>
<p>Part One of the book describes in loving detail the enormous clusterfuck pie that is baked from these ingredients. The pie is spiced with an internal Sarbanes-Oxley audit which reveals 952 control deficiencies, an outage of the payroll processing system, and various other problems that conspire to deepen the woe of the operations group, all of which are clearly drawn from the deep well of the authors’ real-life experiences.</p>
<p>Apart from the main characters &#8211; our hero Bill, his boss Steve, and the evil villain Sarah &#8211; The Phoenix Project features a delightful rogues’ gallery which anyone working in an enterprise will recognize:</p>
<ul>
<li>Brent Geller, the boy wonder whose encyclopedic knowledge of the company’s Byzantine IT systems means that his involvement is necessary to get anything done.</li>
<li>Patty McKee, the Director of Support who runs a change management process so bureaucratic that everybody bypasses it.</li>
<li>John Pesche, the black binder wielding Chief Information Security Officer whose constant meddling under the guise of improving security has turned him into a pariah.</li>
</ul>
<p>The second part of the book details how the IT group is reborn from the ashes of the Phoenix Project into a high-performing organization that is a strategic partner to the business. This is achieved through the application of a heavy dose of lean thinking (including <a href="http://www.amazon.com/dp/0321601912?tag=contindelive-20">continuous delivery</a>) administered by Erik, a mercurial IT and manufacturing guru Steve is courting to join the board. The book does an excellent job of showing &#8211; as well as telling &#8211; how to apply the concepts (and the effect of doing so) in an enterprise with plenty of technical debt. Perhaps the most eyebrow-raising part of this section is the way in which John has his soul mercilessly crushed to the point where he goes on a multi-day drinking spree before he is rehabilitated towards the end of the book (he is a phoenix too).</p>
<p>John’s narrative arc is just one example of how the book also succeeds as a novel. It’s gripping, with moments of drama and high emotion, as well as some great one-liners. There was even one point when I teared up (bear in mind that I also cried during Forrest Gump &#8211; unlike the book’s central characters, I did not serve in the armed forces). </p>
<p>Nobody who has read <em>The Goal</em> will miss <em>The Phoenix Project</em>’s similarity in terms of style and plot. Perhaps my favourite thing about the book’s pedagogical style is the way Erik (like Jonah in <em>The Goal</em>) uses the Socratic Method to give Bill the tools to solve his problems by himself. Of course this learning process is fictional, but it means you get to see Bill struggling with the questions and trying things out.</p>
<p>It remains to be seen whether readers of the book will be able to apply these techniques as successfully as Bill without a real Erik to guide them. But of course, this is a limitation of any book. If I had one criticism it’s that unlike real life, there aren’t many experiments in the book that end up making things worse, and it’s this process of failing fast, learning from your failures, and coming up with new experiments that is instrumental to a real learning culture.</p>
<p>One important point worth noting if you are working in an organization like Parts Unlimited is this: the IT department’s rebirth is only possible because of the Titanic proportions of the disaster that unfolds in Part One. For management to truly embrace change, a compelling event or a teachable moment (i.e. a Charlie Foxtrot) is required. Unless your organization faces the same existential threat that Parts Unlimited does, you’ll have a much harder time convincing people they should adopt the tools described in the book.</p>
<p>Overall, <em>The Phoenix Project</em> is a fantastic read. It’s entertaining, cathartic, inspirational and informative. If, like me, you have an enormous backlog of books (and more work in process than you’d like) I suggest giving yourself a break and putting this one to the top of your list. It’ll only take you a day or two, and despite its conceptual density it will leave you feeling refreshed and energized with a bunch of new ideas to try out. <a href="http://www.amazon.com/dp/0988262592?tag=contindelive-20">The Phoenix Project</a> deserves to be read by everyone who works in &#8211; or with &#8211; IT.</p>
]]></content:encoded>
			<wfw:commentRss>http://continuousdelivery.com/2013/01/book-review-the-phoenix-project/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>On Antifragility in Systems and Organizational Architecture</title>
		<link>http://continuousdelivery.com/2013/01/on-antifragility-in-systems-and-organizational-architecture/</link>
		<comments>http://continuousdelivery.com/2013/01/on-antifragility-in-systems-and-organizational-architecture/#comments</comments>
		<pubDate>Wed, 09 Jan 2013 22:29:25 +0000</pubDate>
		<dc:creator>jez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://continuousdelivery.com/?p=901</guid>
		<description><![CDATA[<p>In his new book, Antifragile, Nassim Taleb discusses the behaviour of complex systems and distinguishes three kinds: those that are fragile, those that are robust or resilient, and those that are antifragile. These types of systems differ in how they respond to volatility: “The fragile wants tranquility, the antifragile grows from disorder, and the robust [...]]]></description>
				<content:encoded><![CDATA[<p>In his new book, <a href="http://www.amazon.com/dp/1400067820?tag=contindelive-20">Antifragile</a>, Nassim Taleb discusses the behaviour of complex systems and distinguishes three kinds: those that are fragile, those that are robust or resilient, and those that are antifragile. These types of systems differ in how they respond to volatility: “The fragile wants tranquility, the antifragile grows from disorder, and the robust doesn’t care too much.” (p20) Taleb argues that we want to create systems that are antifragile &#8211; that are designed to take advantage of volatility. I think this concept is incredibly powerful when applied to systems and organizational architecture.</p>
<p><span id="more-901"></span></p>
<h3>Why Continuous Delivery Works</h3>
<p>Taleb shows why the traditional approach of operations &#8211; making change hard, since change is risky &#8211; is flawed: “the problem with artificially suppressed volatility is not just that the system tends to become extremely fragile; it is that, at the same time, it exhibits no <em>visible</em> risks&#8230; These artificially constrained systems become prone to Black Swans. Such environments eventually experience massive blowups&#8230; catching everyone off guard and undoing years of stability or, in almost all cases, ending up far worse than they were in their initial volatile state” (p105)<sup><a href="#1">1</a></sup>.</p>
<p>This a great explanation of how many attempts to manage risk actually result in <a href="http://continuousdelivery.com/2012/10/theres-no-such-thing-as-a-devops-team/">risk management theatre</a> &#8211; giving the appearance of effective risk management while actually making the system (and the organization) extremely fragile to unexpected events. It also explains why <a href="http://www.amazon.com/dp/0321601912?tag=contindelive-20">continuous delivery</a> works. The most important heuristic we describe in the book is “if it hurts, do it more often, and bring the pain forward.” The effect of following this principle is to exert a constant stress on your delivery and deployment process to reduce its fragility so that releasing becomes a boring, low-risk activity.</p>
<h3>Antifragile Systems</h3>
<p>Another of Taleb’s key claims is that it is impossible to predict “Black Swan” events: “you cannot say with any reliability that a certain remote event or shock is more likely than another&#8230; but you can state with a lot more confidence that an object or a structure is more fragile than another should a certain event happen.” (p8). Thus we need “to switch the blame from the inability to see an event coming&#8230; to the failure to understand (anti)fragility, namely, ‘why did we build something so fragile to these types of events?’” (p136).</p>
<p>Unlike risk, fragility is actually measurable. How do we measure the fragility of the systems we build? We try to break them, using techniques such as <a href="http://queue.acm.org/detail.cfm?id=2371297">game days</a> and systems like <a href="http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html">chaos monkey</a>. The systematic application of stress to your systems is essential &#8211; not just to ensure your systems are antifragile, but to develop the muscles of the people who create and maintain them through constant practice. After all, it’s the combination of the system and the people who build and run it that has the quality of antifragility.</p>
<p>In this context, an important quality of legacy systems is their fragility. Legacy systems that aren’t touched for a long time will turn into fragile “works of art”: changing them is considered risky, the number of people who understand the system decreases with time, and their knowledge atrophies from lack of exercise.</p>
<p>How do we create antifragile systems? Apply stress to them continuously so we are forced to simplify, homogenise, and automate. </p>
<h3>Antifragile Organizations</h3>
<p>We can measure the fragility of an organization by how long it takes before it liquidates its assets. Deloitte’s <em>Shift Index</em> shows that the average life expectancy of a Fortune 500 company has declined from around 75 years half a century ago to less than 15 years today.</p>
<p>Start-ups are notoriously fragile. But the ones that survive and grow turn into something potentially more dangerous &#8211; robust organizations. The problem with robust organizations is that they resist change. They aren’t quickly killed by changes to their environment, but they don’t adapt to them either &#8211; they die slowly. We see this effect all the time &#8211; changing the culture of an established organization is incredibly hard.</p>
<p>Antifragile organizations are those that have a culture that enables them to learn fast from their environment and adapt to it so they can take advantage of volatility. Here are some characteristics of antifragile organizations:</p>
<ul>
<li><strong>Systems thinking.</strong> Everybody in the organization knows the goals of the organization and makes sure their work is directly contributing towards these goals.</li>
<li><strong>Theory Y Management.</strong> Management needs to assume employees are self-motivated and will be able to learn how to solve problems themselves. Organizations need to make sure they hire antifragile people who will thrive in this environment. As Daniel Pink’s <a href="http://www.amazon.com/dp/1594484805?tag=contindelive-20">Drive</a> points out, giving your employees autonomy, purpose, and the opportunity to learn and master new skills is what stops them from quitting, thus increasing the antifragility of your organization.</li>
<li><strong>Continuous experimentation.</strong> As described in <a href="http://www.amazon.com/dp/0071635238?tag=contindelive-20">Toyota Kata</a>, good management knows that the best solutions come from the workers. They create an environment in which practitioners are able to run experiments to learn as rapidly as possible. The feedback loops in command and control organizations are too slow for them to adapt effectively.</li>
<li><strong>Disruptive product development.</strong> Antifragile organizations aren’t content with stress generated by their environment. Like humans exercising, they also try and disrupt themselves (the organizational equivalent of a game day). For example, <a href="http://blogs.hbr.org/ideacast/2013/01/jeff-bezos-on-leading-for-the.html">Amazon cannibalized its own business</a>, creating the Amazon Marketplace and the Kindle. Apple is <a href="http://blogs.hbr.org/cs/2011/10/steve_jobs_solved_the_innovato.html">cannibalizing its Mac business</a> with the iPad. Fragile organizations resist disrupting their own product lines, as <a href="http://spectrum.ieee.org/semiconductors/processors/25-microchips-that-shook-the-world/5">Toshiba did at first with flash memory</a>. If you do a good job at this you never need to worry about the competition &#8211; you’ll always beat them to it.</li>
</ul>
<h3>Fragility and Agility</h3>
<p>As Taleb points out, “antifragility is desirable in general, but not always, as there are cases in which antifragility will be costly, extremely so. Further, it is hard to consider robustness as always desirable&#8212;to quote Nietzsche, one can die from being immortal.” (p22) Of course working out where on the spectrum you want your systems and your organization to lie is an art, and the great artists are those that know how to build systems, organizations, and products simply, quickly and cheaply so that they are antifragile with respect to our biggest enemy: time. How do they do that? Using the same heuristics described in “antifragile organizations”, above, which closely mirror the <a href="http://itrevolution.com/the-three-ways-principles-underpinning-devops/">Three Ways of Devops</a>.</p>
<p>As I read <a href="http://www.amazon.com/dp/1400067820?tag=contindelive-20">Antifragile</a>, it reminded me of something I read a number of years ago: Kent Beck and Cynthia Andres’ <a href="http://www.amazon.com/dp/0321278658?tag=contindelive-20">Extreme Programming Explained</a>. The subtitle? Embrace Change. It strikes me that the concept of antifragile is what we were aiming for with agile the whole time: building systems (including human systems &#8211; organizations) that benefit from volatility.</p>
<hr/>
<h4>Endnotes</h4>
<p>Thanks to <a href="https://twitter.com/badrij">Badrinath Janakiraman</a> for feedback on an earlier draft of this post.</p>
<p><a name="1">1</a> He is talking about financial markets, which are rather less fragile than IT systems, hence his rather generous “years of stability”</p>
]]></content:encoded>
			<wfw:commentRss>http://continuousdelivery.com/2013/01/on-antifragility-in-systems-and-organizational-architecture/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>There&#8217;s No Such Thing as a &#8220;Devops Team&#8221;</title>
		<link>http://continuousdelivery.com/2012/10/theres-no-such-thing-as-a-devops-team/</link>
		<comments>http://continuousdelivery.com/2012/10/theres-no-such-thing-as-a-devops-team/#comments</comments>
		<pubDate>Fri, 19 Oct 2012 19:02:22 +0000</pubDate>
		<dc:creator>jez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://continuousdelivery.com/?p=827</guid>
		<description><![CDATA[<p>Translations: 한국말</p> <p>&#8220;it&#8217;s possible for good people, in perversely designed systems, to casually perpetrate acts of great harm on strangers, sometimes without ever realising it.&#8221; &#8212; Ben Goldacre, Bad Pharma, p. xi</p> <p>In a fit of rage caused by reading yet another email in which one of our customers proposed creating a &#8220;devops team&#8221; so [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Translations: </strong> <a href="http://cdkr.egloos.com/1570903">한국말</a></p>
<blockquote><p>&#8220;it&#8217;s possible for good people, in perversely designed systems, to casually perpetrate acts of great harm on strangers, sometimes without ever realising it.&#8221; &#8212; <a href="http://www.badscience.net/">Ben Goldacre</a>, <a href="http://www.amazon.com/dp/0865478007?tag=contindelive-20"><em>Bad Pharma</em></a>, p. xi</p></blockquote>
<p>In a fit of rage caused by reading yet another email in which one of our customers proposed creating a &#8220;devops team&#8221; so as to &#8220;implement&#8221; devops, I tweeted that &#8220;THERE IS NO SUCH THING AS A DEVOPS TEAM.&#8221; Like all slogans, there&#8217;s plenty of heat to go with the light, so here&#8217;s the scoop: the Devops movement addresses the dysfunction that results from organizations composed of functional silos. Thus, creating <em>another</em> functional silo that sits between dev and ops is clearly a poor (and ironic) way to try and solve these problems. Devops proposes instead strategies to create better collaboration between functional silos, or doing away with the functional silos altogether and creating cross-functional teams (or some combination of these approaches).</p>
<p><span id="more-827"></span></p>
<h3>Why are Functional Silos Problematic?</h3>
<p>Functional silos often get created in reaction to a problem (which they inevitably exacerbate). At the beginning of <a href="http://continuousdelivery.com/2012/10/elisabeth-hendrickson-discusses-agile-testing/">an interview with Elisabeth Hendrickson</a> I posted recently, she discusses working at a product company which was suffering a series of quality problems. As a result, they hired a VP of QA who set up a QA division. The net result of this, counterintuitively, was to <em>increase</em> the number of bugs. One of the major causes of this was that developers felt that they were no longer responsible for quality, and instead focussed on getting their features into &#8220;test&#8221; as quickly as they could. Thus they paid less attention to making sure the system was of high quality in the first place, which in turn put more stress on the testers. This created a death spiral of increasingly poor quality, which led to increasing stress on the testers, and so on. Elisabeth wrote this up in a paper called <a href="http://testobsessed.com/wp-content/uploads/2011/04/btwq.pdf">&#8220;Better testing &#8211; worse quality?&#8221;</a> back in 2001.</p>
<p>The fundamental problem is this: Bad behavior arises when you abstract people away from the consequences of their actions. Functional silos abstract people away from the consequences of their actions. In the example above, developers are abstracted away from the consequences of writing buggy code.</p>
<p>The essence of Devops, I believe, is to design a system in which people <em>are</em> held responsible for the consequences of their actions &#8211; and indeed, one in which the right thing to do is also the easiest thing to do.</p>
<p>There are two steps involved in doing this:</p>
<ol>
<li><strong>Make people <em>aware</em> of the consequences of their actions.</strong> You can do this by having developers rotate through operations teams, by having operations people attend developer standups and showcases, running lunch and learn sessions, having people blog, or just by going and grabbing lunch with someone working in a different functional silo to yours.</li>
<li><strong>Make people <em>responsible</em> for the consequences of their actions.</strong> This is where things get serious. You can achieve this by having developers carry pagers, or own the service level agreements for the products and services they build (for example, the dev team is L3 support, and is on the hook for the uptime of the service).</li>
</ol>
<div class="warning">A major reason people can&#8217;t move to step two in the plan is that most large organizations just aren&#8217;t set up in a way that makes this possible. The culprit here is the fact that software development efforts are usually run as if they were civil engineering projects. When a project is complete, the system gets tossed over the wall to operations to run and maintain as part of a &#8220;business as usual&#8221; effort, and all the people in the project team get reallocated to new work. <a href="http://evan.bottch.com/2010/08/29/projects-are-evil-and-must-be-destroyed/">The project model is fundamentally flawed</a> as a way of doing software development &#8211; software development should be treated as <a href="http://www.amazon.com/dp/1935401009?tag=contindelive-20">product development</a> instead.</div>
<p>The best way of all to make people responsible for the consequences of their actions is to create <a href="http://continuousdelivery.com/2011/12/organize-software-delivery-around-outcomes-not-roles/">cross-functional teams</a> for each product or service. As Werner Vogels, CTO of Amazon, <a href="http://queue.acm.org/detail.cfm?id=1142065">says</a>: &#8220;you build it, you run it.&#8221; (It&#8217;s worth reading <a href="http://queue.acm.org/detail.cfm?id=1142065">this excellent interview</a> in full).</p>
<p>A really bad way to try and solve this problem is to insert <em>another</em> layer of indirection between the dev and ops team, and call it a &#8220;devops team&#8221;. This is what I mean when I am arguing against creating a &#8220;devops team&#8221; &#8211; in addition to the existing dev and ops teams &#8211; whose job is to be on the hook for the deployment of the system (these teams were traditionally called &#8220;release management&#8221; before devops became trendy).</p>
<h3>Why Segregation of Duties Doesn&#8217;t Work</h3>
<p>Sometimes, people argue that this model is impossible because of some law or regulation (for example, Sarbanes-Oxley, PCI-DSS) or some framework (ITIL, COBIT) which mandates segregation of duties. Segregation of duties is essentially the idea that the fox shouldn&#8217;t guard the henhouse: that the job of the testing or operations group is to act as a set of checks and balances to prevent fraud or buggy code created by developers getting into production.</p>
<p>It&#8217;s important to point out first of all that this approach doesn&#8217;t work, for exactly the reasons discussed in Elisabeth Hendrickson&#8217;s paper. It&#8217;s an example of what I call &#8220;risk management theatre&#8221; (by analogy with <a href="http://www.vanityfair.com/culture/features/2011/12/tsa-insanity-201112">security theatre</a>) &#8211; like the TSA&#8217;s enhanced airport security, it &#8220;accomplish[es] nothing at enormous cost&#8221;, giving the impression that you&#8217;re managing the risk of making changes to the production environment, while actually making the situation worse.</p>
<p>A colleague of mine discusses a (thankfully retired) change management process at a large European manufacturer which involves developers filling in a spreadsheet with <em>seven tabs</em> which then gets emailed to a change manager in another country who has to decide whether or not to approve it. The change manager has <em>no clue</em> what&#8217;s written in the spreadsheet, and talks to the developers to understand if the change is risky and what mitigation strategies are in place. The developers know this, and do the minimum possible amount of work to fill in the spreadsheet. The change manager knows the developers are not doing the most thorough job with the spreadsheet, but it makes no difference to them, so long as the spreadsheet gets submitted.</p>
<p>This is not risk management, it&#8217;s risk management theatre.</p>
<p>And this argument &#8211; that collaboration between silos, or even cross-functional teams, is forbidden by regulation or &#8220;best practice&#8221; &#8211; is an example of what we in the consulting industry call a <em>bullshit smokescreen</em>. So let me be clear about this. Sarbanes-Oxley, ITIL and COBIT <em>nowhere</em> mandate segregation of duties. COBIT v5 doesn&#8217;t even <em>have</em> a control called &#8220;segregation of duties&#8221;. PCI-DSS <em>does</em> require segregation of duties in its current form, but that doesn&#8217;t mean people can&#8217;t collaborate. I recently filmed Michael Rembetsy, director of operations engineering at Etsy, talking about <a href="http://continuousdelivery.com/2012/07/pci-dss-and-continuous-deployment-at-etsy/">how they implement segregation of duties at Etsy in order to achieve PCI-DSS compliance</a>.</p>
<h3>The Role of Operations</h3>
<p>OK so I lied when I said there&#8217;s no such thing as a devops team.</p>
<p>For developers to take responsibility for the systems they create, they need support from operations to understand how to build <a href="http://discursive.com/interviews/interview-transcript-jesse-robbins-on-oreilly-radar/">reliable software that can be continuous deployed to an unreliable platform that scales horizontally</a>. They need to be able to self-service environments and deployments. They need to understand how to write <a href="http://www.amazon.com/dp/0321503627?tag=contindelive-20">testable</a>, <a href="http://www.amazon.com/dp/0132350882?tag=contindelive-20">maintainable</a> code. They need to know how to do packaging, deployment, and post-deployment support.</p>
<p>Somebody needs to support the developers in this, and if you want to call the people who do that the &#8220;devops team&#8221;, then I&#8217;m OK with that. The crucial thing is this: <strong>the &#8220;devops team&#8221; is not on the hook for the systems that get built, or for deploying them, or writing the build and deployment scripts, or for the operation of those systems</strong>. Nor should there be <a href="http://gun.io/blog/how-to-hire-devops/">&#8220;devops specialists&#8221;</a> on development teams doing this work: this is core developer work, the same as writing code, and developers need to own it.</p>
<p>Here&#8217;s what the devops team does in this model:</p>
<ul>
<li>Builds <a href="http://perfcap.blogspot.com/2012/03/ops-devops-and-noops-at-netflix.html">a platform</a> that allows developers to self-service environments for testing and production (and deployments to those environments) and provides metrics to the organization as a whole. This platform is a product, and the team that builds it is doing <a href="http://www.amazon.com/dp/1935401009?tag=contindelive-20">product development</a>, which (in particular) means the people who use the platform are <em>your customers</em>.</li>
<li>Provides a <a href="http://code.google.com/p/devops-toolchain/">toolchain</a> that developers can use to build, test, deploy and run their systems.</li>
<li>Coaches teams working to move to this model and provides support and training for the platform and toolchain.</li>
</ul>
<p>Really this is all part of the work of operations. But if you want to call the people who do it your &#8220;devops team&#8221; then that&#8217;s cool too.</p>
<hr/>
<p><strong>Further Reading</strong></p>
<ul>
<li>I am all in favour of change management, so long as it is done in a lightweight manner, as described <a href="http://continuousdelivery.com/2010/11/continuous-delivery-and-itil-change-management/">here</a>.</li>
<li>My colleague Joanne Molesky and I wrote a paper which talks about devops, continuous delivery and risk management in an enterprise context for Cutter IT Journal. You can download it for free <a href="http://www.cutter.com/offers/devopsrevolution.html">here</a>.</li>
<li>I gave a talk which expands on a number of these issues at GOTO Aarhus in 2011. <a href="http://www.infoq.com/presentations/Scaling-Devops">Video</a> | <a href="http://www.slideshare.net/jezhumble/scaling-devops">Slides</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://continuousdelivery.com/2012/10/theres-no-such-thing-as-a-devops-team/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Elisabeth Hendrickson Discusses Agile Testing</title>
		<link>http://continuousdelivery.com/2012/10/elisabeth-hendrickson-discusses-agile-testing/</link>
		<comments>http://continuousdelivery.com/2012/10/elisabeth-hendrickson-discusses-agile-testing/#comments</comments>
		<pubDate>Fri, 19 Oct 2012 00:39:39 +0000</pubDate>
		<dc:creator>jez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://continuousdelivery.com/?p=830</guid>
		<description><![CDATA[<p>This is the third in a series of interviews on continuous delivery, this time with Elisabeth Hendrickson. You can see the first one, with Jesse Robbins, on the ThoughtWorks Studios Blog, and the second, with John Allspaw, here. These interviews will eventually be put together &#8211; along with some additional exclusive material &#8211; into a [...]]]></description>
				<content:encoded><![CDATA[<p>This is the third in a series of interviews on continuous delivery, this time with Elisabeth Hendrickson. You can see the first one, with Jesse Robbins, on the <a href="http://www.thoughtworks-studios.com/content/jesse-robbins-discusses-devops-and-cloud-computing">ThoughtWorks Studios Blog</a>, and the second, with John Allspaw, <a href="http://continuousdelivery.com/2012/09/john-allspaw-discusses-devops/">here</a>. These interviews will eventually be put together &#8211; along with some additional exclusive material &#8211; into a set of <a href="http://www.pearsonhighered.com/educator/series/LiveLessons/copyright_year/10662.page">LiveLessons</a>, with the royalties going to <a href="http://www.blackgirlscode.com/">Black Girls Code</a>. If you want to be notified when the final product is released, please <a href="http://continuousdelivery.com/sign-up-for-my-newsletter/">sign up for my newsletter</a>.</p>
<p>Elisabeth has held positions as a tester, developer, manager, and quality engineering director in a variety of companies ranging from small startups to multi-national enterprises. She has been a member of the Agile community since 2003, served on the board of directors of the Agile Alliance in 2007/2008, and is currently one of the co-organizers of the Agile Alliance Functional Testing Tools program. Elisabeth won the prestigious Gordon Pask award in 2010 and is the author of two books: <a href="https://leanpub.com/alwaysaduck">There&#8217;s Always a Duck</a> and the forthcoming <a href="http://pragprog.com/book/ehxta/explore-it">Explore It! Reduce Risk and Increase Confidence with Exploratory Testing</a> published by the Pragmatic Programmers. She is the founder of Quality Tree Software, runs Agilistry Studio, and is the creator of <a href="http://entaggle.com/">entaggle.com</a>. You can find her at <a href="http://testobsessed.com/">testobsessed.com</a> and <a href="http://twitter.com/testobsessed">@testobsessed</a></p>
<p>In the video, Elisabeth answers the following questions:</p>
<ul>
<li>What&#8217;s been your experience of the evolution of the testing and QA role in the IT industry?</li>
<li>Why doesn&#8217;t separation of duties between engineers and testers work? (01:49)</li>
<li>What are the problems with the hierarchies you sometimes see within testing organizations? (04:30)</li>
<li>What&#8217;s wrong with the approach of writing and executing manual test scripts? (07:53)</li>
<li>Does record and playback help to solve some of these problems? (08:48)</li>
<li>So the current paradigm for building quality in to software is acceptance-test driven development. Talk us through ATDD. (10:04)</li>
<li>What does what in ATDD? (11:19)</li>
<li>What proportion of time is spent on production code vs test code? (14:15)</li>
<li>How do you get from a typical &#8220;enterprise&#8221; testing strategy to ATDD? (17:30)</li>
<li>When implementing automated acceptance tests, where do you start? (21:31)</li>
<li>How has continuous deployment changed the way you approach software delivery? (23:43)</li>
<li>How do you go from releasing once every 3-6 months to releasing once a day? (26:36)</li>
</ul>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/ghZAqphDbEA" frameborder="0" allowfullscreen></iframe></p>
<p>If you can&#8217;t see the content, <a href="http://youtube.com/watch?v=ghZAqphDbEA">go straight to the video on YouTube</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://continuousdelivery.com/2012/10/elisabeth-hendrickson-discusses-agile-testing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Continuous Delivery: The Case of Apple</title>
		<link>http://continuousdelivery.com/2012/10/continuous-delivery-the-case-of-apple/</link>
		<comments>http://continuousdelivery.com/2012/10/continuous-delivery-the-case-of-apple/#comments</comments>
		<pubDate>Thu, 04 Oct 2012 15:39:31 +0000</pubDate>
		<dc:creator>jez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://continuousdelivery.com/?p=704</guid>
		<description><![CDATA[<p>Translations: 中文</p> <p>The case of Apple sometimes comes up in discussions around continuous delivery and the lean startup. For example, Richard Durnall described Apple&#8217;s strategy to me on Twitter as follows:</p> <p>Brilliant and unwavering product vision from a few amazing folks going to market infrequently with huge ceremony.</p> <p>That seems to be the exact opposite [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Translations:</strong> <a href="http://www.continuousdelivery.info/index.php/2012/11/14/case_study_apple/">中文</a></p>
<p>The case of Apple sometimes comes up in discussions around continuous delivery and the lean startup. For example, <a href="http://www.richarddurnall.com/">Richard Durnall</a> <a href="http://twitter.com/rdurnall/status/147149221403955200">described Apple&#8217;s strategy</a> to me on Twitter as follows:</p>
<blockquote><p>Brilliant and unwavering product vision from a few amazing folks going to market infrequently with huge ceremony.</p></blockquote>
<p>That seems to be the exact opposite of what both lean startup and continuous delivery preach. It&#8217;s hard to know what happens behind the scenes at Apple because of their notorious secrecy about their product development process. Furthermore, there&#8217;s no way of knowing if the information we do have accurately represents what really goes on there. But if we look at Apple&#8217;s history, there are a couple of examples that strongly suggest that the principles behind continuous delivery and the lean startup were very much in play in Apple&#8217;s early years.</p>
<p><span id="more-704"></span></p>
<p>Exhibit A is the <a href="http://en.wikipedia.org/wiki/Apple_I">Apple I</a>. Created in Steve Wozniak&#8217;s parents&#8217; garage, and sold without a keyboard, display, power transformers or even a case, it is &#8211; as <a href="http://twitter.com/ericries">Eric Ries</a> has <a href="http://www.wired.co.uk/magazine/archive/2012/07/features/the-upstart?page=all">pointed out</a> &#8211; a great example of a minimum viable product.</p>
<div id="attachment_712" class="wp-caption aligncenter" style="width: 522px"><a href="http://www.flickr.com/photos/78147607@N00/281712899"><img src="http://continuousdelivery.com/wp-content/uploads/2012/08/640px-Apple_I_Computer.jpg" alt="Apple I on display at the Smithsonian, taken by Ed Uthman" title="640px-Apple_I_Computer" width="512" height="389" class="size-full wp-image-712" /></a><p class="wp-caption-text">Apple I on display at the Smithsonian, taken by Ed Uthman</p></div>
<p>Exhibit B is <a href="http://www.folklore.org/StoryView.py?project=Macintosh&#038;story=The_Macintosh_Spirit.txt">&#8220;The Macintosh Spirit&#8221;<a>, an entry from <a href="http://www.folklore.org">folklore.org</a> &#8211; the excellent compilation of stories from the creation of the original Macintosh, submitted by members of the team that built it.</p>
<p>This entry &#8211; which describes &#8220;The attitudes and values of the team forged the spirit of the Macintosh&#8221; &#8211; is short and worth reading in full (as is the whole site if you have the time &#8211; it&#8217;s available in <a href="http://www.amazon.com/dp/1449316247?tag=contindelive-20">book form</a> too). Here&#8217;s a paragraph describing the Macintosh team&#8217;s product development process (my italics):</p>
<blockquote><p>
Other groups at Apple had an elaborate formal product development process, mandating lengthy product requirement documents and engineering specifications before implementation commenced. In contrast, the Mac team favored a more creative, flexible, incremental approach of successively refining prototypes. Burrell Smith developed a unique hardware design style based on programmable array logic chips (PAL chips), which enabled him to make changes much faster than traditional techniques allowed, almost with the fluidity of software. Instead of arguing about new software ideas, we actually tried them out by writing quick prototypes, keeping the ideas that worked best and discarding the others (see <a href="http://www.folklore.org/StoryView.py?project=Macintosh&#038;story=Busy_Being_Born.txt">Busy Being Born</a>). <em>We always had something running that represented our best thinking at the time.</em>
</p></blockquote>
<p>Given that we&#8217;re talking about events that were happening 20 years ago, it&#8217;s hard to improve on this as a description of how to do continuous delivery on an embedded system<sup><a href="#1">1</a></sup>. This example also resolves a common misconception &#8212; just because you&#8217;re &#8220;going to market infrequently with huge ceremony&#8221; doesn&#8217;t mean you can&#8217;t do continuous delivery (which is why I am careful to distinguish <a href="/2010/08/continuous-delivery-vs-continuous-deployment/">continuous delivery and continuous deployment</a>, and also to differentiate between the terms <a href="http://www.informit.com/articles/article.aspx?p=1833567&#038;seqNum=2">&#8220;deployment&#8221; and &#8220;release&#8221;</a>). Rather, continuous delivery is one of the things that enables successful &#8220;high ceremony&#8221; launches: if you&#8217;re doing it right, the high-risk technical work happens long before the product launch, which becomes purely a marketing event &#8211; in the case of the Macintosh, <a href="http://en.wikipedia.org/wiki/1984_(advertisement)">one of the most spectacular</a> in advertising history.</p>
<div id="attachment_718" class="wp-caption aligncenter" style="width: 315px"><a href="http://continuousdelivery.com/wp-content/uploads/2012/08/Ad_apple_1984.jpg"><img src="http://continuousdelivery.com/wp-content/uploads/2012/08/Ad_apple_1984.jpg" alt="&#039;1984&#039; commercial for the launch of the Macintosh" title="&#039;1984&#039; commercial for the launch of the Macintosh" width="305" height="228" class="size-full wp-image-718" /></a><p class="wp-caption-text">&#8217;1984&#8242; commercial for the launch of the Macintosh</p></div>
<hr />
<a name="1">1</a> For a more up-to-date example, <a href="http://click.linksynergy.com/fs-bin/click?id=u1SWcCtRjd8&#038;subid=&#038;offerid=145238.1&#038;type=10&#038;tmpid=3559&#038;RD_PARM1=http%253A%252F%252Fwww.informit.com%252Ftitle%252F0321821726">check out</a> how the HP LaserJet firmware team moved to a continuous delivery model, including checking in to trunk to do continuous integration, and performing automated functional testing using real logic boards to test the processing algorithms and timing.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://continuousdelivery.com/2012/10/continuous-delivery-the-case-of-apple/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>John Allspaw Discusses Devops and Continuous Delivery</title>
		<link>http://continuousdelivery.com/2012/09/john-allspaw-discusses-devops/</link>
		<comments>http://continuousdelivery.com/2012/09/john-allspaw-discusses-devops/#comments</comments>
		<pubDate>Tue, 25 Sep 2012 22:03:09 +0000</pubDate>
		<dc:creator>jez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://continuousdelivery.com/?p=790</guid>
		<description><![CDATA[<p>This is the second in a series of interviews on continuous delivery, this time with John Allspaw, one of my co-authors on the Devops Cookbook. You can see the first one, with Jesse Robbins, on the ThoughtWorks Studios Blog. These interviews will eventually be put together &#8211; along with some additional exclusive material &#8211; into [...]]]></description>
				<content:encoded><![CDATA[<p>This is the second in a series of interviews on continuous delivery, this time with John Allspaw, one of my co-authors on the <a href="http://itrevolution.com/books/the-devops-cookbook/">Devops Cookbook</a>. You can see the first one, with Jesse Robbins, on the <a href="http://www.thoughtworks-studios.com/content/jesse-robbins-discusses-devops-and-cloud-computing">ThoughtWorks Studios Blog</a>. These interviews will eventually be put together &#8211; along with some additional exclusive material &#8211; into a set of <a href="http://www.pearsonhighered.com/educator/series/LiveLessons/copyright_year/10662.page">LiveLessons</a>, with the royalties going to <a href="http://www.blackgirlscode.com/">Black Girls Code</a>. If you want to be notified when the final product is released, please <a href="http://continuousdelivery.com/sign-up-for-my-newsletter/">sign up for my newsletter</a>.</p>
<p>John Allspaw has worked in systems operations for over fourteen years in biotech, government and online media. He started out tuning parallel clusters running vehicle crash simulations for the U.S. government, and then moved on to the Internet in 1997. He built the backing infrastructures at Salon, InfoWorld, Friendster, and Flickr. He is now SVP of Tech Operations at Etsy, and is the author of <a href="http://www.amazon.com/dp/0596518579?tag=contindelive-20">The Art of Capacity Planning</a> and <a href="http://www.amazon.com/dp/1449377440?tag=contindelive-20">Web Operations</a> published by O&#8217;Reilly. He blogs at <a href="http://www.kitchensoap.com">kitchensoap.com</a></p>
<p>In the video, John answers the following questions:</p>
<ul>
<li>What is devops? Why now?</li>
<li>What did Flickr do differently that worked? How did you apply that at Etsy?</li>
<li>How did you take Etsy from painful releases to continuous deployment?</li>
<li>How about larger organizations? Does continuous delivery impose more risk?</li>
<li>What&#8217;s the role of operations in an organization that wants to practice devops?</li>
<li>Is there still room for specialization in the devops model?</li>
<li>What advice would you give developers who want to do continuous deployment?</li>
<li>How do you reduce the risk of releases?</li>
<li>How do you create resilient systems on the web?</li>
<li>How do you deal with databases in the world of continuous delivery?</li>
</ul>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/f49pCUT1XAU" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://continuousdelivery.com/2012/09/john-allspaw-discusses-devops/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Why Software Development Methodologies Suck</title>
		<link>http://continuousdelivery.com/2012/08/why-software-development-methodologies-suck/</link>
		<comments>http://continuousdelivery.com/2012/08/why-software-development-methodologies-suck/#comments</comments>
		<pubDate>Thu, 02 Aug 2012 08:00:31 +0000</pubDate>
		<dc:creator>jez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://continuousdelivery.com/?p=669</guid>
		<description><![CDATA[<p>Translations: 中文 &#124; 한국말 There’s a lot of dogma in the religious wars around software development practices and methodologies. Are phase-gate methodologies effective at managing the risk of software development, or just risk management kabuki? Does TDD really make for higher quality software? Is pair programming a superior replacement for code review or just a [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Translations:</strong> <a href="http://www.continuousdelivery.info/index.php/2013/01/04/why_methodologies_suck/">中文</a> | <a href="http://cdkr.egloos.com/1628313">한국말</a><br />
There’s a lot of dogma in the religious wars around software development practices and methodologies. Are phase-gate methodologies effective at managing the risk of software development, or just risk management kabuki? Does TDD really make for higher quality software? Is pair programming a superior replacement for code review or just a way to inflate consulting rates? I&#8217;m going to argue that while scientific evidence to decide these claims is lacking, there are two general principles which can help us choose good practices while at the same time improving the value of the software we deliver: reduce cycle time and increase feedback.</p>
<p><span id="more-669"></span></p>
<p>Michael Feathers makes the following observation:</p>
<blockquote><p>
I think that, in the end, we just have to accept that developer skill is a far more significant variable than language choice or methodological nuances<sup><a href="#1">1</a></sup>.  Frankly, I think we all know that, but we seem to suffer from the delusion that they are the primary knobs to tweak.  Maybe it&#8217;s an extension of the deeply held view that from an economic viewpoint, it would be ideal if people were interchangeable.
</p></blockquote>
<p>The problem is, how do we get skilled developers? Since the concept of individual productivity in IT has never been satisfactorily defined, this is a particularly hard problem to solve. <a href="http://folklore.org/StoryView.py?story=Negative_2000_Lines_Of_Code.txt">Lines of code</a> &#8211; still a popular measure &#8211; suffers from the devastating flaw that a line of code is a liability, not an asset as is often thought. Measuring number of hours worked encourages heroic behavior &#8211; but experience shows that the <a href="http://testobsessed.com/2008/12/beware-the-hero/">“heroes” are usually the same people that cause projects to become late through taking unacceptable risks early on</a>, and working long hours makes people stupid and leads to poor quality software. There is still no generally accepted set of professional standards or chartering system for IT professionals, and recruiting good people is very much an art rather than a science.</p>
<p>Psychologists have at least addressed the problem of why it is so difficult to acquire and measure skill in IT. As Daniel Kahneman says in <a href="http://www.amazon.com/dp/0374275637?tag=contindelive-20">Thinking Fast and Slow</a>, there are &#8220;two basic conditions for acquiring a skill: an environment that is sufficiently regular to be predictable; [and] an opportunity to learn these regularities through prolonged practice.&#8221;</p>
<p>But traditional software projects are the opposite of a regular, predictable environment. The only good measure of success of a project &#8211; did the end result create the expected value over its lifetime? &#8211; is so distant from the critical decisions that caused that success or failure that it’s rare for anybody from the original team even to be present to get the feedback. It’s practically impossible to determine <em>which</em> of those decisions led to success or failure (in artificial intelligence, this is known as the credit-assignment problem).</p>
<p>These factors make it very hard for IT professionals to acquire the skills that lead to successful products and services. Instead, developers acquire the skills that allow them to most efficiently reach the goals they are incentivized by &#8211; usually declaring their work “dev complete” as rapidly as possible irrespective of whether the functionality is integrated and production-ready &#8211; and similar problems arise in other functional areas too.</p>
<p>The fact that software projects are complex systems rather than regular environments leads to another problem &#8211; the extreme difficulty of gathering data on which techniques, practices, and methodologies are actually effective, and the near impossibility of generalizing this data outside the context in which it was gathered.</p>
<p>In his excellent book <a href="https://leanpub.com/leprechauns">The Leprechauns of Software Engineering</a> Laurent Bossavit executes a devastating attack on software development folklore such as the &#8220;cost of change&#8221; (or &#8220;cost of defects&#8221;) &#8220;curve&#8221;, the claim that the variance in developer productivity is an order of magnitude, the idea of the cone of certainty, and many other cornerstones of methodological lore in software development. He shows that these theories &#8211; and many others &#8211; depend on very small sets of data that are gathered either from informal experiments run on computer science students, or projects which cannot possibly have been effectively controlled. The organization of the studies that form the basis of these claims is often methodologically unsound, the data poorly analyzed, and &#8211; most egregiously &#8211; the findings generalized well beyond their domain of applicability<sup><a href="#2">2</a></sup>.</p>
<p>As a result, it’s not possible to take seriously <em>any</em> of the general claims as to whether agile development practices are better than waterfall ones, or vice-versa. The intuitions of “thought leaders” are also a poor guide. As Kahneman says, “The confidence that people have in their intuitions is not a reliable guide to their validity&#8230; when evaluating expert intuition you should always consider whether there was an adequate opportunity to learn the cues, even in a regular environment.” As Ben Butler-Cole points out in his companion post, <a href="http://www.bridesmere.com/blog/2012/08/01/why-software-development-methodologies-rock/">&#8220;why software development methodologies rock&#8221;</a>, the very act of introducing a new methodology can generate some of the results the adopters of the methodology intend to bring about.</p>
<p>You might think that puts us in an impossible position when it comes to deciding how to run teams. But consider <em>why</em> software development is not a regular environment, and why it is so hard to run experiments, to acquire skills, and to measure which practices and decisions lead to success, and which to failure. The root cause in all these cases &#8211; the reason the environment is not regular &#8211; is that <em>the feedback loop between making a change and understanding the result of that change is too long</em>. The word “change” here should be understood very generally to mean change in requirements, change in methodology, change in development practices, change in business plan, or code or configuration change.</p>
<p>There are many benefits to reducing cycle time &#8211; it’s one of the most important principles that emerges when we apply Lean Thinking to software development. Short cycle times are certainly essential for creating great products: as Bret Victor says in his mind-blowing video <a href="http://vimeo.com/36579366">Inventing on Principle</a>, &#8220;so much of creation is discovery, and you can’t discover anything if you can’t see what you’re doing.&#8221;</p>
<p>But for me this is the clincher: It’s virtually <em>impossible</em> for us to practice continuous improvement, to learn how to get better as teams or as individuals, and to acquire the skills that enable the successful creation of great products and services &#8211; unless we focus on getting that feedback loop as short as possible so we can actually detect correlations, and discern cause and effect.</p>
<p>In fact, the benefits of having a short cycle time from idea to feedback are so important that they should form one of the most important criteria for your business model. If you have to decide between creating your product as a user-installed package or software-as-a-service, this consideration should push you <em>strongly</em> in the direction of software-as-a-service (I speak from experience here). If you’re building a system which involves hardware, work out <a href="http://www.folklore.org/StoryView.py?project=Macintosh&#038;story=The_Macintosh_Spirit.txt">how you can get prototypes out as quickly as possible</a>, and how you can modularize both the hardware and the software so you can update them fast and independently. 3D printing is likely to make a huge impact in this area since it allows for the application of software development practices to the evolution of hardware systems. Working in <a href="http://continuousdelivery.com/2011/12/organize-software-delivery-around-outcomes-not-roles/">cross-functional teams</a> is more or less a requirement if you want to achieve a sufficiently short cycle time.</p>
<p>Software methodologies &#8211; even the “hire a bunch of awesome people and let them self-organize” methodology &#8211; suck because they so often lead to cargo-cult behaviour: we’re doing stand-ups, we have a prioritized backlog, we’re even practicing continuous integration for goodness’ sake &#8211; why is the stuff we make still shitty and late? Because you forgot the most important thing: building an <em>organization</em> which learns and adapts as fast as possible.</p>
<hr/>
<p><a name="1">1</a> Although as Laurent Bossavit points out (private communication) &#8220;A developer&#8217;s skill is in part the method he/she knows and his/her reasons for preferring one language over another.&#8221;</p>
<p><a name="2">2</a> I am not suggesting that we give up on running experiments to learn more about what works and what doesn’t in software development, and the contexts in which such claims are valid &#8211; quite the contrary, I’m saying we’re not trying nearly hard enough.</p>
]]></content:encoded>
			<wfw:commentRss>http://continuousdelivery.com/2012/08/why-software-development-methodologies-suck/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Voke report: Agile delivers higher customer satisfaction and quality</title>
		<link>http://continuousdelivery.com/2012/07/voke-report-agile-delivers-higher-customer-satisfaction-and-quality/</link>
		<comments>http://continuousdelivery.com/2012/07/voke-report-agile-delivers-higher-customer-satisfaction-and-quality/#comments</comments>
		<pubDate>Thu, 26 Jul 2012 14:33:34 +0000</pubDate>
		<dc:creator>jez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://continuousdelivery.com/?p=648</guid>
		<description><![CDATA[<p>There&#8217;s been a lot of controversy generated by Voke&#8217;s Agile Realities report. SDTimes asked me to comment for their article covering the report, and so I got to read it in full. Obviously Voke want your money to read the whole thing so I am constrained by fair use as to what I can reproduce [...]]]></description>
				<content:encoded><![CDATA[<p>There&#8217;s been <a href="http://developers.slashdot.org/story/12/07/14/1242237/new-analyst-report-calls-agile-a-scam-says-its-an-easy-out-for-lazy-devs">a lot</a> <a href="http://www.infoq.com/news/2012/07/is_agile_a_scam">of controversy</a> generated by Voke&#8217;s <a href="http://www.vokeinc.com/research/topic.html">Agile Realities</a> report. SDTimes asked me to comment for <a href="http://www.sdtimes.com/link/36824">their article covering the report</a>, and so I got to read it in full. Obviously Voke want your money to read the whole thing so I am constrained by fair use as to what I can reproduce in this review, but my general conclusion is that the report represents a hatchet job on agile whose most important conclusions aren&#8217;t sustained by the (interesting and revealing) data they have gathered.</p>
<p><span id="more-648"></span></p>
<p>From the <a href="http://www.vokeinc.com/news-and-events/press-releases/view/584-new-voke-research-uncovers-the-rising-cost-of-software-and-the-agile-dilemma.html">press release</a>, we can discern that Voke draws the following conclusions from their research:</p>
<ul>
<li>&#8220;The average cost of software projects is rising dramatically, in spite of smaller teams working much shorter durations&#8221; &#8211; it is <em>implied</em> that this is due to agile adoption.</li>
<li>&#8220;Survey participants shared their experiences with Agile, expressed confusion, and identified more real world challenges than benefits&#8221;</li>
<li>&#8220;Given the impact of catastrophic software failures on the brand, we should be witnessing a movement toward increased quality.&#8221;  &#8211; the implication being that Agile produces lower quality software.</li>
<li>Executives are buying agile because they think it means <em>business</em> agility. Voke, as we will see, think that this is nothing less than a bait-and-switch exercise by the Agile community.</li>
</ul>
<p>In the actual report, Voke make three further high-level claims. First, they say Agile is effectively a Trojan horse for developers to gain control over the software delivery process, so they can avoid doing boring things like documentation, design, and planning. Second, they say it is primarily a vehicle for consultants like me to sell services, training, and books (curiously, they omit that analysts do quite well out of it too). Finally, they claim that the useful core of Agile is nothing more than rapid prototyping &#8211; which is nothing new. So it&#8217;s fair to say Voke aren&#8217;t keen on Agile (and while I am paraphrasing here, I am attempting to faithfully preserve the tone of the original).</p>
<p>However, while they say &#8211; correctly in my opinion &#8211; that companies are confused by Agile, Voke certainly aren&#8217;t in the business of helping. Voke make basic mistakes (or misrepresentations) in their opening discussion of Agile, Lean and Devops. The most egregious of these is around the role of quality in these movements, which they claim exclude QA and thus represent a move away from increased quality. In support, they cite the fact that the <a href="http://agilemanifesto.org/">Agile Manifesto</a> and the name &#8220;Devops&#8221; nowhere mention quality<sup><a href="#1">1</a></sup>. This ignores the fact that <a href="http://www.colostate.edu/programs/SSQA/chapter_2.htm">building quality in</a> is central to every good discussion of lean and agile development. Indeed not only do agile methodologies emphasize the importance of cross-functional teams (including business, QA and operations): Agile practitioners pioneered engineering practices such as test-driven development, continuous integration and refactoring which (as the report acknowledges) substantially reduce the cost of discovering and fixing defects.</p>
<p>Let&#8217;s address another claim: that the cost of software development has increased substantially since 2008 &#8211; the date of an earlier &#8220;Agile Realities&#8221; report. What their numbers in fact show is that the average<sup><a href="#2">2</a></sup> project cost has stayed the same whereas the average project <em>duration</em> has decreased. This subtlety aside, Voke are making the same mistake as many enterprises that treat IT as a cost center: focusing on development cost instead of return on investment. <a href="http://www.cio.com/article/119059/The_IT_Measurement_Inversion">As noted</a> by Douglas Hubbard, author of <a href="http://www.amazon.com/dp/0470539399?tag=contindelive-20">How to Measure Anything</a>, &#8220;even in projects with very uncertain development costs, we haven&#8217;t found that those costs have a significant information value for the investment decision&#8230; The single most important unknown is whether the project will be canceled… The next most important variable is utilization of the system, including how quickly the system rolls out and whether some people will use it at all.&#8221; Thus getting a quality product that incorporates customer feedback for the same price as getting a mediocre one, but in a third less time (the numbers reported by Voke) represents an incredible deal. According to Voke&#8217;s own numbers, technology companies using Agile methodologies &#8211; uniquely &#8211; had <em>zero</em> projects abandoned after development.</p>
<p>The real news &#8211; which Voke hide away towards the end of the report on p32 &#8211; is that technology companies and enterprises both report higher levels of customer satisfaction and lower levels of unfixed critical defects (so much for Agile&#8217;s quality problem) when their projects use Agile methodologies. However enterprises do worse than technology companies: a large majority of technology companies report customer satisfaction when using agile methodologies, compared with a smaller majority of enterprises<sup><a href="#3">3</a></sup>.</p>
<p>Unfortunately the authors do not address the wider macroeconomic issues: in the period from 1958 to the present, the lifetime of an S&#038;P 500 company has shrunk from 61 years to only 18 years. This period is contemporaneous with the rise of software development and the fall of traditional manufacturing. Today enterprises are being challenged by technology-powered start-ups which are able to leverage Lean and Agile methodologies to create a competitive advantage (most VCs wouldn&#8217;t consider funding a non-Agile start up). Thus the failure of many enterprises to implement Agile at scale, noted by the authors, is indeed a serious problem. However this problem cannot be addressed by recycling FUD from ten years ago, such as claims that Agile methodologies don’t believe in any documentation or design.</p>
<p>The data in the report thus makes for interesting reading &#8211; although I would have liked to see more statistical analysis, correlation, and some graphs. Unfortunately the analysis is mostly worthless, except as an exercise in twisting the data to suit the authors&#8217; agenda.</p>
<hr/>
<a name="1">1</a> Although the word &#8220;quality&#8221; doesn&#8217;t appear in the Manifesto, the 9th principle states that &#8220;Continuous attention to technical excellence and good design enhances agility.&#8221; One of Voke&#8217;s claims is that the Agile Manifesto is an inadequate guide to implementing Agile. While this is true, it was never the intention of the Manifesto to define how to implement Agile, or even to be a complete guide to Agile. The intention was to abstract out the core message of a number of &#8220;lightweight&#8221; methodologies that were gaining traction in 2001 (Martin Fowler and Jim Highsmith provide some history on the Manifesto, including a discussion of quality, <a href="http://www.drdobbs.com/the-agile-manifesto/184414755">here</a>). It is of course these methodologies that provide the level of detail that Voke&#8217;s authors are missing. As Martin Fowler says, &#8220;Agile is a mind-set, described by values and principles &#8211; not what most people would understand as a methodology that would include practices and deliverables&#8221; &#8211; more in his <a href="http://martinfowler.com/bliki/RigorousAgile.html">RigorousAgile</a> bliki entry. </p>
<p><sup><a name="2">2</a></sup> Voke don&#8217;t say what kind of average they have used, nor do they provide standard deviations or correlate the data in any way. There aren&#8217;t even any graphs. </p>
<p><sup><a name="3">3</a></sup> I&#8217;m not going to give the actual numbers here because I think it crosses the line of fair use &#8211; you should buy the report if you want the full scoop. </p>
]]></content:encoded>
			<wfw:commentRss>http://continuousdelivery.com/2012/07/voke-report-agile-delivers-higher-customer-satisfaction-and-quality/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PCI-DSS and continuous deployment at Etsy</title>
		<link>http://continuousdelivery.com/2012/07/pci-dss-and-continuous-deployment-at-etsy/</link>
		<comments>http://continuousdelivery.com/2012/07/pci-dss-and-continuous-deployment-at-etsy/#comments</comments>
		<pubDate>Wed, 11 Jul 2012 17:39:01 +0000</pubDate>
		<dc:creator>jez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://continuousdelivery.com/?p=623</guid>
		<description><![CDATA[<p>At DevOpsDays Mountain View I was lucky enough to get some time with Michael Rembetsy, Director of Operations Engineering at Etsy, which manages to be PCI-DSS compliant while practicing continuous deployment. In this short interview, he describes how they do it.</p> <p></p> <p>Here are some of the key points from the interview:</p> Etsy deploy to [...]]]></description>
				<content:encoded><![CDATA[<p>At DevOpsDays Mountain View I was lucky enough to get some time with <a href="http://twitter.com/mrembetsy">Michael Rembetsy</a>, Director of Operations Engineering at <a href="http://www.etsy.com/">Etsy</a>, which manages to be <a href="https://www.pcisecuritystandards.org/documents/pci_dss_v2.pdf">PCI-DSS compliant</a> while practicing continuous deployment. In this short interview, he describes how they do it.</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/nrDH5MVwVN4" frameborder="0" allowfullscreen></iframe></p>
<p>Here are some of the key points from the interview:</p>
<ul>
<li>Etsy deploy to production 25-50 times a day;</li>
<li>They built a new, segmented PCI-DSS compliant environment for their payment systems &#8211; &#8220;we built a whole separate Etsy, essentially&#8221;;</li>
<li>Segregation of duties doesn&#8217;t mean people can&#8217;t talk to each other. In fact, collaboration is an essential element of effective risk management. So everybody in the PCI environment still follows devops principles &#8211; there&#8217;s no physical separation of the teams, and Etsy have hired more people into the various roles (dev, sysadmin, dba, manager, networking) to facilitate collaboration;</li>
<li>In the payments environment they &#8220;still have to follow the rules: a developer still doesn&#8217;t have access to a production database&#8221;, but they&#8217;ll have dbas working alongside them who they can ask for help, and graphs showing metrics from the database;</li>
<li>They use a similar deployment process in their PCI environment to their non-PCI environment, but it includes much more logging on who did what when, and they have roles for QA pusher and production pusher;</li>
<li>Developers can run most of the test framework in their PCI development environment, and they have access to production logs via Splunk in read only mode;</li>
<li>They have a ticketing system that all changes have to go through, but they can push out a change from dev to production in less than an hour if necessary with their normal, non-emergency change management process;</li>
<li>Final words of advice: &#8220;Make sure that the team is on board and realizes that yes, there&#8217;s going to be some constraints, but &#8230; if you all work together you&#8217;re going to be able to continuously deliver the product that you want even into a secure environment.&#8221;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://continuousdelivery.com/2012/07/pci-dss-and-continuous-deployment-at-etsy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Four Principles of Low-Risk Software Releases</title>
		<link>http://continuousdelivery.com/2012/02/four-principles-of-low-risk-software-releases/</link>
		<comments>http://continuousdelivery.com/2012/02/four-principles-of-low-risk-software-releases/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 00:47:48 +0000</pubDate>
		<dc:creator>jez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://continuousdelivery.com/?p=566</guid>
		<description><![CDATA[<p>One key goal of continuous deployment is to reduce the risk of releasing software. Counter-intuitively, increased throughput and increased production stability are not a zero-sum game, and effective continuous deployment actually reduces the risk of any individual release. In the course of teaching continuous delivery and talking to people who implement it, I&#8217;ve come to [...]]]></description>
				<content:encoded><![CDATA[<p>One key goal of continuous deployment is to reduce the risk of releasing software. Counter-intuitively, increased throughput and increased production stability are not a zero-sum game, and effective continuous deployment actually reduces the risk of any individual release. In the course of teaching continuous delivery and talking to people who implement it, I&#8217;ve come to see that &#8220;doing it right&#8221; can be reduced to four principles:</p>
<ul>
<li>Low-risk releases are incremental.</li>
<li>Decouple deployment and release.</li>
<li>Focus on reducing batch size.</li>
<li>Optimize for resilience.</li>
</ul>
<p><em><a href="http://www.informit.com/articles/article.aspx?p=1833567">Read the rest of this article on InformIT</a> (free, no registration required)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://continuousdelivery.com/2012/02/four-principles-of-low-risk-software-releases/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
