<?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>Manual da Startup &#187; Continuous Deployment</title>
	<atom:link href="http://www.manualdastartup.com.br/blog/category/continuous-deployment/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.manualdastartup.com.br/blog</link>
	<description>Práticas sobre Lean Startups, Customer Development e empreendedorismo em geral</description>
	<lastBuildDate>Wed, 30 Nov 2011 16:02:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Continuous Deployment em uma Lean Startup &#8211; notas da palestra do Ash Maurya na SLLConf</title>
		<link>http://www.manualdastartup.com.br/blog/continuous-deployment-em-uma-lean-startup-notas-da-palestra-do-ash-maurya-na-sllconf/</link>
		<comments>http://www.manualdastartup.com.br/blog/continuous-deployment-em-uma-lean-startup-notas-da-palestra-do-ash-maurya-na-sllconf/#comments</comments>
		<pubDate>Fri, 07 May 2010 14:18:57 +0000</pubDate>
		<dc:creator>Eric Santos</dc:creator>
				<category><![CDATA[Apresentações]]></category>
		<category><![CDATA[Continuous Deployment]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Lean Startup]]></category>
		<category><![CDATA[aprendizado]]></category>
		<category><![CDATA[ash maurya]]></category>
		<category><![CDATA[backlog]]></category>
		<category><![CDATA[funcionalidades]]></category>
		<category><![CDATA[Métricas]]></category>
		<category><![CDATA[progresso em lean startup]]></category>
		<category><![CDATA[releases]]></category>
		<category><![CDATA[sllconf]]></category>
		<category><![CDATA[validação qualitativa]]></category>
		<category><![CDATA[validação quantitativa]]></category>

		<guid isPermaLink="false">http://www.manualdastartup.com.br/blog/?p=313</guid>
		<description><![CDATA[Uma dos estudos de caso da SLLConf que eu esperava bastante era o do Ash Maurya, da WiredReach. Ash escreve ótimos posts em seu blog,  especialmente sobre práticas e aprendizados específicos da aplicação dos conceitos de Customer Development e Lean Startup no mais novo produto da sua empresa, chamado CloudFire. Quando assisti ao vivo, achei [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.manualdastartup.com.br%2Fblog%2Fcontinuous-deployment-em-uma-lean-startup-notas-da-palestra-do-ash-maurya-na-sllconf%2F" onclick="pageTracker._trackPageview('/outgoing/api.tweetmeme.com/share?url=http_3A_2F_2Fwww.manualdastartup.com.br_2Fblog_2Fcontinuous-deployment-em-uma-lean-startup-notas-da-palestra-do-ash-maurya-na-sllconf_2F&amp;referer=');"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.manualdastartup.com.br%2Fblog%2Fcontinuous-deployment-em-uma-lean-startup-notas-da-palestra-do-ash-maurya-na-sllconf%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Uma dos estudos de caso da <a href="http://www.sllconf.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.sllconf.com/?referer=');">SLLConf</a> que eu esperava bastante era o do Ash Maurya, da WiredReach. Ash escreve ótimos posts em <a href="http://www.ashmaurya.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ashmaurya.com/?referer=');">seu  blog</a>,  especialmente sobre práticas e aprendizados específicos da aplicação dos conceitos de Customer  Development e Lean Startup no mais novo produto da sua empresa, chamado <a href="http://www.getcloudfire.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.getcloudfire.com/?referer=');"> CloudFire</a>.</p>
<p>Quando assisti ao vivo, achei que a apresentação ficou muito cheia, e consequentemente, corrida demais. Já quando vi pela segunda vez com mais calma, pude perceber uma série de ótimos insights escondidos nas entrelinhas dos slides. Faço a seguir o resumo e deixo no final o vídeo e os slides da apresentação.</p>
<p><span id="more-313"></span></p>
<p><strong>Como maximizar o progresso em uma Lean Startup?<br />
</strong></p>
<p>Ash começou a palestra relembrando a definição do Eric Ries sobre progresso em uma Startup: <a href="http://www.startuplessonslearned.com/2009/04/validated-learning-about-customers.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.startuplessonslearned.com/2009/04/validated-learning-about-customers.html?referer=');">Aprendizado Validado sobre Clientes</a>. Ou seja, para maximizar o progresso, temos que buscar maximizar o aprendizado ao longo do processo de desenvolvimento.</p>
<p>O problema é que muitas vezes o desenvolvimento do produto acaba &#8220;atrapalhando&#8221; o aprendizado. A figura abaixo mostra como isso acontece quando usamos processos tradicionais de desenvolvimento.</p>
<div id="attachment_314" class="wp-caption alignnone" style="width: 600px"><img class="size-full wp-image-314" title="Aprendizado_no_processo_tradicional_de_desenvolvimento" src="http://www.manualdastartup.com.br/blog/wp-content/uploads/2010/05/Aprendizado_no_processo_tradicional_de_desenvolvimento.png" alt="Onde ocorre o Aprendizado no processo tradicional de desenvolvimento" width="590" height="446" /><p class="wp-caption-text">Onde ocorre o Aprendizado no processo tradicional de desenvolvimento</p></div>
<p>A ideia central do <em>Continuous Deployment</em> é minimizar o tempo gasto na parte intermediária deste ciclo, e consequentemente, aumentar a quantidade de aprendizado ao longo do processo.</p>
<div id="attachment_315" class="wp-caption alignnone" style="width: 601px"><img class="size-full wp-image-315" title="Continuous_Deployment" src="http://www.manualdastartup.com.br/blog/wp-content/uploads/2010/05/Continuous_Deployment.png" alt="Continuous Deployment diminuindo o tempo no ciclo de desenvolvimento" width="591" height="445" /><p class="wp-caption-text">Continuous Deployment diminuindo o tempo no ciclo de desenvolvimento</p></div>
<p><strong>O Antes e Depois da Aplicação de <em>Continuous Deployment</em> na WiredReach</strong></p>
<p>Antes: Ciclos de desenvolvimento de duas semanas<br />
Depois: Múltiplos releases todo dia</p>
<p>Antes: Área comum (centralizada) de testes pré-produção<br />
Depois: Sandboxes individuais, possibilitando escalar a infraestrutura de desenvolvimento horizontalmente</p>
<p>Antes: Releases eram &#8220;eventos de um dia inteiro&#8221;<br />
Depois: Releases não são &#8220;eventos&#8221;.<br />
(Obs. Quando os releases vão para o ar, eles monitoram as métricas por algum tempo e revertem caso alguma coisa ruim aconteça. Há medidas automáticas e manuais para essa reversão.)</p>
<p>Antes: Tamanho médio de um Release &#8211; centenas de linhas de código<br />
Depois: Tamanho médio de um Release &#8211; menos de 25 linhas de código</p>
<p>Antes: Mais Releases de emergência<br />
Depois: Menos &#8220;apagar incêndio&#8221;</p>
<p>Antes: &#8220;Dias de Programação&#8221; vs. &#8220;Dias de Clientes&#8221; (atividades de Customer Development)<br />
Depois: &#8220;Dias de Programação&#8221; E &#8220;Dias de Clientes&#8221; juntos<br />
(Obs. Ash mencionou o artigo do Paul Graham: <a href="http://www.paulgraham.com/makersschedule.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.paulgraham.com/makersschedule.html?referer=');">Maker´s Schedule, Manager´s Schedule</a>.  Ele concentra suas atividades de programação nas horas iniciais da manhã, enquanto deixa as atividades de clientes e marketing para mais tarde. Para mais sobre esse assunto, recomendo a leitura <a href="http://www.ashmaurya.com/2009/12/achieving-flow-in-a-lean-startup/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ashmaurya.com/2009/12/achieving-flow-in-a-lean-startup/?referer=');">desse post dele</a>.)<br />
</br><br />
<strong>Dicas para começar a implementar Continous Deployment</strong></p>
<p>- A coisa mais importante: <strong>Dividir a programação em lotes muito pequenos</strong> (no caso dele, esse tamanho é definido como o resultado de 2 horas de programação);</p>
<p>- Fazer antes as modificações que não envolvam a interface com o usuário (banco de dados, APIs, etc.), diminuindo o risco geral de integração;</p>
<p>- Não tentar alcançar 100% de automação desde o início. Fazer o deploy manualmente primeiro, e depois ver o que vale a pena automatizar. Isso também ajuda a estabelecer confiança aos poucos na parte automática do processo;</p>
<p>- Monitorar o tempo do ciclo de Release;</p>
<p>- Esteja pronto para &#8220;parar a linha de produção&#8221; em caso de falha nos testes. Não subestime o fato de que os testes estão falhando, já que em pouco tempo eles serão a única linha de defesa do sistema;</p>
<p>- Construir, devagar e incrementalmente, um <em>Cluster Immune System</em>. (sobre isso, recomendo a leitura desse artigo do Eric Ries no Venture Hacks sobre <a href="http://venturehacks.com/articles/five-whys" target="_blank" onclick="pageTracker._trackPageview('/outgoing/venturehacks.com/articles/five-whys?referer=');">Five Why´s e Immune System</a>)</p>
<p><strong>Como construir as Funcionalidades<br />
</strong></p>
<p>Ash lembrou que <em>Continuous Deployment</em> ajuda na tarefa de diminuir o tempo em que uma funcionalidade é construída, mas não diz nada sobre <strong>quais são as funcionalidades certas</strong> para entrar em desenvolvimento. (o que lembra a proposição do Kent Beck para inverter a ordem do Loop da Startup para <a href="http://www.manualdastartup.com.br/blog/revisando-o-manifesto-agil-%e2%80%93-notas-da-palestra-do-kent-beck-na-sllconf/" target="_blank">Learn-&gt;Measure-&gt;Build</a>).</p>
<p>Para isso, na WiredReach eles criaram duas regras simples:</p>
<p><em>Regra #1: Não &#8220;empurrar funcionalidades&#8221;</em><br />
Para isso, 20% do esforço é aplicado na construção de novas funcionalidades, enquanto 80% do esforço vai para as melhorias das funcionalidades atuais. A demanda pelas novas funcionalidades deve ser validada por atividades de <strong><a href="http://www.slideshare.net/venturehacks/customer-development-4-customer-discovery-part-1" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.slideshare.net/venturehacks/customer-development-4-customer-discovery-part-1?referer=');">Customer Discovery</a></strong>.</p>
<p><em>Regra #2: Restringir o número de funcionalidades que entra na fila</em><em><br />
</em>- Novas funcionalidades não podem ser desenvolvidas sem que as funcionalidades anteriores possam ser validadas.<br />
- Para entrar no <em>Backlog</em>, a funcionalidade deve ser pedida por mais de um cliente. Isso aumenta a resistência para entrar uma nova feature no software (ajudando a regra #1) e evita que se faça customizações para clientes específicos, atividade que não escala e ainda tem o risco do efeito &#8220;colcha de retalhos&#8221;.</p>
<p><strong>Como validar uma Funcionalidade?</strong></p>
<div id="attachment_316" class="wp-caption alignnone" style="width: 516px"><img class="size-full wp-image-316" title="Feature_pipeline" src="http://www.manualdastartup.com.br/blog/wp-content/uploads/2010/05/Feature_pipeline.png" alt="Fila de desenvolvimento de funcionalidades" width="506" height="213" /><p class="wp-caption-text">Fila de desenvolvimento de funcionalidades</p></div>
<p>Depois de desenvolvida, é importante validar a funcionalidade, ou seja, saber responder se ela atendeu de fato o problema que o cliente tinha. Especialmente quando não se tem uma massa de usuários muito grande, a validação Qualitativa (conversa com o cliente) é mais importante do que a Quantitativa (métricas).</p>
<p>Para <strong>Validação Qualitativa</strong>, Ash sugere que se contate os clientes que pediram a funcionalidade e disponibilize-a só para eles, coletando <em>feedback</em> depois do uso. As duas perguntas que ele procura responder são: Essa <em>feature</em> funciona de forma a resolver o problema que o cliente tinha? E em um nível mais macro, ela afeta a capacidade de fazer ou manter uma venda para ele?</p>
<p>Se não conseguir extrair um sinal positivo para essas perguntas, é importante tentar entender o porquê: se a funcionalidade foi mal implementada ou se o problema foi mal interpretado. No caso desse último, a sugestão do Ash é matar a funcionalidade imediatamente.</p>
<p>Para <strong>Validação Quantitativa</strong>, ele sugere a combinação do uso de ferramentas como Mixpanel, KISSMetrics e Google Analytics, mas focando mais no macro-efeito da implementação da funcionalidade (resultado nas <a href="http://www.ashmaurya.com/2009/11/how-i-am-measuring-productmarket-fit/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ashmaurya.com/2009/11/how-i-am-measuring-productmarket-fit/?referer=');">métricas de negócio</a>) do que nos dados de taxa de Click-Through ou uso da mesma.</p>
<p></br><br />
Para fechar a apresentação, Ash lembrou que os benefícios do uso de <em>Continuous Deployment</em> são incrementais, e que o quanto antes iniciar a sua prática no desenvolvimento do produto, melhor.</p>
<p>Deixo agora o vídeo e os slides da apresentação:</p>
<p><object type="application/x-shockwave-flash" height="300" width="400" id="clip_embed_player_flash" data="http://www.justin.tv/widgets/archive_embed_player.swf" bgcolor="#000000"><param name="movie" value="http://www.justin.tv/widgets/archive_embed_player.swf" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="auto_play=false&#038;start_volume=25&#038;title=Continuous Deployment Case Study: WiredReach&#038;channel=startuplessonslearned&#038;archive_id=262656299" /></object></p>
<p><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/ashmaurya/continuous-deployment-startup-lessons-learned" title="Continuous Deployment: Startup Lessons Learned" onclick="pageTracker._trackPageview('/outgoing/www.slideshare.net/ashmaurya/continuous-deployment-startup-lessons-learned?referer=');">Continuous Deployment: Startup Lessons Learned</a></strong><object id="__sse3837127" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=continuousdeployment-sll-key-100424041906-phpapp01&#038;stripped_title=continuous-deployment-startup-lessons-learned" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse3837127" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=continuousdeployment-sll-key-100424041906-phpapp01&#038;stripped_title=continuous-deployment-startup-lessons-learned" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.manualdastartup.com.br/blog/continuous-deployment-em-uma-lean-startup-notas-da-palestra-do-ash-maurya-na-sllconf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

