<?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>Guilherme Chapiewski &#187; Agile</title>
	<atom:link href="http://gc.blog.br/category/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://gc.blog.br</link>
	<description>Blog sobre desenvolvimento de software e tecnologia</description>
	<lastBuildDate>Wed, 18 May 2011 12:00:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Alguns pensamentos sobre &#8220;documentação ágil&#8221;</title>
		<link>http://gc.blog.br/2010/09/20/alguns-pensamentos-sobre-documentacao-agil/</link>
		<comments>http://gc.blog.br/2010/09/20/alguns-pensamentos-sobre-documentacao-agil/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 12:20:48 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Agile Manifesto]]></category>
		<category><![CDATA[Boas práticas]]></category>
		<category><![CDATA[Code Smell]]></category>
		<category><![CDATA[Desenvolvimento Ágil]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Design Simples]]></category>
		<category><![CDATA[Documentação]]></category>
		<category><![CDATA[Domain-Driven Design]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[Metáfora]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Sphinx]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=1718</guid>
		<description><![CDATA[Existe um mito de que não se documenta em projetos que usam metodologias de desenvolvimento ágil. Não é bem assim, aliás, não chega nem perto de ser verdade.
A grande diferença entre projetos &#8220;tradicionais&#8221; e de desenvolvimento ágil é que os processos tradicionais geralmente são bastante prescritivos e você tem que documentar tudo que estiver definido [...]]]></description>
			<content:encoded><![CDATA[<p>Existe um mito de que não se documenta em projetos que usam <a href="http://pt.wikipedia.org/wiki/Desenvolvimento_%C3%A1gil_de_software" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Desenvolvimento_C3_A1gil_de_software?referer=');">metodologias de desenvolvimento ágil</a>. Não é bem assim, aliás, não chega nem perto de ser verdade.</p>
<p>A grande diferença entre projetos <a href="http://en.wikipedia.org/wiki/Waterfall_model" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Waterfall_model?referer=');">&#8220;tradicionais&#8221;</a> e de desenvolvimento ágil é que os processos tradicionais geralmente são bastante prescritivos e você tem que documentar tudo que estiver definido no processo (que geralmente é muita coisa). Você não pensa no que está fazendo, simplesmente segue o que foi definido e escreve documentos. Em métodos ágeis não há prescrição de documentação (e o <a href="http://agilemanifesto.org" onclick="urchinTracker('/outgoing/agilemanifesto.org?referer=');">manifesto ágil fala também sobre &#8220;software funcionando mais do que documentação&#8221;</a>), mas isso não significa que você não pode documentar nada. Muita gente confunde isso e diz que nunca se deve documentar em projetos &#8220;ágeis&#8221;, o que é um grande engano. Em projetos ágeis você pode documentar sem problemas desde que seja necessário de fato. A idéia é que você não deve perder tempo com nada que não seja requerido de verdade para o projeto.</p>
<p>Já participei de projetos onde documentar foi extremamente necessário. Por exemplo, uma vez trabalhei num projeto com vários times onde nem sempre os desenvolvedores estavam no mesmo espaço físico, portanto era preciso documentar alguns pontos chave da arquitetura e ambiente para que todos pudessem trabalhar sem problemas. Também já participei de situações onde meu time desenvolvia componentes que precisavam ser usados por outros times, e esses componentes precisavam estar bem documentados para que os outros times pudessem trabalhar adequadamente. Note que isso é totalmente diferente de documentar o projeto inteiro ou escrever dezenas de casos de uso. Documentamos apenas o que fazia sentido ser documentado.</p>
<p>Enfim, há diversas situações onde você pode precisar documentar por diversos motivos. Para te ajudar a decidir quando documentar e como documentar, veja a seguir alguns princípios do que chamei de &#8220;documentação ágil&#8221;. Essas são apenas algumas práticas úteis e princípios importantes que observei ao longo do tempo em diversos projetos de que participei. Certamente existe muito mais do que isso, mas vamos lá:</p>
<h3>Documentação não substitui comunicação</h3>
<p>Em projetos tradicionais, muitos documentos são usados para comunicar idéias entre o Analista e o Programador, com QA e por ai vai. Em desenvolvimento ágil o objetivo da documentação é registrar as informações por outros motivos (como os motivos acima). Se você estiver se comunicando por documentos, você já deixou de ser ágil há muito tempo. Documentação não deve ser usada para substituir a comunicação intensa e constante entre os membros do time.</p>
<h3>Documentação não pode ser perecível</h3>
<p>Documentação tem que ser leve e não pode ser perecível, ela deve ser durável. Se você documenta algo que precisa ser modificado todo dia, existem grandes chances de você esquecer de atualizar a documentação e ela passa a ficar desatualizada. É melhor não ter documentação do que ter documentação errada. Além disso, se você precisa mudar a documentação toda hora significa que você está se aprofundando demais nos detalhes, e então a documentação vai &#8220;quebrar&#8221; a cada linha de código que você escrever. Quando estiver documentando, pergunte-se: &#8220;daqui a algum tempo essa documentação ainda será válida?&#8221;. Faça documentação durável. Não entre num nível de detalhe que te faça mudar a documentação o tempo todo (a não ser que você <strong>realmente</strong> precise disso &#8211; e mesmo assim pense se não dá pra fazer de outro jeito, por exemplo, automaticamente).</p>
<h3>Documente o necessário, e não mais do que isso</h3>
<p>Assim como você deve <a href="http://www.artima.com/intv/simplest2.html" onclick="urchinTracker('/outgoing/www.artima.com/intv/simplest2.html?referer=');">implementar apenas o necessário para entregar uma funcionalidade e não mais do que isso</a>, você deve documentar apenas o que for necessário e nada mais do que isso. Não perca tempo escrevendo documentação que nunca será usada por ninguém. Se ninguém precisa usar a documentação, então ninguém deve documentar. Documento tem que ter um motivo, documentar sem uma necessidade real não faz sentido</p>
<h3>Documentar tem que ser fácil</h3>
<p>Documentar tem que ser rápido, não pode dar trabalho. Use ferramentas como <a href="http://en.wikipedia.org/wiki/Wiki" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Wiki?referer=');">wikis</a>, <a href="http://en.wikipedia.org/wiki/Documentation_generator" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Documentation_generator?referer=');">geradores de documentação</a> (como o <a href="http://sphinx.pocoo.org" onclick="urchinTracker('/outgoing/sphinx.pocoo.org?referer=');">Sphinx</a>) e por aí vai. Se for fácil documentar, as chances de você fazê-lo serão maiores. No caso de não usar wiki (ou alguma coisa online/web), use ferramentas para publicar a documentação automaticamente. Se a documentação for fácil de ser acessada (e tiver busca) ela fica mais útil. Além disso, prefira usar uma tecnologia fácil e conhecida para que todos os membros do time possam documentar. Por exemplo, se você escolher usar <a href="http://en.wikipedia.org/wiki/LaTeX" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/LaTeX?referer=');">LaTeX</a>, você está reduzindo as chances de designers documentarem, pessoas de negócio e outros membros não-programadores de um time.</p>
<h3>Documentação faz parte do &#8220;Definition of Done&#8221;</h3>
<p>Se o seu projeto precisa de documentação por qualquer motivo, a documentação deve fazer parte da <a href="http://agilefaq.net/2007/10/24/what-is-definition-of-done/" onclick="urchinTracker('/outgoing/agilefaq.net/2007/10/24/what-is-definition-of-done/?referer=');">&#8220;Definition of Done&#8221;</a>. É melhor documentar no momento que as <a href="http://en.wikipedia.org/wiki/User_story" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/User_story?referer=');">histórias</a> estao sendo desenvolvidas &#8211; quando o conhecimento está fresco na cabeça &#8211; do que acumular um monte de débito e ter que pagar de uma vez só &#8211; quando você vai precisar conferir um monte de coisas que já estão prontas para documentar com precisão, o que vai te dar mais trabalho e consumir mais tempo.</p>
<h3>Documentação no código pode ser um &#8220;code smell&#8221;</h3>
<p><a href="http://en.wikipedia.org/wiki/Code_smell" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Code_smell?referer=');">&#8220;Code smell&#8221;</a> é um sintoma no seu código que pode indicar um problema maior. Muitas vezes códigos precisam ser documentados porque eles são desnecessariamente complexos. Sempre que possível <a href="http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/" onclick="urchinTracker('/outgoing/guilherme.pro/2009/04/05/why-i-dont-write-code-comments/?referer=');">prefira refatorar o código para ele ficar mais fácil de entender ao invés de escrever comentários</a> (até porque muitas vezes o código muda e o comentário fica lá desatualizado, e isso acaba mais atrapalhando do que ajudando). Tenha uma boa suite de testes (uma suite bem escrita e organizada é uma especificação executável), use <a href="http://en.wikipedia.org/wiki/Domain-driven_design" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Domain-driven_design?referer=');">Domain-Driven Design</a> para expressar melhor o domínio do software, <a href="http://www.c2.com/cgi/wiki?SystemMetaphor" onclick="urchinTracker('/outgoing/www.c2.com/cgi/wiki?SystemMetaphor&amp;referer=');">metáforas</a>, tenha um <a href="http://c2.com/xp/XpSimplicityRules.html" onclick="urchinTracker('/outgoing/c2.com/xp/XpSimplicityRules.html?referer=');">design simples</a>, use <a href="http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Design_pattern_28computer_science_29?referer=');">design patterns</a>, enfim, é melhor fazer com que o software seja mais bem escrito e não mais bem documentado.</p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2010/09/20/alguns-pensamentos-sobre-documentacao-agil/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Um empresa inteira &#8220;ágil&#8221;?</title>
		<link>http://gc.blog.br/2009/12/16/um-empresa-inteira-agil/</link>
		<comments>http://gc.blog.br/2009/12/16/um-empresa-inteira-agil/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 14:12:48 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Administração]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Agile Conference]]></category>
		<category><![CDATA[Empresas]]></category>
		<category><![CDATA[Idéias]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Pensando alto]]></category>
		<category><![CDATA[RH]]></category>
		<category><![CDATA[Ricardo Semler]]></category>
		<category><![CDATA[Siraj Sirajuddin]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=1363</guid>
		<description><![CDATA[Conversando no mês passado com meu amigo Siraj ficamos nos perguntamos porque a &#8220;filosofia&#8221; ágil não emplaca nas empresas como um todo. O que eu quero dizer é que é razoavelmente fácil hoje em dia encontrar o departamento de desenvolvimento de produtos/software de uma empresa usando métodos ágeis, mas o que falta para o RH, [...]]]></description>
			<content:encoded><![CDATA[<p>Conversando no mês passado com meu amigo <a href="http://influensiraj.blogspot.com" onclick="urchinTracker('/outgoing/influensiraj.blogspot.com?referer=');">Siraj</a> ficamos nos perguntamos porque a &#8220;filosofia&#8221; ágil não emplaca nas empresas como um todo. O que eu quero dizer é que é razoavelmente fácil hoje em dia encontrar o departamento de desenvolvimento de produtos/software de uma empresa usando métodos ágeis, mas o que falta para o RH, Marketing, Financeiro, Administrativo, Comercial e todos os outros departamentos também entrarem nessa?</p>
<p>Quando você começa com desenvolvimento ágil não é só o processo de desenvolvimento de software que muda mas também vários detalhes de como a sua empresa funciona. Por exemplo, é muito difícil imaginar um time ágil que funcione com <a href="http://en.wikipedia.org/wiki/Command_and_control_(management)" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Command_and_control_management?referer=');">&#8220;comando-e-controle&#8221;</a>. Os times são auto-gerenciados, o que implica em um outro estilo de gestão. Ao invés de chefes que cobram, aparecem os <a href="http://en.wikipedia.org/wiki/Servant_leadership" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Servant_leadership?referer=');">líderes-servidores</a>, que dão todos os recursos possíveis para que seus times possam trabalhar e tomar decisões. A base da pirâmide é que passa a decidir e não mais o topo, porque eles são os mais indicados por deterem o melhor conhecimento para fazer isso. Em alguns casos mais extremos em empresas mais modernas como a <a href="http://www.semco.com.br" onclick="urchinTracker('/outgoing/www.semco.com.br?referer=');">Semco</a>, são os próprios funcionários que contratam seus gerentes.</p>
<p>Ou seja, quando falamos de métodos ágeis, por mais que estejamos nos referindo aos métodos ágeis de desenvolvimento de software existem uma porção de outros conceitos e filosofias que acabam entrando no mesmo barco por serem tão intimamente relacionados.</p>
<p>Tenho um exemplo para tentar explicar melhor onde eu quero chegar. Uma vez eu trabalhava numa empresa de tamanho razoável que, como várias outras desse porte, tinha um tradicional departamento de RH. Num dia eu tive um problema bem urgente e precisei da ajuda do pessoal do RH. Quando fui conversar com eles, duas coisas desagradáveis aconteceram. Primeiro, eles me trataram mal e como se estivessem fazendo um favor pra mim. Segundo, eles disseram que meu pedido só seria atendido em alguns dias, porque eles tinham muitas coisas importantes para fazer. O que acontece é que minha filha estava muito doente, eu tive um problema com meu plano de saúde e eles não estavam liberando meu atendimento por nada. Um time de RH com a &#8220;cultura ágil&#8221; saberia em primeiro lugar que, dado que eu sou o principal &#8220;usuário&#8221; deles, eu mereço atenção, respeito e os meus problemas são os problemas deles. As urgências dos funcionários deveriam ser mais importantes do que qualquer papelada que eles tenham para fazer. E em segundo, mesmo que o backlog deles fosse absurdamente grande, um assunto com tamanha severidade com certeza &#8220;furaria&#8221; a fila.</p>
<p>Então, quando eu digo que outros departamentos das empresas poderiam ser &#8220;ágeis&#8221;, não estou sugerindo que eles trabalhem com desenvolvimento ágil de software &#8211; o que não faria nenhum sentido &#8211; mas sim que eles usem os mesmos conceitos de liderança, times auto-organizados trabalhando num ambiente participativo, baseado na confiança e cooperação, fazendo um movimento e esforço maiores para entenderem quem de fato são seus &#8220;usuários&#8221; e quais são suas necessidades, criar visões para seus produtos e departamentos (que os ajudariam a tomar melhores decisões) e por aí vai.</p>
<p>Pegando esse departamento de RH que falei acima como exemplo, não seria perfeitamente aceitável que eles fizessem um exercício de <em><a href="http://www.agilemodeling.com/artifacts/personas.htm" onclick="urchinTracker('/outgoing/www.agilemodeling.com/artifacts/personas.htm?referer=');">personas</a></em> para descobrirem qual é o perfil dos seus usuários? Não seria ótimo que eles fizessem sessões de <em><a href="http://blog.energizedwork.com/2006/07/chartering.html" onclick="urchinTracker('/outgoing/blog.energizedwork.com/2006/07/chartering.html?referer=');">chartering</a></em>, discutissem seus valores, fizessem retrospectivas para descobrirem como melhorar seu processo e assim por diante? Imagine quão transparente e organizado seria chegar na sala deles e ver um quadro de <a href="http://en.wikipedia.org/wiki/Kanban" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Kanban?referer=');">Kanban</a> mostrando sua linha de atividades, o progresso delas e os gargalos da equipe?</p>
<p>Acho que talvez isso não aconteça porque grande parte do material e exemplos disponíveis sobre esses assuntos estão formatados para pessoas relacionadas à desenvolvimento de software. Sim, existem livros como os do <a href="http://pt.wikipedia.org/wiki/Ricardo_Semler" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Ricardo_Semler?referer=');">Ricardo Semler</a> que estão categorizados nas livrarias como &#8220;Administração&#8221; ou &#8220;Negócios&#8221;, mas não sei porque o pessoal de Administração e Negócios não parece se interessar por esses assuntos. Porque será?</p>
<p>Já está na hora desse &#8220;fork&#8221; entre a comunidade ágil das empresas e as outras áreas acabar. Chega uma hora que parece que existem duas empresas funcionando totalmente diferentes dentro de uma. Precisamos trazer pessoas das outras áreas e outros níveis hierárquicos para as conferências e para o nosso mundo. Vou adorar o dia que eu for na Agile Conference e conversar com Gerentes de RH, VPs de Marketing e outras pessoas que não sejam do departamento de desenvolvimento; ou então quando for nas reuniões de grupos de usuários e não encontrar somente os &#8220;agilistas&#8221; mas também os administradores, os analistas de recursos humanos, os contadores e por ai vai.</p>
<p>E aí, por onde vamos começar?</p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2009/12/16/um-empresa-inteira-agil/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>2 anos de Scrum e Agile na Globo.com e algumas coisas que eu aprendi</title>
		<link>http://gc.blog.br/2009/12/04/2-anos-de-scrum-e-agile-na-globo-com-e-algumas-coisas-que-eu-aprendi/</link>
		<comments>http://gc.blog.br/2009/12/04/2-anos-de-scrum-e-agile-na-globo-com-e-algumas-coisas-que-eu-aprendi/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 06:17:27 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Boas práticas]]></category>
		<category><![CDATA[Boris Gloger]]></category>
		<category><![CDATA[Desenvolvimento Ágil]]></category>
		<category><![CDATA[Experiências]]></category>
		<category><![CDATA[Globo.com]]></category>
		<category><![CDATA[Jeff Patton]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Pessoas]]></category>
		<category><![CDATA[Problemas]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Testes]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=1340</guid>
		<description><![CDATA[Já se passaram pouco mais de 2 anos desde que começamos a trabalhar oficialmente com Scrum e Agile na Globo.com e um pouco mais de 2 anos e meio desde que a coisa toda começou de fato.
Depois de trabalhar diariamente com processos ágeis e uma porção de times diferentes na Globo.com, minha sensação é a [...]]]></description>
			<content:encoded><![CDATA[<p>Já se passaram pouco mais de 2 anos desde que começamos a trabalhar oficialmente com <a href="http://gc.blog.br/2008/05/27/como-estamos-indo-com-a-adocao-de-scrum-na-globocom/">Scrum e Agile na Globo.com</a> e um pouco mais de 2 anos e meio desde que a coisa toda começou de fato.</p>
<p>Depois de trabalhar diariamente com processos ágeis e uma porção de times diferentes na <a href="http://globo.com" onclick="urchinTracker('/outgoing/globo.com?referer=');">Globo.com</a>, minha sensação é a daquele dito popular que diz que quanto mais você sabe de alguma coisa, mais você descobre que tem que aprender. De tempos em tempos surgem idéias novas excelentes e as vezes são coisas tão simples que eu me pergunto porque nunca tinha pensado nelas. Ou então algumas idéias que não deram certo no passado voltam à tona, são colocadas em prática e passam a funcionar muito bem. Sempre que eu acho que já aprendi como alguma coisa funciona alguém aparece com uma idéia melhor e me prova que eu estava errado em achar isso.</p>
<p>Me lembro quando perguntei lá no início para o <a href="http://borisgloger.com" onclick="urchinTracker('/outgoing/borisgloger.com?referer=');">Boris Gloger</a> sobre o tempo que levaria para as coisas acontecerem. Na época ele falou que para uma empresa do tamanho da <a href="http://globo.com" onclick="urchinTracker('/outgoing/globo.com?referer=');">Globo.com</a> certamente levaria de 2 a 4 anos para as coisas mudarem de fato. Eu achei um exagero e que ele estava louco, mas era eu que não tinha noção do tamanho da coisa toda. Ele estava certo.</p>
<p>Infelizmente eu não tenho uma história romântica para contar e estaria mentindo se dissesse que as coisas são maravilhosas depois que você adota Agile, Scrum ou o que quer que seja. Muito pelo contrário, os problemas começam a aparecer e tudo fica caótico. As vezes a quantidade de problemas chega a ser enlouquecedora e minha insônia aumentou consideravelmente depois disso. Mas eu não tenho nenhuma dúvida de que os processos ágeis são os que mais se adaptam às características de projetos de desenvolvimento de software, mais do que qualquer outra coisa que eu já tenha usado. Tivemos muito mais sucesso do que em qualquer outra iniciativa na história da empresa e as coisas acontecem muito mais e muito melhor do que aconteciam antes, mas mesmo assim ainda temos um caminho muito longo pela frente.</p>
<p>Hoje eu consigo entender com mais clareza o real sentido do <a href="http://pt.wikipedia.org/wiki/Empirismo" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Empirismo?referer=');">empirismo</a> que tanto se fala. Mesmo com pilhas de livros sobre desenvolvimento ágil na minha prateleira, eu olho para trás e vejo que o processo de &#8220;tentativa e erro&#8221; foi muito mais importante para o meu aprendizado do que qualquer teoria. Várias coisas escritas nos livros deram certo para alguns times e não deram para outros, e no fim das contas o que ficou foi uma mistura de todas essa experiências. Fomos fazendo as coisas, vendo o que dava certo ou errado, mudando, adaptando e seguindo em frente. Hoje não dá pra dizer que a <a href="http://globo.com" onclick="urchinTracker('/outgoing/globo.com?referer=');">Globo.com</a> usa <a href="http://pt.wikipedia.org/wiki/Scrum" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Scrum?referer=');">Scrum</a>, <a href="http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_extrema" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Programa_C3_A7_C3_A3o_extrema?referer=');">XP</a>, <a href="http://en.wikipedia.org/wiki/Lean_software_development" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Lean_software_development?referer=');">Lean</a> ou <a href="http://pt.wikipedia.org/wiki/Kanban" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Kanban?referer=');">Kanban</a>. Você pode encontrar todos os seus sabores preferidos de Agile por aqui, às vezes misturados e até mesmo bem customizados e diferentes do tradicional.</p>
<p>Nesse tempo todo vivenciei muitos problemas, muitos sucessos, muitas derrotas, muitas falhas e muita mudança. Eu queria poder dizer que encontrei o <a href="http://pt.wikipedia.org/wiki/Santo_Graal" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Santo_Graal?referer=');">Santo Graal</a> do desenvolvimento ágil, mas dificilmente isso existe. E se existir, provavelmente o da minha empresa será diferente da sua e por ai vai. Porém, eu posso falar de algumas coisas que eu aprendi e que talvez possam ser úteis para outras pessoas e empresas:</p>
<h3>Você sempre estará em transição.</h3>
<p>Basicamente eu não acredito mais em transição ágil como eu já li por ai, que parece uma coisa que tem inicio, meio e fim. Hoje eu percebo que sempre se está em transição. Sempre surgirão projetos novos com características diferentes e sempre será necessário ajustar e se adaptar. Isso tudo fora que as pessoas e os times também mudam, e ai começa tudo denovo. É um trabalho que nunca acaba.</p>
<h3>É muito fácil começar a fazer Scrum, o difícil é vencer a resistência das pessoas.</h3>
<p>Grande parte do meu tempo nesses anos foi investido em quebrar barreiras e a resistência das pessoas. E não estou falando de diretores ou gerentes, às vezes os piores problemas estão dentro dos times. Os mais diversos tipos de problemas acontecem: tem gente que tem medo de trabalhar em par e expôr suas fraquezas para os outros, tem gente insatisfeita na empresa que envenena iniciativas, enfim, acontece de tudo. É muito importante trabalhar com pessoas bem intencionadas, comprometidas e que acreditam no que estão fazendo e que acreditam que as coisas sempre podem (e devem) ser melhoradas.</p>
<h3>As pessoas precisam estar felizes.</h3>
<p>É importantíssimo que a empresa reconheça seus talentos, que eles ganhem o que merecem e que eles trabalhem num ambiente agradável. Ninguém trabalha direito e dá 100% do seu potencial se não estiver feliz e satisfeito com a empresa. Pessoas infelizes e insatisfeitas podem acabar com um time inteiro, por isso a empresa tem que dar o primeiro passo e dar todas as condições para que isso não aconteça e, quando acontecer, resolver o problema o mais rápido possível.</p>
<h3>Se o foco das pessoas for em &#8220;fazer telas&#8221;, &#8220;testar&#8221; ou &#8220;escrever software&#8221;, você está perdido. O foco das pessoas deve ser o produto, e não a sua função.</h3>
<p>Muito desenvolvedor não gosta de fazer teste exploratório &#8220;porque isso é função do cara de QA&#8221;. Muito designer não gosta de fazer CSS e HTML porque isso é coisa de &#8220;desenvolvedor de front-end&#8221;. <strong>Bullshit!</strong> Imagine se um zagueiro está com a bola na linha do gol e diz que não vai fazer o gol porque não é atacante? Não tem essa, o foco é ganhar o jogo, entregar o produto, deixar o cliente feliz, não importa fazendo o que. Com o tempo você descobre a receita do time (quantidade de pessoas de cada especialidade) para que as pessoas passem a maior parte do tempo fazendo sua especialidade, mas isso não significa que elas não devem fazer ou entender de outras coisas.</p>
<h3>Escalar não é facil. Aliás, se for possível, não escale nunca.</h3>
<p>Times ágeis funcionam melhor quando são pequenos, porque o universo de pessoas é menor e a comunicação é melhor, as pessoas confiam mais no resto do time e por aí vai. Quando o número de pessoas e de times aumenta, a comunicação fica problemática e isso gera uma porção de problemas, desde coisas triviais como conflitos de merge até coisas mais complexas de resolver como falta de confiança, dificuldade em mudar de direção, dificuldade de passar a visão do produto, pessoas querendo aparecer mais do que outras e por aí vai. Faça um teste: reuna 30 amigos seus e tentem combinar um lugar para almoçar em no máximo 2 minutos. Repita o teste com 3 amigos e compare os resultados. Foi possível combinar um único lugar de forma unânime? Quanto tempo levou? Quais foram os conflitos de interesse? Qual foi o nível de barulho, stress e insatisfação das pessoas? Ter mais pessoas ajudou a fazer com que a decisão fosse mais rápida ou mais demorada? Talvez esse não seja o melhor exemplo do mundo mas vai ser bem fácil de perceber como times grandes se organizam com muito mais dificuldade.</p>
<h3>Boas práticas de engenharia e desenvolvimento ágil como automatização, testes, refatoração, programação em par, integração contínua e TDD são fundamentais, imprescindíveis, inevitáveis, totalmente obrigatórias.</h3>
<p>Todos os grandes saltos de qualidade e produtividade que demos na história da evolução da <a href="http://globo.com" onclick="urchinTracker('/outgoing/globo.com?referer=');">Globo.com</a> foram porque essas práticas foram intensificadas e usadas com mais disciplina, e todas as vezes que elas não recebem a devida importância a velocidade diminui, a produtividade baixa e o time entrega menos (e com mais defeitos).</p>
<p>Um dos &#8220;problemas&#8221; com o Scrum é que ele não fala nada sobre usar essas práticas. Isso é proposital porque o intuito era que ele fosse bastante genérico e simples, mas como muitas pessoas gostam de seguir o livro cegamente sem pensar, elas acabam achando que não é necessário fazer o que não está escrito, <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html" onclick="urchinTracker('/outgoing/jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html?referer=');">e daí a probabilidade de fracasso é gigantesca</a>. Você pode usar Scrum para produzir um <a href="http://pt.wikipedia.org/wiki/Marca-passo" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Marca-passo?referer=');">marca-passo</a>, por exemplo, mas você seria louco de não testá-lo exaustivamente só porque não está escrito? Você tem que fazer, porque é uma necessidade imposta pelo tipo de projeto. Com software não é muito diferente: se você não faz <a href="http://en.wikipedia.org/wiki/Test-driven_development" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Test-driven_development?referer=');">TDD</a>, seu código fica pouco <a href="http://en.wikipedia.org/wiki/Software_testability" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Software_testability?referer=');">testável</a>, e consequentemente você <a href="http://pt.wikipedia.org/wiki/Refatora%C3%A7%C3%A3o" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Refatora_C3_A7_C3_A3o?referer=');">refatora</a> menos ou tem dificuldade para fazê-lo. Consequentemente o tempo para implementar novas funcionalidades aumenta cada vez mais e como o cliente está sempre cobrando mais e mais coisas, você passa a testar menos para dar tempo de fazer mais funcionalidades. E por aí vai (<a href="http://gc.blog.br/2008/11/22/agile-indo-para-o-buraco/">para o buraco</a>).</p>
<h3>As regras são excelentes quando você não sabe o que está fazendo. Depois que aprender, quebre-as.</h3>
<p>Geralmente quando as pessoas começam com Agile o que se recomenda é que você siga as regras à risca por algumas iterações até que você aprenda e que o processo esteja &#8220;no sangue&#8221;, e só depois que possíveis customizações devem ser feitas. Muita gente confunde isso com &#8220;sempre siga as regras à risca&#8221;. Por exemplo, hoje alguém me convenceu numa conversa que o Sprint Planning 2 do jeito que um determinado time estava fazendo estava bem inútil, uma grande perda de tempo. A sugestão foi fazer uma coisa mais &#8220;just-in-time&#8221;, ou seja, na hora que a história começar a ser desenvolvida. Muita gente pode falar que &#8220;ah, mas não é assim que o Scrum funciona&#8221; ou o clássico &#8220;aqui na empresa nós não fazemos desse jeito&#8221;. Se você tem um bom motivo para mudar as regras do jogo, discuta o assunto com o time e implemente as melhorias. Não existe essa coisa de &#8220;as regras do Scrum&#8221;, existem times produtivos com alta capacidade de adaptação e em constante evolução ou times que passam 50% do tempo discutindo o processo e não deixam o cliente feliz.</p>
<h3>Trabalhar num ambiente ágil é muito muito muito mais divertido.</h3>
<p>Acabei de passar quase 40 dias de férias e em conferências. Muita gente estaria odiando voltar para o trabalho depois disso, mas eu gostei. Quando eu cheguei hoje na empresa depois de mais de 1 mês a minha mesa já não era mais minha e eu não achava meu computador. O escritório mudou totalmente e o time que eu estava está todo misturado. Quando eu entrei na sala as pessoas estavam em pé discutindo, rabiscando no quadro e o barulho estava alto pra caramba. Depois de contar as novidades, de almoçar e de alguns updates, passei o resto da tarde programando em par numa tarefa que nem eu e nem o meu par faziamos idéia de como resolver, mas juntos descobrimos como fazer e resolvemos o problema. Foi um dia caótico porém muito produtivo e muito divertido, como a maioria dos que eu tenho. Tudo muda muito e está em constante evolução, e cada dia é um novo desafio. Se você gosta de ficar escondido atrás da &#8220;baia&#8221; e tem dificuldades em dividir o seu teclado com um amigo, recomendo fortemente que você não use Agile.</p>
<h3>Agile não é o <a href="http://pt.wikipedia.org/wiki/Santo_Graal" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Santo_Graal?referer=');">Santo Graal</a>.</h3>
<p>Nenhum processo de desenvolvimento (ágil ou não) é perfeito. Muita gente gosta, muita gente não gosta, alguns não se adaptam, outros se motivam a cada dia com os novos desafios e é assim que as coisas funcionam. &lt;ironia&gt; &#8220;Agile é tão perfeito&#8221; &lt;/ironia&gt; que quando as coisas dão errado é muito mais fácil culpar o seu processo e reclamar que ele não funciona. <strong>Bullshit!</strong> Como o <a href="http://www.agileproductdesign.com" onclick="urchinTracker('/outgoing/www.agileproductdesign.com?referer=');">Jeff Patton</a> fala, as pessoas fazem isso porque o processo não vai se defender de você e porque é muito mais dificil assumir e enxergar os problemas de verdade. Uma das chaves de ser bem sucedido nesses processos é entender que eles são apenas ferramentas muito simples e que se não estão funcionando é porque você precisa encontrar e resolver algum problema da sua empresa, do seu time, das pessoas ou do que quer que seja. Não bote a culpa no processo.</p>
<h3>As pessoas são mais importantes que o processo. Foco nas pessoas.</h3>
<p>São elas que fazem tudo acontecer. Quanto mais agentes de mudança sua empresa puder ter, melhor. A empresa tem que reconhecer essas pessoas e motivá-las para que elas motivem ainda mais seus pares e assim por diante. É preciso dar liberdade para elas criarem, tentarem coisas novas e errarem sem medo de serem repreendidas. Faça de tudo para que todos estejam felizes e motivados. Resolva os conflitos. Coloque tudo em pratos limpos. Trate todos com respeito e como amigos. Faça as pessoas crescerem e deixe (e ajude) que elas tenham visibilidade dentro da empresa. De todas as coisas que eu vi até hoje, nada é mais eficaz do que ter as pessoas certas do seu lado.</p>
<p>Nada disso é definitivo e eu posso mudar de opinião a qualquer momento sobre qualquer uma dessas coisas. Aliás, hoje numa conversa aprendi que é ótimo mudar de opinião, porque significa que você aprendeu alguma coisa nova/diferente que te fez pensar de uma forma nova/diferente e, portanto, você evoluiu. Fica então a última:</p>
<h3>Crie sua opinião, aprenda mais e mude sua opinião. Esteja em constante evolução.</h3>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2009/12/04/2-anos-de-scrum-e-agile-na-globo-com-e-algumas-coisas-que-eu-aprendi/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>Agile Development Practices Conference 2009, aí vou eu!</title>
		<link>http://gc.blog.br/2009/11/09/agile-development-practices-conference-2009-ai-vou-eu/</link>
		<comments>http://gc.blog.br/2009/11/09/agile-development-practices-conference-2009-ai-vou-eu/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 06:41:05 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Agile Development Practices Conference]]></category>
		<category><![CDATA[Agile Leadership Summit]]></category>
		<category><![CDATA[Alan Shalloway]]></category>
		<category><![CDATA[Alistair Cockburn]]></category>
		<category><![CDATA[Andy Hunt]]></category>
		<category><![CDATA[David Hussman]]></category>
		<category><![CDATA[Jeff Patton]]></category>
		<category><![CDATA[Jim Highsmith]]></category>
		<category><![CDATA[Joshua Kerievsky]]></category>
		<category><![CDATA[Linda Rising]]></category>
		<category><![CDATA[Mike Cohn]]></category>
		<category><![CDATA[Pollyanna Pixton]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=1344</guid>
		<description><![CDATA[Depois das minhas curtas (porém divertidas) férias, estou aqui em Orlando para participar da Agile Development Practices Conference 2009, organizada pela Software Quality Engineering!
Amanhã será o primeiro de dois dias de tutoriais seguidos de dois dias de conferência com a participação de grandes nomes do mundo ágil como Jeff Patton, Alistair Cockburn, Mike Cohn, Jim [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://gc.blog.br/wp-content/uploads/2009/11/agile_development_practices.png" alt="Agile Development Practices Conference" title="Agile Development Practices Conference" width="118" height="117" class="alignright size-full wp-image-1346" align="right"/>Depois das minhas curtas (porém divertidas) férias, estou aqui em <a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=orlando&#038;sll=48.860092,2.325342&#038;sspn=0.067197,0.10849&#038;ie=UTF8&#038;hq=&#038;hnear=Orlando,+Orange,+Florida&#038;t=h&#038;z=11&#038;iwloc=A" onclick="urchinTracker('/outgoing/maps.google.com/maps?f=q_038_source=s_q_038_hl=en_038_geocode=_038_q=orlando_038_sll=48.860092_2.325342_038_sspn=0.067197_0.10849_038_ie=UTF8_038_hq=_038_hnear=Orlando_+Orange_+Florida_038_t=h_038_z=11_038_iwloc=A&amp;referer=');">Orlando</a> para participar da <a href="http://www.sqe.com/AgileDevPractices/" onclick="urchinTracker('/outgoing/www.sqe.com/AgileDevPractices/?referer=');">Agile Development Practices Conference 2009</a>, organizada pela <a href="http://www.sqe.com" onclick="urchinTracker('/outgoing/www.sqe.com?referer=');">Software Quality Engineering</a>!</p>
<p>Amanhã será o primeiro de dois dias de tutoriais seguidos de dois dias de conferência com a participação de grandes nomes do mundo ágil como <a href="http://www.agileproductdesign.com" onclick="urchinTracker('/outgoing/www.agileproductdesign.com?referer=');">Jeff Patton</a>, <a href="http://alistair.cockburn.us" onclick="urchinTracker('/outgoing/alistair.cockburn.us?referer=');">Alistair Cockburn</a>, <a href="http://www.mountaingoatsoftware.com" onclick="urchinTracker('/outgoing/www.mountaingoatsoftware.com?referer=');">Mike Cohn</a>, <a href="http://www.jimhighsmith.com" onclick="urchinTracker('/outgoing/www.jimhighsmith.com?referer=');">Jim Highsmith</a>, <a href="http://blog.toolshed.com" onclick="urchinTracker('/outgoing/blog.toolshed.com?referer=');">Andy Hunt</a>, <a href="http://www.devjam.com" onclick="urchinTracker('/outgoing/www.devjam.com?referer=');">David Hussman</a>, <a href="http://www.industriallogic.com" onclick="urchinTracker('/outgoing/www.industriallogic.com?referer=');">Joshua Kerievsky</a>, <a href="http://www.lindarising.org" onclick="urchinTracker('/outgoing/www.lindarising.org?referer=');">Linda Rising</a>, <a href="http://www.netobjectives.com/bio-alan-shalloway" onclick="urchinTracker('/outgoing/www.netobjectives.com/bio-alan-shalloway?referer=');">Alan Shalloway</a> e por aí vai. Para encerrar, na sexta-feira acontecerá o <a href="http://www.sqe.com/AgileDevPractices/APLN/Default.aspx" onclick="urchinTracker('/outgoing/www.sqe.com/AgileDevPractices/APLN/Default.aspx?referer=');">Agile Leadership Summit</a> liderado pela <a href="http://www.evolutionarysystems.net" onclick="urchinTracker('/outgoing/www.evolutionarysystems.net?referer=');">Pollyanna Pixton</a>.</p>
<p>Os próximos dias prometem! <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2009/11/09/agile-development-practices-conference-2009-ai-vou-eu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Agile não é bala de prata</title>
		<link>http://gc.blog.br/2009/08/17/agile-nao-e-bala-de-prata/</link>
		<comments>http://gc.blog.br/2009/08/17/agile-nao-e-bala-de-prata/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 14:11:31 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Metodologias]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Waterfall]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=506</guid>
		<description><![CDATA[Esses dias numa conferência alguém veio me contar a sua história, que era de uma empresa que nos últimos anos vinha desenvolvendo seus projetos de forma tradicional, em cascata, e que tinha gostado do que tinha visto sobre metodologias ágeis e estava pensando em tentar. Ele gostou principalmente da idéia de trabalhar com desenvolvimento iterativo [...]]]></description>
			<content:encoded><![CDATA[<p>Esses dias numa conferência alguém veio me contar a sua história, que era de uma empresa que nos últimos anos vinha desenvolvendo seus projetos de forma tradicional, em cascata, e que tinha gostado do que tinha visto sobre metodologias ágeis e estava pensando em tentar. Ele gostou principalmente da idéia de trabalhar com desenvolvimento iterativo e decidiu que iria tentar usar Scrum na sua empresa.</p>
<p>Passadas algumas semanas encontrei denovo com essa pessoa em um outro evento. Para a minha surpresa, ela me disse que sua vida estava um inferno! Os clientes não estavam dispostos a fechar contratos de escopo negociável, eles queriam saber exatamente o que e quando os projetos seriam entregues. Eles definitivamente não quiseram trabalhar com desenvolvimento iterativo, até porque os projetos já eram bem curtos (menos de 1 mês). Pra terminar, por ser uma agência pequena a equipe é de menos de 10 pessoas fazendo com que uma pessoa precise trabalhar em 3 ou 4 projetos ao mesmo tempo. E por aí vai&#8230;</p>
<p><strong>Então eu perguntei:</strong> <em>Quantos projetos davam errado antes de você começar com Agile?</em><br />
<strong>E ele respondeu:</strong> <em>Todos os nossos projetos sempre foram bem sucedidos.</em><br />
<strong>E eu perguntei denovo:</strong> <em>Então qual é o problema que você está tentando resolver usando Scrum e desenvolvimento iterativo?</em><br />
<em>(silêncio&#8230;)</em><br />
<strong>Eu novamente:</strong> <em>Ok, já entendí. Faça o seguinte, volte para o seu processo de trabalho antigo. Não sei como é mas me parece ótimo.</em></p>
<p>Muita gente se surpreende quando eu falo isso. Só porque eu falo sobre desenvolvimento ágil não significa que eu acho que isso é a solução para todos os problemas. Se todos os seus clientes estão satisfeitos do jeito que você está trabalhando, seus projetos não falham, você faz ótimas entregas e tudo está ótimo, você não tem um problema. E se você não tem um problema, você não precisa resolver nada. E nesse caso eu recomendo: <strong>não</strong> use uma metodologia de desenvolvimento ágil só porque está na moda.</p>
<p>Metodologias ágeis partem do princípio de que os requisitos de um projeto de software vão mudar. Geralmente em projetos de software grandes é muito difícil de planejar todos os requisitos de uma vez no início do projeto. Não seria impossível fazer isso mas o custo é tão alto que vale mais a pena planejar menos e ir adaptando o software e os requisitos ao longo do tempo até que ele esteja pronto. No cenário dessa pessoa, como os projetos são muito pequenos é perfeitamente possível planejar tudo antes em pouco tempo e desenvolver em seguida.</p>
<p>Em alguns outros casos onde os requisitos não mudam waterfall também pode fazer sentido. Por exemplo, quando você desenvolve software para o governo, toda a especificação do projeto normalmente é produzida e informada antes em um edital. Algumas vezes até o prazo de entrega já está definido. Eu pessoalmente já trabalhei em vários projetos desse tipo que deram certo, que foram entregues dentro do prazo, atendendo a especificação e sem maiores problemas. Como tudo estava funcionando, não havia motivo para pensar em outra forma de desenvolvimento que eventualmente poderia trazer mais problemas do que soluções, como no caso dessa pessoa que conversou comigo.</p>
<p>O que eu quero dizer com isso tudo é que não existe uma metodologia que funciona para todos os casos e todos os projetos do mundo. <a href="http://gc.blog.br/2008/10/19/java-e-ruim/">Assim como você deve usar a melhor ferramenta para cada problema</a>, você deve usar a melhor metodologia para cada projeto.</p>
<p>No projeto que eu estou atualmente estamos quebrando vários paradigmas de desenvolvimento ágil. Estamos com times gigantes, usando quadros de Lean totalmente customizados misturados com Scrum e por aí vai. Estamos sempre analisando os resultados das iterações e replanejando nosso processo. Apesar de todos os livros dizerem que os times têm que ser pequenos, estamos trabalhando com um time de 20 pessoas que dá certo e está super produtivo. Esse é o espírito: faça o que for melhor para o projeto e o que te fizer ter os melhores resultados, não o que alguém diz que é certo ou é errado ou o que está na moda.</p>
<p>É perfeitamente possível desenvolver projetos bons em qualquer metodologia. Entenda qual é o seu cenário, quais são os seus problemas, limitações e aí sim decida qual é a melhor forma de trabalhar nos seus projetos.</p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2009/08/17/agile-nao-e-bala-de-prata/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>[EDTED Florianópolis] Eu fui!</title>
		<link>http://gc.blog.br/2009/05/24/edted-florianopolis-eu-fui/</link>
		<comments>http://gc.blog.br/2009/05/24/edted-florianopolis-eu-fui/#comments</comments>
		<pubDate>Mon, 25 May 2009 02:37:22 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Coding Dojo]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[EDTED]]></category>
		<category><![CDATA[Encontro de Design e Tecnologia Digital]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Planejamento ágil]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=1039</guid>
		<description><![CDATA[Nesse último sábado estive em Florianópolis participando do 14o. Encontro de Design e Tecnologia Digital (ou simplesmente #edted para os &#8220;Twitteiros&#8221;). O evento já passou pelo Rio de Janeiro e São Paulo e ainda vai passar por mais 6 cidades até o fim do ano (veja a programação).
Nas outras duas cidades percebí que minha apresentação [...]]]></description>
			<content:encoded><![CDATA[<p>Nesse último sábado estive em <a href="http://maps.google.com/search?q=florianopolis" onclick="urchinTracker('/outgoing/maps.google.com/search?q=florianopolis&amp;referer=');">Florianópolis</a> participando do <a href="http://www.edted.com.br/ewd-14/" onclick="urchinTracker('/outgoing/www.edted.com.br/ewd-14/?referer=');">14o. Encontro de Design e Tecnologia Digital</a> (ou simplesmente <a href="http://search.twitter.com/search?q=%23edted" onclick="urchinTracker('/outgoing/search.twitter.com/search?q=_23edted&amp;referer=');">#edted</a> para os &#8220;Twitteiros&#8221;). O evento já passou pelo Rio de Janeiro e São Paulo e ainda vai passar por mais 6 cidades até o fim do ano (veja a <a href="http://www.edted.com.br/ewd-14/index.php/palestras" onclick="urchinTracker('/outgoing/www.edted.com.br/ewd-14/index.php/palestras?referer=');">programação</a>).</p>
<p>Nas outras duas cidades percebí que minha apresentação ficou confusa porque fiz uma mistura de tecnologia com processo de desenvolvimento que eu senti que não deu muito certo. Então em Floripa decidi jogar todo o plano fora e fazer um totalmente novo, separando em duas apresentações.</p>
<h3>Introdução a metodologias ágeis</h3>
<p>Nessa apresentação tentei explicar metodologias de desenvolvimento ágil de software da forma mais simples e mais abrangente possível. Meu objetivo era fazer algo que pudesse servir tanto para quem nunca teve nenhum contato saber do que se trata como para quem já conhece aprender alguma coisa nova. Para isso eu fiz um paralelo com algumas historinhas e acabou virando uma apresentação bem humorada, despojada e (acredito eu) fácil de entender. Pelos comentários que li no Twitter parece que dessa vez &#8220;acertei a mão&#8221;. <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>No final falei de alguns livros para se aprofundar no assunto que foram:</p>
<ul>
<li><em><a href="http://www.amazon.com/Agile-Software-Development-SCRUM/dp/0130676349" onclick="urchinTracker('/outgoing/www.amazon.com/Agile-Software-Development-SCRUM/dp/0130676349?referer=');">Agile Software Development with Scrum</a></em> é o livro mais básico sobre <a href="http://en.wikipedia.org/wiki/Scrum_(development)" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Scrum_development?referer=');">Scrum</a> e que descreve como funciona esse framework para gerenciamento ágil de projetos.</li>
<li><em><a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658" onclick="urchinTracker('/outgoing/www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658?referer=');">Extreme Programming Explained</a></em> é importantissimo para entender as práticas de <a href="http://en.wikipedia.org/wiki/Extreme_Programming" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Extreme_Programming?referer=');">XP</a>, que são essenciais para o sucesso de projetos ágeis de software. Inclusive, é possível (e eu diria até que é mais legal) usar XP sozinho, sem Scrum. O grande problema é que XP é mais difícil de ser &#8220;vendido&#8221;, mas se você conseguir vá em frente! Leia mais sobre XP nessa <a href="http://improveit.com.br/xp" onclick="urchinTracker('/outgoing/improveit.com.br/xp?referer=');">excelente referência organizada pelo pessoal da ImproveIt</a>.</li>
<li><em><a href="http://www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783" onclick="urchinTracker('/outgoing/www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783?referer=');">Lean Software Development</a></em>, que fala sobre os princípios de <a href="http://en.wikipedia.org/wiki/Lean_manufacturing" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Lean_manufacturing?referer=');">Lean manufacturing</a> aplicados ao desenvolvimento de software.</li>
<li><em><a href="http://www.amazon.com/Agile-Estimating-Planning-Robert-Martin/dp/0131479415" onclick="urchinTracker('/outgoing/www.amazon.com/Agile-Estimating-Planning-Robert-Martin/dp/0131479415?referer=');">Agile Estimating and Planning</a></em> contém informações sobre planejamento de projetos e estimativas ágeis. É essencial entender esse assunto, já que é um dos mais questionados e complicados numa transição para metodologias ágeis.</li>
<li>Além disso tem mais indicações de livros <a href="http://gc.blog.br/2008/03/27/10-livros-recomendados-para-desenvolvedores/">nesse post</a> e <a href="http://gc.blog.br/2008/04/20/fisl-90-desenvolvimento-agil-com-xp-e-scrum/">esse outro post em especial (sobre o FISL)</a> tem bastante informação, links para artigos e blogs sobre metodologias e desenvolvimento ágil.</li>
</ul>
<h3>Python Coding Dojo: O primeiro passo para se tornar um programador Python Samurai</h3>
<p>Nos últimos meses tenho trabalhado bastante com <a href="http://www.python.org" onclick="urchinTracker('/outgoing/www.python.org?referer=');">Python</a> e tenho gostado muito. Graças a isso e a confiança do pessoal da <a href="http://arteccom.com.br" onclick="urchinTracker('/outgoing/arteccom.com.br?referer=');">Arteccom</a> no meu trabalho, resolvi fazer uma coisa bem diferente e um pouco ousada: tentar ensinar Python em apenas duas horas usando um formato de <a href="http://codingdojo.org" onclick="urchinTracker('/outgoing/codingdojo.org?referer=');">Coding Dojo</a>! Essa apresentação foi uma cópia da minha apresentação no <a href="http://gc.blog.br/2009/05/11/pythoncampus-rj-eu-fui/">PythOnCampus</a>, porém dei uma reduzida no conteúdo, adicionei uma breve introdução sobre Coding Dojo e troquei o formato para ter uma seção prática de programação.</p>
<p>Apesar de ter conseguido fazer uma boa introdução e passado bastante informações sobre a linguagem, é claro que o objetivo não era fazer com que as pessoas saissem de lá sabendo fazer tudo em Python. Elas apenas tiveram um primeiro contato com a linguagem, viram que não é nenhum bicho de 7 cabeças (muito pelo contrário) e ainda se divertiram programando em par no palco, fazendo TDD e resolvendo desafios de programação. Me surpreendi pela procura/interesse do pessoal e pelo feedback me parece que também deu certo.</p>
<p>De quebra também mostrei para o pessoal como funciona um Dojo, quais os objetivos e benefícios. É uma prática muito legal e muito fácil de fazer, qualquer um pode (e deveria) organizar um Dojo na sua empresa ou com seus amigos.</p>
<p>Para quem quiser saber mais sobre o que vimos:</p>
<ul>
<li>No site <a href="http://codingdojo.org" onclick="urchinTracker('/outgoing/codingdojo.org?referer=');">http://codingdojo.org</a> tem informações sobre as regras de Dojo e links para uma porção de problemas legais de resolver. Para que não sabe existe um <a href="http://dojofloripa.wordpress.com" onclick="urchinTracker('/outgoing/dojofloripa.wordpress.com?referer=');">Dojo organizado por um grupo de programadores em Floripa</a>. Ele anda meio parado mas quem sabe essa não é uma ótima oportunidade para continuar?</li>
<li>Para aprender Python recomendo a leitura dos livros <em><a href="http://www.amazon.com/Learning-Python-3rd-Mark-Lutz/dp/0596513984" onclick="urchinTracker('/outgoing/www.amazon.com/Learning-Python-3rd-Mark-Lutz/dp/0596513984?referer=');">Learning Python</a></em> (que fala do básico da linguagem), <em><a href="http://www.amazon.com/Programming-Python-Mark-Lutz/dp/0596009259" onclick="urchinTracker('/outgoing/www.amazon.com/Programming-Python-Mark-Lutz/dp/0596009259?referer=');">Programming Python</a></em> e <em><a href="http://www.amazon.com/Python-Nutshell-Second-OReilly/dp/0596100469" onclick="urchinTracker('/outgoing/www.amazon.com/Python-Nutshell-Second-OReilly/dp/0596100469?referer=');">Python in a Nutshell</a></em> (que são mais avançados). Esse último ainda não li mas me foi muito bem recomendado. Além disso há uma <a href="http://docs.python.org" onclick="urchinTracker('/outgoing/docs.python.org?referer=');">extensa documentação no site oficial do Python</a>.</li>
<li>Além disso falei sobre o <a href="http://djangoproject.com" onclick="urchinTracker('/outgoing/djangoproject.com?referer=');">Django</a>, que é um framework em Python muito popular para construir websites. A melhor forma de conhecê-lo e aprender como ele funciona é fazendo o <a href="http://docs.djangoproject.com/en/dev/intro/tutorial01/" onclick="urchinTracker('/outgoing/docs.djangoproject.com/en/dev/intro/tutorial01/?referer=');">tutorial que está no site do projeto</a>.</li>
</ul>
<p>Não vou disponibilizar os slides porque eles em sua maioria só tem um monte de fotos e palavras desconexas que não servem pra nada sem mim, são apenas um suporte para a apresentação. Além do mais, não quero fazer <a href="http://en.wikipedia.org/wiki/Spoiler_(media)" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Spoiler_media?referer=');">spoiler</a> para o pessoal das outras cidades.</p>
<p>É isso aí pessoal, obrigado pela recepção calorosa e pelo bate papo! Nos vemos na próxima! <img src='http://gc.blog.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2009/05/24/edted-florianopolis-eu-fui/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>[Encontro Locaweb] Eu fui!</title>
		<link>http://gc.blog.br/2009/05/07/encontro-locaweb-eu-fui/</link>
		<comments>http://gc.blog.br/2009/05/07/encontro-locaweb-eu-fui/#comments</comments>
		<pubDate>Thu, 07 May 2009 18:32:50 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Desenvolvimento Ágil]]></category>
		<category><![CDATA[Encontro Locaweb]]></category>
		<category><![CDATA[Github]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Palestra]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=970</guid>
		<description><![CDATA[Ontem estive em Salvador a convite do meu amigo Fabio Akita para participar do 11o. Encontro Locaweb de Profissionais de Internet. O evento estava bastante legal e eu gostei bastante das únicas duas palestras que assisti, uma do Galileu Vieira (que gostou da minha camisa sobre wingdings) da Microsoft sobre inovações relacionadas a fotografia e [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem estive em <a href="http://maps.google.com/maps?q=Salvador%20Bahia" onclick="urchinTracker('/outgoing/maps.google.com/maps?q=Salvador_20Bahia&amp;referer=');">Salvador</a> a convite do meu amigo <a href="http://akitaonrails.com" onclick="urchinTracker('/outgoing/akitaonrails.com?referer=');">Fabio Akita</a> para participar do <a href="http://www.locaweb.com.br/sobre-locaweb/eventos.html" onclick="urchinTracker('/outgoing/www.locaweb.com.br/sobre-locaweb/eventos.html?referer=');">11o. Encontro Locaweb de Profissionais de Internet</a>. O evento estava bastante legal e eu gostei bastante das únicas duas palestras que assisti, uma do Galileu Vieira (que gostou da minha <a href="http://www.bustedtees.com/fuckwingdings" onclick="urchinTracker('/outgoing/www.bustedtees.com/fuckwingdings?referer=');">camisa sobre wingdings</a>) da <a href="http://www.microsoft.com" onclick="urchinTracker('/outgoing/www.microsoft.com?referer=');">Microsoft</a> sobre inovações relacionadas a fotografia e <a href="http://www.microsoft.com/SILVERLIGHT/" onclick="urchinTracker('/outgoing/www.microsoft.com/SILVERLIGHT/?referer=');">Silverlight</a> e outra da Cíntia Assali do <a href="http://www.google.com/intl/en/corporate/" onclick="urchinTracker('/outgoing/www.google.com/intl/en/corporate/?referer=');">Google</a> que foi um &#8220;medley&#8221; sobre todos os produtos (incluindo coisas que eu não conhecia como o <a href="http://www.google.com/adplanner/" onclick="urchinTracker('/outgoing/www.google.com/adplanner/?referer=');">Google Ad Planner</a>). Quanto mais eu aprendo mais eu vejo que sempre tem coisas pra aprender. <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://akitaonrails.com/2009/05/07/railsconf-09-uncle-bob-martin" onclick="urchinTracker('/outgoing/akitaonrails.com/2009/05/07/railsconf-09-uncle-bob-martin?referer=');">Enquanto o Akita se diverte na Rails Conf</a> eu fiz uma apresentação sobre <strong>Agilidade e Qualidade em projetos de software</strong>. Não vou publicar o PDF da apresentação aqui porque os slides não tem a menor graça e o menor valor se eu não estiver apresentando (já que a maioria deles são fotos e desenhos). No entanto, seguem alguns links para quem quiser se aprofundar no que falamos:</p>
<ul>
<li>Tem alguns livros para se aprofundar em metodologias ágeis <a href="http://gc.blog.br/2008/03/27/10-livros-recomendados-para-desenvolvedores/">nesse post</a>. A maior parte das coisas que falei estão no <em><a href="http://www.amazon.com/Agile-Software-Development-SCRUM/dp/0130676349/ref=pd_bbs_sr_3?ie=UTF8&#038;s=books&#038;qid=1206629818&#038;sr=8-3" onclick="urchinTracker('/outgoing/www.amazon.com/Agile-Software-Development-SCRUM/dp/0130676349/ref=pd_bbs_sr_3?ie=UTF8_038_s=books_038_qid=1206629818_038_sr=8-3&amp;referer=');">Agile Software Development with Scrum</a></em> e no <em><a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658/ref=pd_bbs_sr_1?ie=UTF8&#038;s=books&#038;qid=1206629488&#038;sr=8-1" onclick="urchinTracker('/outgoing/www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658/ref=pd_bbs_sr_1?ie=UTF8_038_s=books_038_qid=1206629488_038_sr=8-1&amp;referer=');">Extreme Programming Explained</a></em>. Também comentei com alguns sobre o <em><a href="http://www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783" onclick="urchinTracker('/outgoing/www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783?referer=');">Lean Software Development</a></em> no final do evento.</li>
<li>O &#8220;Orkut&#8221; de programadores que algumas pessoas não conheciam chama-se <a href="http://github.com/guilhermechapiewski" onclick="urchinTracker('/outgoing/github.com/guilhermechapiewski?referer=');">Github</a>.</li>
<li>E por último, tem mais informações e histórias sobre metodologias ágeis em <a href="http://gc.blog.br/tag/desenvolvimento-agil/">outros</a> <a href="http://gc.blog.br/tag/agile/">posts</a> <a href="http://gc.blog.br/tag/xp/">do meu</a> <a href="http://gc.blog.br/tag/scrum/">blog</a>. <a href="http://gc.blog.br/2008/04/20/fisl-90-desenvolvimento-agil-com-xp-e-scrum/">Esse post em especial (sobre o FISL)</a> tem bastante informação, links para artigos e blogs sobre metodologias e desenvolvimento ágil.</li>
</ul>
<p>Espero que tenham se divertido como eu me diverti! <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2009/05/07/encontro-locaweb-eu-fui/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Louco por automatização!</title>
		<link>http://gc.blog.br/2009/04/15/louco-por-automatizacao/</link>
		<comments>http://gc.blog.br/2009/04/15/louco-por-automatizacao/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 06:13:16 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatização]]></category>
		<category><![CDATA[Desenvolvimento Ágil]]></category>
		<category><![CDATA[Experiências]]></category>
		<category><![CDATA[Shell script]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=863</guid>
		<description><![CDATA[Ultimamente tenho feito uma brincadeira que todos ficam achando que eu sou maluco. Costumo dizer que o meu objetivo a cada dia é tentar fazer com que todo o trabalho que eu faria em 2 dias seja feito em apenas 1 hora, e assim eu posso aproveitar as outras 15 horas escrevendo posts no meu [...]]]></description>
			<content:encoded><![CDATA[<p>Ultimamente tenho feito uma brincadeira que todos ficam achando que eu sou maluco. Costumo dizer que o meu objetivo a cada dia é tentar fazer com que todo o trabalho que eu faria em <strong>2 dias</strong> seja feito em <strong>apenas 1 hora</strong>, e assim eu posso aproveitar as outras 15 horas escrevendo posts no meu blog, estudando coisas novas, jogando <a href="http://www.guitarhero.com" onclick="urchinTracker('/outgoing/www.guitarhero.com?referer=');">Guitar Hero</a> ou até mesmo dormindo (se eu não tivesse <a href="http://twitter.com/gchapiewski/statuses/1416384372" onclick="urchinTracker('/outgoing/twitter.com/gchapiewski/statuses/1416384372?referer=');">insônia</a>).</p>
<p>Parece loucura mas não é. Quando eu ainda era um jovem <a href="http://en.wikipedia.org/wiki/Padawan" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Padawan?referer=');">Padawan</a> um dos vários mentores que tive ao longo da minha vida me ensinou uma lição muito valiosa.</p>
<p>Há bastante tempo atrás, observando um amigo trabalhar percebi que ele passava horas e horas automatizando cada pequena tarefa que faziamos na empresa. Se precisavamos criar uma entrada no DNS, tinha um shell script para fazer isso. Se precisavamos fazer backup, existia um script para fazer isso e ele até já funcionava sozinho. E no caso dele, ele tinha scripts prontos até para facilitar fazer as compras do mês no <a href="http://www.zonasul.com.br" onclick="urchinTracker('/outgoing/www.zonasul.com.br?referer=');">Zona Sul online</a> (isso é sério mesmo). Basicamente ele era obcecado por automatizar tarefas.</p>
<p>Como ele passava a grande maioria do tempo automatizando coisas, um dia eu resolvi perguntar porque ele <strong>perdia tanto tempo</strong> fazendo aquilo. Não era apenas uma obsessão sem sentido, tinha um fundamento muito simples. Ele disse: <em>&#8220;Quanto mais você trabalhar para tornar a sua vida mais fácil automatizando as tarefas repetitivas, mais você terá tempo livre para fazer mais coisas que você quiser! Fazendo assim você vai ter tempo de sobra para investir nas tarefas realmente desafiadoras, que vão exigir toda sua intelectualidade e que vão te dar prazer. É por isso que eu sempre trabalho com a meta mental de reduzir todo o trabalho que eu faria em 2 dias para 1 hora, e fazendo assim todo o dia e a todo momento as coisas simplesmente vão acontecer; e eu vou produzir muito mais que qualquer um sem absolutamente nenhum esforço&#8221;</em>.</p>
<p>Eu sempre achei isso <strong>genial</strong>! Obviamente ele não passava 15 horas de bobeira fazendo outras coisas. O objetivo era apenas estabelecer uma meta agressiva de automatização de tarefas para conseguir alcançar um nível onde muitas coisas podem ser feitas com pouquissimo esforço, e a brincadeira de &#8220;passar 15 horas de bobeira&#8221; serve apenas para ilustrar e tornar o exemplo mais divertido. <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Desde essa época eu venho usando essa abordagem para o máximo de coisas que eu consigo. Meu problema sempre foi que eu nunca tentei de verdade ser tão extremo quanto ele (ao ponto de automatizar até as compras do mês), mas de uns meses pra cá eu tenho sido cada vez mais e mais radical e tenho me tornado cada vez mais produtivo (apesar de ainda ir fisicamente no mercado fazer compras).</p>
<p>&#8220;Radical&#8221; e &#8220;extremo&#8221; são palavras que têm uma conotação muito negativa, mas ser radical ou extremo pode ser muito útil quando se tem um propósito como esse (ou então para se fazer uma abordagem como a que eu postei sobre <a href="http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/" onclick="urchinTracker('/outgoing/guilherme.pro/2009/04/05/why-i-dont-write-code-comments/?referer=');">porque eu não gosto de escrever comentários no código)</a>.</p>
<p>Em projetos de desenvolvimento de software, os ganhos com uma abordagem desse tipo são <strong>impressionantes</strong>. No último projeto que comecei (e que estou atualmente) propús para os meu amigos do time que tentassemos fazer uma abordagem desse tipo &#8211; radical e extrema &#8211; em relação a automatização. A regra que criamos juntos e concordamos ficou bem simples: se alguma coisa precisou ser feita mais de uma vez então ela necessariamente deve ser automatizada.</p>
<p>Depois de aproximadamente 3 semanas de trabalho as coisas funcionam mais ou menos assim:</p>
<ul>
<li>Todos os testes unitários e de aceitação são automatizados e podem ser rodados com apenas um comando (desde criar/atualizar banco de dados até subir <a href="http://seleniumhq.org/projects/remote-control/" onclick="urchinTracker('/outgoing/seleniumhq.org/projects/remote-control/?referer=');">Selenium Server</a>, colocar o sistema em um estado conhecido, executar os testes e depois desfazer isso tudo).</li>
<li>Toda vez que é feito um push para o <a href="http://git-scm.com" onclick="urchinTracker('/outgoing/git-scm.com?referer=');">Git</a>, o <a href="http://integrityapp.com" onclick="urchinTracker('/outgoing/integrityapp.com?referer=');">build server</a> roda primeiro todos os testes unitários automaticamente.</li>
<li>Se qualquer um dos testes falha, uma sirene toca automaticamente alertando que alguém fez besteira.</li>
<li>Se os testes passam, o <a href="http://www.capify.org" onclick="urchinTracker('/outgoing/www.capify.org?referer=');">Capistrano</a> faz um deploy em cada uma das máquinas do ambiente de testes de aceitação e dispara a execução de todos os testes de aceitação nesse ambiente.</li>
<li>Se o banco de dados mudou, o <a href="http://guilhermechapiewski.github.com/simple-db-migrate/" onclick="urchinTracker('/outgoing/guilhermechapiewski.github.com/simple-db-migrate/?referer=');">upgrade do schema de banco de dados também é feito automaticamente</a>.</li>
<li>Finalmente, quando todos os testes passam, é feito um deploy automatico para o ambiente &#8220;live&#8221;, que tem por objetivo ser o lugar onde se pode ver a última versão de desenvolvimento que passa em todos os testes.</li>
<li>Se precisarmos colocar a aplicação em produção, um script fará isso da forma mais simples, segura e instantânea possível.</li>
<li>Se um desenvolvedor precisar desenvolver nesse projeto, basta baixar o código do repositório e com um script tudo se configura e funciona automaticamente.</li>
<li>Se for preciso criar uma nova tela de cadastro padrão desse sistema, basta rodar um script e ela será quase toda criada automaticamente (apenas as particularidades precisam ser configuradas).</li>
<li>&#8230; e por aí vai.</li>
</ul>
<p>Todas essas coisas juntas não foram simples de serem feitas, muito pelo contrário, foi bastante trabalhoso (e até chato algumas vezes). Porém, o resultado não deixa dúvidas: o ganho de performance é <strong>absurdamente</strong> alto e <strong>vale a pena cada minuto <del datetime="2009-04-15T05:46:01+00:00">gasto</del> investido</strong>.</p>
<p>No início levamos muito tempo automatizando tudo mas depois dos primeiros 3 ou 4 dias qualquer coisa passou a levar bem menos tempo do que levaria. Em pouquissimo tempo (algo em torno de 3 semanas, como eu disse) já é possível perceber resultados concretos dessa abordagem. Apesar de ainda termos um monte de coisas para melhorar, nossa agilidade para fazer coisas simples e vê-las funcionando é muito grande!</p>
<p>Não gaste seu nobre tempo fazendo coisas repetidas e chatas. Automatize tudo que puder! <strong>Faça os scripts trabalharem pra você!!!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2009/04/15/louco-por-automatizacao/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>Uma história de fracasso com Scrum</title>
		<link>http://gc.blog.br/2009/03/13/uma-historia-de-fracasso-com-scrum/</link>
		<comments>http://gc.blog.br/2009/03/13/uma-historia-de-fracasso-com-scrum/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 02:26:12 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[Diversão]]></category>
		<category><![CDATA[Integração Contínua]]></category>
		<category><![CDATA[Piada]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=864</guid>
		<description><![CDATA[Veja o que pode acontecer quando você usa Scrum mas não é ágil de verdade:  

]]></description>
			<content:encoded><![CDATA[<p>Veja o que pode acontecer quando você <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html" onclick="urchinTracker('/outgoing/jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html?referer=');">usa Scrum <strong>mas não é ágil de verdade</strong></a>: <img src='http://gc.blog.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Azl4nqLn4-Y&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/Azl4nqLn4-Y&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2009/03/13/uma-historia-de-fracasso-com-scrum/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Agile UX: Como trabalhar com os designers</title>
		<link>http://gc.blog.br/2008/12/19/como-trabalhar-com-os-designers/</link>
		<comments>http://gc.blog.br/2008/12/19/como-trabalhar-com-os-designers/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 19:07:12 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Globo.com]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=598</guid>
		<description><![CDATA[Seguindo com a série de posts-resposta, vou aproveitar mais um e-mail que recebi para falar de um assunto que é campeão em dúvidas e discussões: como trabalhar com os designers. A questão é a seguinte:
Gostaria de tirar uma dúvida (ou mesmo sugestão) sobre como vcs estão trabalhando ai na Globo.com com os designers, arquitetos de [...]]]></description>
			<content:encoded><![CDATA[<p>Seguindo com a série de <a href="http://gc.blog.br/2008/12/16/como-lidar-com-defeitosbugs/">posts-resposta</a>, vou aproveitar mais um e-mail que recebi para falar de um assunto que é campeão em dúvidas e discussões: como trabalhar com os designers. A questão é a seguinte:</p>
<blockquote><p>Gostaria de tirar uma dúvida (ou mesmo sugestão) sobre como vcs estão trabalhando ai na Globo.com com os designers, arquitetos de informação, etc, inseridos nos times ágeis.</p>
<p>A empresa onde trabalho tem um &#8220;setor&#8221; de criação artística muito forte, alias, excelentes profissionais, e eles trabalham independentes praticamente do desenvolvimento.</p>
<p>Devido a maneira da empresa gerir seus projetos &#8211; waterfall &#8211; eles fazem toda a parte de criação e entregam um wireframe+layout de telas prontos pras equipes de desenvolvimento, ai é cada um por si.</p>
<p>Como estamos fazendo um processo de migração de waterfall pra desenvolvimento ágil, esse ponto específico do pessoal de criação inseridos nas equipes ágeis ainda deixa muitas dúvidas, na maneira que eles podem fazer parte dos times.</p></blockquote>
<p>Talvez esse tenha sido um dos maiores problemas que tivemos na <a href="http://gc.blog.br/2008/05/27/como-estamos-indo-com-a-adocao-de-scrum-na-globocom/">adoção de Scrum aqui na Globo.com</a>, ou pelo menos é um dos problemas que têm durado mais tempo. Novamente, não acho que exista uma receita de bolo, cada time ou empresa precisa encontrar a melhor forma de trabalhar. Vou me limitar a dar algumas idéias e falar do que temos tentado fazer aqui para integrar desenvolvimento e design.</p>
<p>Por último, vou falar especificamente de <a href="http://en.wikipedia.org/wiki/Scrum_(development)" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Scrum_development?referer=');">Scrum</a> porque é o que usamos aqui (apesar de usarmos também práticas e conceitos de <a href="http://www.extremeprogramming.org/" onclick="urchinTracker('/outgoing/www.extremeprogramming.org/?referer=');">XP</a> e <a href="http://en.wikipedia.org/wiki/Lean_software_development" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Lean_software_development?referer=');">Lean</a>), mas as mesmas idéias servem para outros processos similares.</p>
<h3>O ponto de vista do processo</h3>
<p>Do ponto de vista do Scrum, o correto seria desenhar a cada história que fosse feita somente as partes da tela necessárias para a conclusão da história.</p>
<p>Fazer todo o design antes nos mínimos detalhes não é o mais indicado porque para isso é preciso fazer um levantamento de requisitos para entender as necessidades e é exatamente assim que funciona a fase de análise e levantamento de requisitos do <a href="http://en.wikipedia.org/wiki/Waterfall_model" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Waterfall_model?referer=');">waterfall</a> (ou seja, o que não queremos fazer).</p>
<p>Outro problema é que se no início de um projeto você só trabalha telas, o que você irá entregar no fim de um <a href="http://scrummethodology.com/scrum-sprint/" onclick="urchinTracker('/outgoing/scrummethodology.com/scrum-sprint/?referer=');">Sprint</a>? Com certeza não será software funcionando e <a href="http://www.possibility.com/wiki/index.php?title=ScrumROI" onclick="urchinTracker('/outgoing/www.possibility.com/wiki/index.php?title=ScrumROI&amp;referer=');">toda aquela história de antecipação do ROI</a> vai por água a baixo.</p>
<p>Por fim, um dos objetivos do desenvolvimento com Scrum é produzir software de maneira iterativa e incremental. A cada Sprint deveria ser entregue uma pequena parte do produto funcionando e quando isso é feito, o <a href="http://www.mountaingoatsoftware.com/product-owner" onclick="urchinTracker('/outgoing/www.mountaingoatsoftware.com/product-owner?referer=');">Product Owner</a> pode chegar em qualquer ponto do projeto e perceber que o investimento em mais um Sprint já não vale mais a pena como valia no início &#8211; porque as histórias que sobraram darão um retorno bem menor do que o valor investido em um Sprint &#8211; e ele pode decidir que é necessário encerrar o projeto por razões econômicas óbvias e partir para outro.</p>
<h3>O ponto de vista do desenvolvedor</h3>
<p>Os princípios de desenvolvimento ágil também não deixam dúvidas. <a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Big_Design_Up_Front?referer=');"><em>Big Design Up Front</em> (BDUF)</a> é coisa de <a href="http://en.wikipedia.org/wiki/Waterfall_model" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Waterfall_model?referer=');">cascateiro</a>, e as práticas de desenvolvimento como <a href="http://en.wikipedia.org/wiki/Test-driven_development" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Test-driven_development?referer=');"><em>Test-Driven Development</em> (TDD)</a> fomentam justamente o desenvolvimento incremental.</p>
<p>Do ponto de vista do desenvolvedor ágil também é um erro desenvolver todo o design antecipadamente.</p>
<h3>O ponto de vista do designer</h3>
<p>Só depois de muitas conversas com o <a href="http://cainanunes.com/" onclick="urchinTracker('/outgoing/cainanunes.com/?referer=');">Cainã Nunes</a> e o <a href="http://www.brazandre.com/blog/" onclick="urchinTracker('/outgoing/www.brazandre.com/blog/?referer=');">André Braz</a> &#8211; dois dos melhores &#8220;criativos&#8221; que temos aqui na Globo.com &#8211; é que eu consegui entender o problema de verdade. Eu não sou nem de perto um especialista no assunto (e nem pretendo ser), mas vou tentar explicar o pouco que eu entendo.</p>
<p>Para entendê-los, precisamos entender a diferença entre &#8220;design de interface&#8221; e &#8220;design de UX&#8221;.</p>
<p>Desenhar uma tela qualquer é muito fácil. No início da minha carreira quando eu trabalhava em uma agência de desenvolvimento de sites cansei de mudar e algumas vezes até fazer layouts. Depois que você aprende a usar direitinho o <a href="http://www.adobe.com/br/products/photoshop/" onclick="urchinTracker('/outgoing/www.adobe.com/br/products/photoshop/?referer=');">Photoshop</a> e o <a href="http://www.adobe.com/br/products/fireworks/" onclick="urchinTracker('/outgoing/www.adobe.com/br/products/fireworks/?referer=');">Fireworks</a> é realmente muito muito muito fácil desenhar uma tela, desenhar objetos diversos e entregar qualquer coisa. Não que todos os designers façam isso, mas que é fácil fazer uma tela qualquer é.</p>
<p>O problema é que aqui na Globo.com nós não queremos fazer somente telas. Além do design e beleza em sí, estamos preocupados com a <a href="http://en.wikipedia.org/wiki/User_experience" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/User_experience?referer=');"><strong>experiência do usuário</strong> (a famosa <strong>UX</strong>)</a>. Ao contrário de desenhar uma simples tela, <a href="http://www.brazandre.com/blog/90/surprise-novelty-and-details-for-a-tasty-experience" onclick="urchinTracker('/outgoing/www.brazandre.com/blog/90/surprise-novelty-and-details-for-a-tasty-experience?referer=');">projetar a UX é muito muito muito difícil</a>. Em UX, não basta ter uma tela, ela precisa ser fácil de usar, os usuários precisam querer usá-la e a experiência de uso tem que ser memorável &#8211; porque isso fará com que os usuários queiram voltar. Isso é tão difícil de fazer que muitas vezes falhamos, mas essa é a nossa mentalidade e como queremos desenvolver nossos produtos.</p>
<p>Quando falamos de projetar a UX, <a href="http://www.brazandre.com/manifesto/" onclick="urchinTracker('/outgoing/www.brazandre.com/manifesto/?referer=');">vários fatores além do Photoshop ou Fireworks estão envolvidos</a> (veja o <em><a href="http://www.brazandre.com/manifesto/" onclick="urchinTracker('/outgoing/www.brazandre.com/manifesto/?referer=');">experience design manifesto</a></em> para ter uma idéia). Aspectos como ergonomia, sentimento e psicologia entram em cena. Alguns projetos que fazemos são testados exaustivamente com usuários comuns no laboratório de usabilidade, e mesmo assim continua difícil de alcançar o resultado que queremos.</p>
<p>Pense friamente e veja como todas essas &#8220;loucuras&#8221; fazem muito sentido. Independente do processo que usamos, não é isso que queremos dar para os nossos usuários nos produtos que desenvolvemos?</p>
<h3>O problema</h3>
<p>O problema é que para projetar a experiência do usuário, os designers acreditam que é difícil (ou impossível) pensar em pequenas partes do site e que é preciso pensar na experiência como um todo. Isso vai totalmente de encontro com a forma que o processo funciona e que os desenvolvedores trabalham&#8230;</p>
<p>Para ser muito sincero, eu não entendia porque eles não gostavam da idéia de ir refatorando o design e ir adaptando conforme as partes fossem sendo desenvolvidas. O que eu sempre entendi é que <em><a href="http://agilemanifesto.org/" onclick="urchinTracker('/outgoing/agilemanifesto.org/?referer=');">indivíduos e interações devem estar acima do processo</a></em>, então ao invés de ficar procurando respostas no processo precisamos confiar nessas pessoas &#8211; que são especialistas no que fazem &#8211; e junto com elas encontrar uma saída.</p>
<p>Isso não nos exime da responsabilidade de fazê-los entender claramente como funcionam os processos e princípios de desenvolvimento ágil para que eles saibam o impacto das suas decisões e ajudem a encontrar uma forma de trabalhar que seja compatível com essa realidade.</p>
<h3>Harmonia entre desenvolvimento e criação</h3>
<p>Depois de muitas tentativas e erros, a forma de trabalhar mais próxima do ideal que eu consigo enxergar é uma mistura dessas três visões.</p>
<p>Os projetistas de UX podem e devem sempre pensar na visão do todo mas não necessariamente precisam entrar em todos os detalhes de cada uma das telas. Com a visão inicial do projeto os designers já têm muitas informações que precisam para começar a trabalhar na experiência do usuário e devem desde já pensar no produto como um todo, mas mais uma vez, isso não quer dizer que tudo precisa ser feito e pensado nos mínimos detalhes antes do projeto. Abaixo ao <a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Big_Design_Up_Front?referer=');">BDUF</a>!</p>
<p>Na nossa equipe os designers têm feito sketches, wireframes e desenhos à mão para discutir funcionalidades e usabilidade. Muitas vezes isso é feito durante as discussões do Sprint planning e re-pensado algumas vezes durante o Sprint. Depois, durante o desenvolvimento, a cada história que vai sendo desenvolvida o time vai implementando junto com os designers, que vão fazendo as pequenas partes necessárias para aquela funcionalidade específica e ao mesmo tempo o design da experiência como um todo é continuamente revisto e refatorado para atender à visão do projeto.</p>
<p>A idéia é mais ou menos como a do <a href="http://www.construx.com/Page.aspx?hid=1648" onclick="urchinTracker('/outgoing/www.construx.com/Page.aspx?hid=1648&amp;referer=');">cone da incerteza</a>: no início do projeto você têm uma vaga idéia de como será na prática a experiência do usuário, e essa certeza vai continuamente aumentando até que depois de algum tempo (mais próximo do fim) você tem certeza absoluta de como ela será.</p>
<p>Ainda não estamos craques em fazer isso mas promete funcionar bem melhor do que tudo que já tentamos.</p>
<h3>Concluindo</h3>
<p>Você é realmente ágil quando não existe algum processo burocrático que te impede de fazer alguma coisa com mais eficiência. Criar um processo ou ambiente que impeça as pessoas de trabalhar ao invés de facilitá-las vai totalmente de encontro à agilidade.</p>
<p>Para citar um exemplo, o próprio criador do <a href="http://en.wikipedia.org/wiki/Scrum_(development)" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Scrum_development?referer=');">Scrum</a> &#8211; <a href="http://jeffsutherland.com/" onclick="urchinTracker('/outgoing/jeffsutherland.com/?referer=');">Jeff Sutherland</a> &#8211; achou melhor <a href="http://gc.blog.br/2008/08/23/agile-2008-conference-from-high-performing-to-hyper-performing-agile-teams/">adaptar o processo na sua empresa para fazer o design das telas antes do desenvolvimento</a>. Nessa empresa os sistemas são feitos para serem usados por médicos e eles vêem o sistema como algo que dificulta o trabalho (torna menos ágil), portanto, a usabilidade do software tem que ser perfeita. Sendo o design tão crítico e tão importante para o sucesso do projeto, eles decidiram se organizar para trabalhar com definição de telas e criação de protótipos antes do desenvolvimento. E não adianta achar que todos os projetos devem ser assim; cada caso é um caso!</p>
<p>As pessoas precisam conversar mais e entender as motivações das outras e o que as levam à tomada de decisão. Quando você consegue entender de verdade o lado do outro (dos designers no meu caso) você começa a entender quais são as reais motivações para o que ele está fazendo. O designer no meu time não queria atrapalhar o processo fazendo todas as telas antes, ele simplesmente queria fazer um trabalho espetacular de usabilidade e essa era a melhor forma que ele conhecia. Fazer um trabalho excelente de UX foi exatamente o que o gerente de UX pediu para ele e é essa a direção que a empresa quer seguir. Só depois que eu me dispus a entender como funciona a cabeça dele (e de todos os outros de UX) é que eu estou conseguindo pensar de outra forma. Agora existem muito mais chances que a adaptação que estamos fazendo no processo funcione melhor.</p>
<p>Então, respondendo a pergunta do post: como trabalhar com os designers? <a href="http://www.google.com.br/search?q=out+of+the+box+thinking" onclick="urchinTracker('/outgoing/www.google.com.br/search?q=out+of+the+box+thinking&amp;referer=');">Pense fora da caixa!</a> Aqui estão algumas idéias e opiniões, mas que eu aconselho é que cada time experimente e encontre a sua resposta.</p>
<p>Se você ficou decepcionado com a resposta e achava que eu ia te dar uma regra para ser seguida sem precisar pensar, talvez você esteja procurando nas <a href="http://pt.wikipedia.org/wiki/Desenvolvimento_%C3%A1gil_de_software" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Desenvolvimento_C3_A1gil_de_software?referer=');">metodologias ágeis</a> a resposta errada e precise de <a href="http://www.nationmaster.com/encyclopedia/PMBOK-Guide" onclick="urchinTracker('/outgoing/www.nationmaster.com/encyclopedia/PMBOK-Guide?referer=');">alguma outra coisa que dê isso para você</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2008/12/19/como-trabalhar-com-os-designers/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Como lidar com defeitos/bugs</title>
		<link>http://gc.blog.br/2008/12/16/como-lidar-com-defeitosbugs/</link>
		<comments>http://gc.blog.br/2008/12/16/como-lidar-com-defeitosbugs/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 02:12:05 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Bugs]]></category>
		<category><![CDATA[Controle de qualidade]]></category>
		<category><![CDATA[Globo Vídeos]]></category>
		<category><![CDATA[Globo.com]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=631</guid>
		<description><![CDATA[Há alguns dias recebi um e-mail com a seguinte dúvida:
Se fosse possível eu gostaria que você falasse um pouco de como funciona para vocês o tratamendo de incidentes em produção e defeitos. Como num ambiente ágil isso é tratado? Eles entram no backlog independente do projeto ou existe um tratamendo especial para fix/test/deploy? Alguma equipe [...]]]></description>
			<content:encoded><![CDATA[<p>Há alguns dias recebi um e-mail com a seguinte dúvida:</p>
<blockquote><p>Se fosse possível eu gostaria que você falasse um pouco de como funciona para vocês o tratamendo de incidentes em produção e defeitos. Como num ambiente ágil isso é tratado? Eles entram no backlog independente do projeto ou existe um tratamendo especial para fix/test/deploy? Alguma equipe específica faz o fix e corrige os testes unitários se for o caso?</p>
<p>Seria legal ter uma luz a respeito disso.</p></blockquote>
<p>Como esse era um assunto que eu já estava para falar mesmo, aproveitei o gancho para fazer esse post.</p>
<p>Depois de conversar com muitas pessoas ao longo do tempo, o que eu percebí é que cada um trabalha de um jeito. Eu não acredito que exista uma forma certa ou errada de trabalhar, o que existem são formas diferentes que funcionam melhor ou pior em determinado lugar ou outro. Apesar disso, deve-se tomar cuidado para não criar alguma forma de trabalhar que viole os princípios básicos da metodologia/framework (<a href="http://en.wikipedia.org/wiki/Scrum_(development)" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Scrum_development?referer=');">Scrum</a> no nosso caso). E por último, nem sempre conseguimos fazer dessa forma que vou falar, mas no geral é o que tentamos fazer.</p>
<p>Antes de tudo nós tentamos tratar cada tipo de defeito de acordo com sua gravidade. Para auxiliar, assim que um defeito chega para a equipe nós tentamos enquadrá-lo em uma das 3 categorias de defeitos, que para facilitar a explicação acabei de batizar de defeitos <strong>simples</strong>, <strong>importantes</strong> e <strong>gravíssimos</strong>.</p>
<h3>Defeitos simples</h3>
<p>São defeitos que têm pouco ou nenhum impacto para o usuário. Para citar um exemplo, nós tivemos recentemente um minúsculo defeito de alinhamento em um dos elementos da <a href="http://video.globo.com/Videos/Player/Esportes/0,,GIM935680-7824-OS+GOLS+DE+JUVENTUS+X+MILAN+PELO+CAMPEONATO+ITALIANO,00.html" onclick="urchinTracker('/outgoing/video.globo.com/Videos/Player/Esportes/0_GIM935680-7824-OS+GOLS+DE+JUVENTUS+X+MILAN+PELO+CAMPEONATO+ITALIANO_00.html?referer=');">página do player do Globo Vídeos</a>. Esse defeito não precisou ser visto imediatamente porque ele não impacta o uso do site e também quase não impacta visualmente, visto que o usuário está prestando muito mais atenção ao vídeo do que no resto.</p>
<p>Neste caso o <a href="http://www.mountaingoatsoftware.com/product-owner" onclick="urchinTracker('/outgoing/www.mountaingoatsoftware.com/product-owner?referer=');">Product Owner</a> é notificado e a regra de priorização normalmente é &#8220;quanto antes corrigirmos isso, melhor&#8221;.</p>
<h3>Defeitos importantes</h3>
<p>São defeitos que não são tão simples como meros detalhes visuais mas que não impedem o produto de funcionar. Por exemplo, tivemos um caso que a <a href="http://www.macromedia.com" onclick="urchinTracker('/outgoing/www.macromedia.com?referer=');">Macromedia</a> lançou uma nova <em><a href="http://en.wikipedia.org/wiki/Software_versioning" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Software_versioning?referer=');">major version</a></em> de <a href="http://www.macromedia.com/software/flash/about/" onclick="urchinTracker('/outgoing/www.macromedia.com/software/flash/about/?referer=');">plugin do Flash</a> e com isso descobrimos que a nossa verificação de versões tinha um problema. O resultado é que a exibição em tela cheia não funcionava corretamente em alguns casos, mas ainda assim o usuário conseguia ver o vídeo numa pop-up que simulava a tela cheia.</p>
<p>Neste caso temos duas opções. A primeira opção é colocar o defeito no backlog para que ele seja a primeira história a ser trabalhada no próximo Sprint. A segunda opção é como normalmente fazemos hoje em dia: o time sempre trabalha a 80~90% da sua capacidade para que quando esses incidentes aconteçam ele possa &#8220;puxar&#8221; ou assumir mais histórias &#8211; desde que todos se sintam confortáveis para isso. Caso não ocorra nenhum incidente durante o Sprint e sobre algum tempo no final, o time pega outra história qualquer que caiba no tempo que sobrou.</p>
<h3>Defeitos gravíssimos</h3>
<p>São defeitos que impedem o produto de funcionar. Usando mais uma vez o caso do <a href="http://video.globo.com" onclick="urchinTracker('/outgoing/video.globo.com?referer=');">Globo Vídeos</a>, um defeito gravíssimo poderia ser algo que fizesse com que os vídeos parassem de ser exibidos, ou que alguma página estivesse indisponível, ou qualquer outra coisa que impeça os usuários de usarem o produto. Quando os defeitos desse tipo chegam para nós eles já passaram em 2 ou 3 níveis de suporte, então provavelmente trata-se de algum problema do software mesmo (e não de ambiente, de configuração do usuário, etc.) e precisa ser visto com a maior urgência possível.</p>
<p>Neste caso, o mais apropriado seria cancelar o Sprint imediatamente, planejar rapidamente, iniciar um novo Sprint com este item como o primeiro item a ser resolvido e fazer um release o mais rápido possível para corrigir o problema.</p>
<p>Para falar a verdade nunca tivemos esse terceiro caso depois que começamos a trabalhar de uma forma mais organizada com Scrum e cuidando cada vez mais da qualidade do que é entregue. Sendo bem realista, como trata-se de um defeito que coloca em risco a imagem/credibilidade/audiência/dinheiro da empresa, pode ser que seja mais apropriado parar tudo e dar atenção máxima ao problema sem seguir um script específico, afinal de contas o bom funcionamento da empresa deve estar sempre à frente de qualquer coisa. Se isso acontecesse, acho que eu daria o Sprint como cancelado, re-planejaria e começaria um novo Sprint.</p>
<h3>Concluindo</h3>
<p>Apesar de tudo isso eu pessoalmente sou favorável a corrigir todo e qualquer bug o mais rápido possível, independente de sua gravidade. Eu sou totalmente contra acumular <a href="http://martinfowler.com/bliki/TechnicalDebt.html" onclick="urchinTracker('/outgoing/martinfowler.com/bliki/TechnicalDebt.html?referer=');">débito técnico</a> porque já sabemos como isso pode afetar a produtividade e velocidade do time a médio/longo prazo. Porém, como já havia dito, dadas as nossas condições e restrições essa foi a forma que melhor funcionou para a nossa realidade &#8211; e para ser franco acho que tem funcionado bem.</p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2008/12/16/como-lidar-com-defeitosbugs/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Agile indo para o buraco?</title>
		<link>http://gc.blog.br/2008/11/22/agile-indo-para-o-buraco/</link>
		<comments>http://gc.blog.br/2008/11/22/agile-indo-para-o-buraco/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 16:46:54 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Agile Manifesto]]></category>
		<category><![CDATA[InfoQ]]></category>
		<category><![CDATA[James Shore]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Uncle Bob]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=532</guid>
		<description><![CDATA[Acabei de voltar de férias, já comecei a recuperar o atraso do meu Google Reader e não demorei muito para me deparar com a polêmica do momento&#8230;
Sei que muitos já fizeram isso mas não poderia deixar de comentar sobre o post do James Shore sobre o declínio e queda das metodologias ágeis. Recomendo a leitura [...]]]></description>
			<content:encoded><![CDATA[<p>Acabei de voltar de férias, já comecei a recuperar o atraso do meu <a href="http://www.google.com/reader" onclick="urchinTracker('/outgoing/www.google.com/reader?referer=');">Google Reader</a> e não demorei muito para me deparar com a polêmica do momento&#8230;</p>
<p>Sei que muitos já fizeram isso mas não poderia deixar de comentar sobre o <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html" onclick="urchinTracker('/outgoing/jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html?referer=');">post do James Shore sobre o declínio e queda das metodologias ágeis</a>. Recomendo a leitura do post, ou no mínimo do <a href="http://www.infoq.com/br/news/2008/11/decline-of-agile" onclick="urchinTracker('/outgoing/www.infoq.com/br/news/2008/11/decline-of-agile?referer=');">resumo do InfoQ</a>.</p>
<p>O ponto do <a href="http://jamesshore.com" onclick="urchinTracker('/outgoing/jamesshore.com?referer=');">James Shore</a> é muito simples: <a href="http://www.infoq.com/news/2008/11/decline-of-agile#view_35238" onclick="urchinTracker('/outgoing/www.infoq.com/news/2008/11/decline-of-agile_view_35238?referer=');">as pessoas estão querendo ir direto para a sobremesa e esquecendo de comer seus vegetais</a>. Agile é muito mais do que desenvolver iterativamente, fazer stand-up meetings e planejamentos ágeis. Não dá para ignorar todas as práticas de engenharia de software que realmente fazem com que a produção e mudanças em softwares sejam ágeis, sem contar todos os princípios e práticas que a princípio podem não fazer muito sentido &#8211; como por exemplo exigir que o cliente esteja presente &#8211; mas no final fazem uma diferença enorme.</p>
<p>Outra polêmica muito grande é sobre a &#8220;popularização&#8221; do Scrum e seu mal uso. Como disse o <a href="http://blog.objectmentor.com/articles/2008/11/16/dirty-rotten-scrumdrels" onclick="urchinTracker('/outgoing/blog.objectmentor.com/articles/2008/11/16/dirty-rotten-scrumdrels?referer=');">Uncle Bob em um excelente post</a>, usar uma metodologia ágil pura e simplesmente não faz com que você faça algo bom automaticamente. É perfeitamente possível fazer desgraças de design usando XP e com toneladas de código gerado com TDD, por exemplo. Será que ainda não deu para perceber que o caminho não é se apegar a metodologias e nomes? Elas são simplesmente uma porta de entrada!</p>
<p>Acho que isso tudo aconteceu porque com o &#8220;surto&#8221; de adoção e procura das metodologias ágeis, do dia para a noite surgiram milhares de especialistas ágeis. Esses agilistas espertalhões surgiram com dezenas de teorias malucas, princípios absurdos e uma quantidade incontável de barbaridades. O mais triste é ver que essas barbaridades são tantas que podem ser encontradas facilmente em listas de discussões, cursos, revistas, blogs e por todos os lados!</p>
<p>Estão pipocando comentários indignados (e com razão) sobre a deturpação de Agile, como o <a href="http://www.milfont.org/tech/2008/11/13/o-que-muda/" onclick="urchinTracker('/outgoing/www.milfont.org/tech/2008/11/13/o-que-muda/?referer=');">Christiano Milfont que comentou sobre a combinação estranha de Agile e CMMI</a>, do <a href="http://fmeyer.org/archives/2008/11/20/o-scrume/" onclick="urchinTracker('/outgoing/fmeyer.org/archives/2008/11/20/o-scrume/?referer=');">Fernando Meyer sobre as pessoas não terem o pé no chão em relação ao Scrum</a>, do <a href="http://queroseragil.wordpress.com/2008/11/15/the-decline-and-fall-of-agile/" onclick="urchinTracker('/outgoing/queroseragil.wordpress.com/2008/11/15/the-decline-and-fall-of-agile/?referer=');">Rafael Mueller</a>, <a href="http://fragmental.tw/2008/11/16/james-shore-skipping-their-vegetables/" onclick="urchinTracker('/outgoing/fragmental.tw/2008/11/16/james-shore-skipping-their-vegetables/?referer=');">Phillip Calçado</a>, <a href="http://dojofloripa.wordpress.com/2008/11/19/a-queda-do-desenvolvimento-agil-parte-2/" onclick="urchinTracker('/outgoing/dojofloripa.wordpress.com/2008/11/19/a-queda-do-desenvolvimento-agil-parte-2/?referer=');">Ivan Sanchez</a>, <a href="http://josepaulopapo.blogspot.com/2008/11/declinio-queda-agil.html" onclick="urchinTracker('/outgoing/josepaulopapo.blogspot.com/2008/11/declinio-queda-agil.html?referer=');">José Papo</a> e <a href="http://www.google.com.br/search?q='Decline+and+fall+of+agile'" onclick="urchinTracker('/outgoing/www.google.com.br/search?q=_Decline+and+fall+of+agile&amp;referer=');">muitos outros</a> comentando sobre o post do <a href="http://jamesshore.com/" onclick="urchinTracker('/outgoing/jamesshore.com/?referer=');">James Shore</a>&#8230; Parece que muitas pessoas na comunidade &#8211; asssim como eu &#8211; têm receio que realmente estejamos entrando numa era de declínio das metodologias ágeis causada pelo seu mal uso e péssimo entendimento.</p>
<p>É realmente triste ver as metodologias ágeis sendo estupradas, é vergonhoso ver pessoas falando abobrinhas gigantescas sobre Scrum sem terem a menor idéia de como funciona e é enojante ver mensagens nas listas de discussões de pessoas que conseguem quebrar todos os <a href="http://agilemanifesto.org/" onclick="urchinTracker('/outgoing/agilemanifesto.org/?referer=');">valores do manifesto ágil</a> em menos de um parágrafo. O triste resultado disso é que já dá para perceber em algumas pessoas o início de uma rejeição à metodologias ágeis&#8230;</p>
<p>Seja <a href="http://en.wikipedia.org/wiki/Extreme_Programming" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Extreme_Programming?referer=');">XP</a>, <a href="http://en.wikipedia.org/wiki/Scrum_(development)" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Scrum_development?referer=');">Scrum</a>, <a href="http://en.wikipedia.org/wiki/Lean_software_development" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Lean_software_development?referer=');">Lean</a> ou qualquer outra, as metodologias ágeis serão tão boas e darão resultados tão bons quanto as pessoas que as usam.</p>
<p>Cuidado com os falsos agilistas, eles estão por todos os lados!</p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2008/11/22/agile-indo-para-o-buraco/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Agile 2008 Conference, aí vou eu!</title>
		<link>http://gc.blog.br/2008/07/31/agile-2008-conference-ai-vou-eu/</link>
		<comments>http://gc.blog.br/2008/07/31/agile-2008-conference-ai-vou-eu/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 21:35:58 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Agile Conference]]></category>
		<category><![CDATA[Coding Dojo]]></category>
		<category><![CDATA[Desenvolvimento Ágil]]></category>

		<guid isPermaLink="false">http://gc.blog.br/?p=336</guid>
		<description><![CDATA[Na próxima semana estarei em Toronto/Canada para a Agile 2008 Conference, a maior conferência sobre desenvolvimento ágil do mundo!
Com mais de 400 apresentações em 5 dias, o calendário da conferência, divulgado no início do mês passado está ótimo! Teremos a presença de vários nomes conhecidos do mundo ágil como Jeff Sutherland, Mary Poppendieck, Robert Martin [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.agile2008.org" onclick="urchinTracker('/outgoing/www.agile2008.org?referer=');"><img src="http://gc.blog.br/wp-content/uploads/2008/07/agile2008_peq.png" alt="Agile 2008" title="Agile 2008" width="150" height="50" class="alignright size-full wp-image-343" align="right" /></a>Na próxima semana estarei em <a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;q=sheraton+hotel+toronto+canada&amp;ie=UTF8&amp;ll=43.650609,-79.384085&amp;spn=0.006552,0.013089&amp;z=17&amp;iwloc=A" onclick="urchinTracker('/outgoing/maps.google.com/maps?f=q_amp_hl=en_amp_geocode=_amp_q=sheraton+hotel+toronto+canada_amp_ie=UTF8_amp_ll=43.650609_-79.384085_amp_spn=0.006552_0.013089_amp_z=17_amp_iwloc=A&amp;referer=');">Toronto/Canada</a> para a <a href="http://www.agile2008.org" onclick="urchinTracker('/outgoing/www.agile2008.org?referer=');">Agile 2008 Conference</a>, a maior conferência sobre desenvolvimento ágil do mundo!</p>
<p>Com mais de <strong>400</strong> apresentações em 5 dias, o <a href="http://www.agile2008.org/program.html" onclick="urchinTracker('/outgoing/www.agile2008.org/program.html?referer=');">calendário da conferência</a>, <a href="http://www.infoq.com/news/2008/06/Agile2008_Program" onclick="urchinTracker('/outgoing/www.infoq.com/news/2008/06/Agile2008_Program?referer=');">divulgado no início do mês passado</a> está ótimo! Teremos a presença de vários nomes conhecidos do mundo ágil como <a href="http://jeffsutherland.com/" onclick="urchinTracker('/outgoing/jeffsutherland.com/?referer=');">Jeff Sutherland</a>, <a href="http://www.poppendieck.com" onclick="urchinTracker('/outgoing/www.poppendieck.com?referer=');">Mary Poppendieck</a>, <a href="http://butunclebob.com/ArticleS.UncleBob" onclick="urchinTracker('/outgoing/butunclebob.com/ArticleS.UncleBob?referer=');">Robert Martin (o Uncle Bob)</a>, <a href="http://www.mountaingoatsoftware.com/" onclick="urchinTracker('/outgoing/www.mountaingoatsoftware.com/?referer=');">Mike Cohn</a>, <a href="http://www.crisp.se/henrik.kniberg/" onclick="urchinTracker('/outgoing/www.crisp.se/henrik.kniberg/?referer=');">Henrik Kniberg</a>, <a href="http://dannorth.net/" onclick="urchinTracker('/outgoing/dannorth.net/?referer=');">Dan North</a>, <a href="http://www.berteigconsulting.com/" onclick="urchinTracker('/outgoing/www.berteigconsulting.com/?referer=');">Mishkin Berteig</a>, <a href="http://www.ambysoft.com/" onclick="urchinTracker('/outgoing/www.ambysoft.com/?referer=');">Scott Ambler</a>, <a href="http://www.lindarising.org/" onclick="urchinTracker('/outgoing/www.lindarising.org/?referer=');">Linda Rising</a>, <a href="http://www.jimhighsmith.com/" onclick="urchinTracker('/outgoing/www.jimhighsmith.com/?referer=');">Jim Highsmith</a>, <a href="http://nealford.com/" onclick="urchinTracker('/outgoing/nealford.com/?referer=');">Neal Ford</a>, <a href="http://jamesshore.com" onclick="urchinTracker('/outgoing/jamesshore.com?referer=');">James Shore</a>&#8230; Vai ter tanta coisa legal que está até difícil escolher quais apresentações vou assistir! E isso tudo sem falar do amigo brasileiro e <a href="http://www.thoughtworks.com/" onclick="urchinTracker('/outgoing/www.thoughtworks.com/?referer=');">ThoughtWorker</a> <a href="http://www.dtsato.com/blog/" onclick="urchinTracker('/outgoing/www.dtsato.com/blog/?referer=');">Danilo Sato</a>, que apresentará o case do <a href="http://submissions.agile2008.org/node/4261" onclick="urchinTracker('/outgoing/submissions.agile2008.org/node/4261?referer=');">Coding Dojo de São Paulo</a>.</p>
<p>Quem lê meu blog já deve ter percebido que <a href="http://gc.blog.br/tag/desenvolvimento-agil/">desenvolvimento ágil</a> é um dos meus assuntos favoritos, por isso podem esperar que provavelmente vou blogar mais do que o normal na semana que vem!</p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2008/07/31/agile-2008-conference-ai-vou-eu/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Como estamos indo com a adoção de Scrum na Globo.com</title>
		<link>http://gc.blog.br/2008/05/27/como-estamos-indo-com-a-adocao-de-scrum-na-globocom/</link>
		<comments>http://gc.blog.br/2008/05/27/como-estamos-indo-com-a-adocao-de-scrum-na-globocom/#comments</comments>
		<pubDate>Wed, 28 May 2008 01:26:26 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[Boris Gloger]]></category>
		<category><![CDATA[Desenvolvimento Ágil]]></category>
		<category><![CDATA[Globo Vídeos]]></category>
		<category><![CDATA[Globo.com]]></category>
		<category><![CDATA[Scrum Master]]></category>
		<category><![CDATA[Sprint]]></category>
		<category><![CDATA[Sprint Retrospective]]></category>
		<category><![CDATA[Sprint Review]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://gc.blog.br/2008/05/27/como-estamos-indo-com-a-adocao-de-scrum-na-globocom/</guid>
		<description><![CDATA[Muita gente têm me perguntado como estamos indo atualmente com a adoção do Scrum na Globo.com. Acho que já é hora de falar alguma coisa sobre isso. Esse não é um case oficial assinado pela Globo.com, são apenas alguns relatos do meu ponto de vista sobre o assunto.
Nossa história no início foi bem parecida com [...]]]></description>
			<content:encoded><![CDATA[<p>Muita gente têm me perguntado como estamos indo atualmente com a adoção do <a href="http://pt.wikipedia.org/wiki/Scrum" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Scrum?referer=');">Scrum</a> na <a href="http://globo.com" onclick="urchinTracker('/outgoing/globo.com?referer=');">Globo.com</a>. Acho que já é hora de falar alguma coisa sobre isso. Esse não é um case oficial assinado pela Globo.com, são apenas alguns relatos do meu ponto de vista sobre o assunto.</p>
<p>Nossa história no início foi bem parecida com as histórias tradicionais. Sabe aquelas empresas que gastam uma semi-fortuna com uma consultoria para desenhar um processo de desenvolvimento de software? Assim estávamos nós no início de 2007. Poucos projetos eram entregues nas datas acordadas e muitos deles falhavam ou não satisfaziam as necessidades dos clientes. Contratar uma grande consultoria de software parecia ser uma boa tentativa de arrumar as coisas, mas o resultado do trabalho foi um documento que descrevia um processo com algumas centenas de páginas que devia ser seguido á risca, isso sem contar as dúzias de documentos padrão para todos os tipos de requisição e comunicação que se possa imaginar.  Dezenas de páginas descreviam quem deveria falar com quem e quem entrega qual documento em qual momento. O processo foi feito para lidar com todas as complexidades, burocracias e exigências que nós mesmos criamos dentro da empresa.</p>
<p>Resumindo a história, isso não funcionou na Globo.com e acho que existem poucas chances de algo tão complexo assim funcionar em algum lugar. E por incrível que pareça, no fim das contas ninguém havia pensado em nada para resolver o problema principal: como entregar o software que nossos clientes querem no menor tempo e com a maior qualidade possível?</p>
<h3>Um pouco de história</h3>
<p>Ao contrário do que acontece em muitas empresas, as <a href="http://pt.wikipedia.org/wiki/Desenvolvimento_%C3%A1gil_de_software" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Desenvolvimento_C3_A1gil_de_software?referer=');">metodologias ágeis</a> na Globo.com vieram de baixo para cima. Tudo começou com um movimento tímido entre alguns desenvolvedores de aplicar <a href="http://www.improveit.com.br/xp/praticas" onclick="urchinTracker('/outgoing/www.improveit.com.br/xp/praticas?referer=');">práticas de desenvolvimento ágil do XP</a> (<a href="http://www.improveit.com.br/xp" onclick="urchinTracker('/outgoing/www.improveit.com.br/xp?referer=');">Extreme Programming</a>) nos projetos. A porta de entrada foi a oportunidade de melhorar a qualidade dos nossos sistemas, pois tinhamos uma incidência muito grande de bugs em produção e poucas aplicações eram testadas adequadamente.</p>
<p>Alguns desenvolvedores mais experientes começaram a desenvolver usando <a href="http://gc.blog.br/2007/05/09/test-driven-development-in-a-nutshell/">desenvolvimento guiado por testes (TDD)</a>, e com isso houve uma melhora nítida na qualidade do que era entregue. Aos poucos, enquanto isso acontecia, algumas seções de <a href="http://www.improveit.com.br/xp/praticas/programacao_par" onclick="urchinTracker('/outgoing/www.improveit.com.br/xp/praticas/programacao_par?referer=');">programação em par</a> aconteciam de vez em quando para difundir o conhecimento e ensinar a técnica a outros programadores, mas ainda de forma muito tímida e sutil (afinal às vezes é difícil convencer que dois programadores fazendo apenas um código é uma coisa boa).</p>
<p>Em seguida foi a vez de organizar as demandas de clientes e os ciclos de desenvolvimento. Lembro-me de ter colocado nessa época o mesmo software em produção <em>quatro vezes em duas semanas</em>, e depois disso o mesmo software foi trabalhado durante dois meses para só depois poder ir novamente para produção. Para piorar, nossos clientes nos traziam todo tipo de demanda que se pode imaginar, sempre em lotes e com prioridade máxima. Por exemplo, acontecia frequentemente do mesmo cliente demandar cinco coisas e todas elas com máxima urgência. Resumindo, os ciclos de planejamento, desenvolvimento e entrega eram totalmente irregulares e afetavam o desempenho de toda a equipe. Explicando todas as dificuldades que tinhamos para nos organizar nesse caos, conseguimos acordar que fariamos entregas constantemente de duas em duas semanas, e que dentro desse período não haveria nenhuma mudança no planejamento, que seria feito no início de cada período. Antes de iniciar cada ciclo de desenvolvimento, os clientes tinham a oportunidade de escolher quais seriam as prioridades da equipe de desenvolvimento nas duas semanas seguintes. Sem perceber eles haviam aceitado a idéia de <a href="http://pt.wikipedia.org/wiki/Desenvolvimento_iterativo_e_incremental" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Desenvolvimento_iterativo_e_incremental?referer=');">desenvolvimento iterativo</a> e <a href="http://c2.com/cgi/wiki?PlanningGame" onclick="urchinTracker('/outgoing/c2.com/cgi/wiki?PlanningGame&amp;referer=');">jogo do planejamento</a>, e nós teriamos alguma organização e paz para fazer o trabalho.</p>
<p>Em meados de Julho de 2007 a empresa decidiu bancar um curso de Scrum com o <a href="http://www.linkedin.com/in/borisgloger" onclick="urchinTracker('/outgoing/www.linkedin.com/in/borisgloger?referer=');">Boris Gloger</a> para alguns membros da nossa equipe e o resultado foi ótimo! Na semana seguinte mesmo já começou a mudança. Todos voltaram com um novo gás e dispostos a mudar a empresa. Me lembro de nessa época alguém ter falado a seguinte frase: &#8220;Agora eu acredito em desenvolvimento de software&#8221;.</p>
<p>Desse momento em diante passamos a aplicar Scrum no nosso time de desenvolvimento. O problema é que estávamos no meio de um projeto feito da forma &#8220;tradicional&#8221; (leia-se <a href="http://en.wikipedia.org/wiki/Waterfall_model" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Waterfall_model?referer=');">waterfall</a>) e toda a fase de análise e especificação já tinha sido concluída. Tudo indicava que seria melhor esperar uma oportunidade melhor para começarmos a adoção, só que nós sabiamos que tinha que ser &#8220;naquela hora ou nunca&#8221; e então começamos a desenvolver nosso principal projeto usando práticas do Scrum.</p>
<p>Quase ninguém na equipe havia trabalhado com desenvolvimento ágil, então achamos que seria mais fácil não falar de Scrum, XP ou qualquer nome diferente. Simplesmente começamos a praticar e durante o desenvolvimento o time foi introduzido às práticas e à forma de trabalhar. As regras são muito simples e por isso foi muita fácil de adotá-las. Ao longo dos cinco Sprints o time foi amadurecendo, entendendo como trabalhar e também foram nascendo algumas adaptações necessárias ao funcionamento do projeto dentro da estrutura da empresa. Por exemplo, tivemos que resolver como seriam criadas as histórias e como isso seria integrado com o nosso sistema de tracking, como integrar com a equipe de QA, como colocar os projetos em produção e diversas outras questões. O <a href="http://blog.fragmental.com.br/2007/08/15/introduzindo-agilidade-num-ambiente/" onclick="urchinTracker('/outgoing/blog.fragmental.com.br/2007/08/15/introduzindo-agilidade-num-ambiente/?referer=');">Phillip falou bastante sobre essa fase introdutória no seu blog</a> no ano passado.</p>
<p>Hoje, o <a href="http://video.globo.com" onclick="urchinTracker('/outgoing/video.globo.com?referer=');">Globo Vídeos 4.2</a>, que é o tal projeto, está em produção. Para os padrões da empresa na época, ele foi um projeto surpreendente do ponto de vista de qualidade. Na versão anterior do Globo Vídeos (4.0) foi necessária uma janela de mais de 24 horas para colocá-lo no ar e ela aconteceu aos trancos e barrancos. Além disso a semana seguinte foi infernal, com muitos bugs para serem corrigidos e várias mudanças arriscadas durante o dia para corrigi-los. Já a versão 4.2 foi colocada em produção em pouco mais de uma hora e na primeira semana nem ouviamos falar do Globo Vídeos. Nem parecia que um dos sites de maior audiência da empresa havia sido quase totalmente substituído por um totalmente novo e com grandes mudanças arquiteturais!</p>
<p>Ao mesmo tempo que acontecia o Globo Vìdeos, o site de inscrições para o <a href="http://bbb.globo.com" onclick="urchinTracker('/outgoing/bbb.globo.com?referer=');">Big Brother Brasil 8</a> foi desenvolvido de cabo a rabo usando Scrum, da forma estrita, como está nos livros. O projeto simplesmente não teria sido feito considerando-se a complexidade e o tempo disponíveis. No final, ele foi um sucesso e além de ter sido entregue no prazo houve uma percepção de muita qualidade por todos &#8211; mais uma prova viva de que o Scrum era uma possível resposta para os nossos problemas. O <a href="http://blog.bardusco.com/2008/05/26/scrum-cmmi/" onclick="urchinTracker('/outgoing/blog.bardusco.com/2008/05/26/scrum-cmmi/?referer=');">Danilo inclusive fez uma apresentação sobre esse projeto</a> na semana passada num evento do <a href="http://www.cesar.org.br/" onclick="urchinTracker('/outgoing/www.cesar.org.br/?referer=');">C.E.S.A.R.</a> em Recife.</p>
<p>Esses dois projetos serviram de aprendizado e base para a estruturação de todos os projetos seguintes na empresa. O sucesso deles foi o grande responsável para ganharmos carta branca e começarmos a implementação de Scrum em massa na Globo.com.</p>
<h3>Como estamos hoje</h3>
<p>Após um ano de metodologias ágeis a empresa já está bem mais madura nas práticas e já temos mais de 10 times usando Scrum.</p>
<p>No fim do ano passado, após um treinamento para pessoas de todas as áreas da empresa, começamos todos a usar Scrum da forma estrita (obviamente houve uma curva de aprendizado até todos estarem mais seguros e praticando melhor). Hoje, alguns meses depois, já é possível perceber diferenças entre alguns times, que acabaram se adaptando de forma diferente por terem problemas e questões diferentes.</p>
<p>Sobre a duração dos <a href="http://www.mountaingoatsoftware.com/scrum" onclick="urchinTracker('/outgoing/www.mountaingoatsoftware.com/scrum?referer=');">Sprints</a>, estamos trabalhando com duas semanas porque achamos que quatro semanas é muito tempo e poderiamos acabar nos tornando lentos na resposta às mudanças. Além do mais já vinhamos usando iterações de duas semanas desde que começamos a adotar desenvolvimento iterativo e continuar com este tamanho de ciclo seria mais fácil para nós.</p>
<p>Em virtude disso, como temos a metade do tempo de desenvolvimento recomendado pelo Scrum, decidimos que só precisamos da metade do tempo de planejamento. A recomendação é que o <a href="http://www.mountaingoatsoftware.com/sprint_planning_meeting" onclick="urchinTracker('/outgoing/www.mountaingoatsoftware.com/sprint_planning_meeting?referer=');">Sprint Planning</a> tenha 8 horas para um Sprint de 4 semanas, e como nosso Sprint é de 2 semanas decidimos fazer um planning de 4 horas. As outras reuniões (<a href="http://www.mountaingoatsoftware.com/sprint_review_meeting" onclick="urchinTracker('/outgoing/www.mountaingoatsoftware.com/sprint_review_meeting?referer=');">Sprint Review</a>, <a href="http://www.improveit.com.br/scrum/sprint_retrospective" onclick="urchinTracker('/outgoing/www.improveit.com.br/scrum/sprint_retrospective?referer=');">Retrospective</a>, <a href="http://www.mountaingoatsoftware.com/daily_scrum" onclick="urchinTracker('/outgoing/www.mountaingoatsoftware.com/daily_scrum?referer=');">Daily Scrum</a>, etc) permaneceram com a mesma duração, lembrando que essa duração não é obrigatória mas sim um <a href="http://blog.improveit.com.br/articles/2007/01/04/time-box" onclick="urchinTracker('/outgoing/blog.improveit.com.br/articles/2007/01/04/time-box?referer=');">limite para não ficarmos discutindo as coisas indefinidamente</a>.</p>
<p>Nossos Sprint Plannings têm melhorado constantemente. No início sempre estouravamos o tempo da reunião discutindo um monte de coisas que não eram necessárias mas agora já estamos mais focados e a reunião tem funcionado bem melhor. As estimativas com <a href="http://www.planningpoker.com/" onclick="urchinTracker('/outgoing/www.planningpoker.com/?referer=');">planning poker</a> também evoluiram um bocado e em várias ocasiões todos os desenvolvedores colocam o mesmo número sem combinar, o que indica que estamos evoluindo na sensação de esforço necessário para desenvolver as coisas.</p>
<p>A equipe, que antes era só de desenvolvedores, agora tem também um designer, um arquiteto de informação, um especialista em programação client-side (JavaScript/CSS/HTML), uma pessoa da equipe de testes e homologação e uma pessoa focada em negócios e <a href="http://en.wikipedia.org/wiki/Return_on_investment" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Return_on_investment?referer=');">ROI</a> (que é o <a href="http://www.mountaingoatsoftware.com/product_owner" onclick="urchinTracker('/outgoing/www.mountaingoatsoftware.com/product_owner?referer=');">Product Owner</a>). Todas essas pessoas sentam próximas umas das outras, e isso efetivamente aumentou muito a produtividade delas e o ritmo do projeto. Aos poucos todo o conhecimento específico está sendo difundido entre os membros da equipe. Infelizmente nem todas as equipes estão completas dessa forma por diferentes motivos (espaço físico, distância entre os prédios da empresa, etc), mas estamos trabalhando duro para resolver isso. Inclusive temos uma reunião chamada de <a href="http://www.scrumalliance.org/articles/46-advice-on-conducting-the-scrum-of-scrums-meeting" onclick="urchinTracker('/outgoing/www.scrumalliance.org/articles/46-advice-on-conducting-the-scrum-of-scrums-meeting?referer=');">Scrum Of Scrums</a>, onde todos os Scrum Masters se reunem para se ajudarem a resolver esses tipos de problemas, que muitas vezes são comuns a várias equipes.</p>
<p>Já que o Scrum não fala nada sobre práticas de desenvolvimento de software, acabamos adotando muitas práticas do <a href="http://www.improveit.com.br/xp" onclick="urchinTracker('/outgoing/www.improveit.com.br/xp?referer=');">XP</a>. Isso fica por conta de cada equipe e cada uma faz o que julga mais adequado para entregar o melhor software possível, mas muitas equipes usam <a href="http://www.improveit.com.br/xp/praticas/tdd" onclick="urchinTracker('/outgoing/www.improveit.com.br/xp/praticas/tdd?referer=');">desenvolvimento guiado por testes</a>, <a href="http://www.improveit.com.br/xp/praticas/integracao" onclick="urchinTracker('/outgoing/www.improveit.com.br/xp/praticas/integracao?referer=');">integração contínua</a>, <a href="http://www.improveit.com.br/xp/praticas/programacao_par" onclick="urchinTracker('/outgoing/www.improveit.com.br/xp/praticas/programacao_par?referer=');">programação em par</a>, <a href="http://www.improveit.com.br/xp/praticas/metafora" onclick="urchinTracker('/outgoing/www.improveit.com.br/xp/praticas/metafora?referer=');">metáforas</a> e várias outras práticas de Extreme Programming com muito sucesso. De fato <a href="http://gc.blog.br/2008/03/31/xp-complementa-o-scrum/">a integração entre Scrum e XP funciona muito bem</a>.</p>
<p>Definimos o nosso <a href="http://www.agile-software-development.com/2007/07/definition-of-done-10-point-checklist.html" onclick="urchinTracker('/outgoing/www.agile-software-development.com/2007/07/definition-of-done-10-point-checklist.html?referer=');">conceito de &#8220;done&#8221; (finalizado)</a>, que é a parte mais divergente entre as equipes. Na equipe de desenvolvimento de vídeos (minha equipe), uma história ou funcionalidade está pronta quando foi desenvolvida (incluindo <a href="http://pt.wikipedia.org/wiki/Teste_unit%C3%A1rio" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Teste_unit_C3_A1rio?referer=');">testes unitários</a>), integrada à base de código, testada novamente (fazemos <a href="http://gcirne.wordpress.com/2008/04/21/criterios-de-aceitacao/" onclick="urchinTracker('/outgoing/gcirne.wordpress.com/2008/04/21/criterios-de-aceitacao/?referer=');">testes de aceitação com critérios definidos no Sprint Planning ao criar as histórias</a>) e homologada. Como nosso time tem uma pessoa da área de <a href="http://en.wikipedia.org/wiki/Quality_Assurance" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Quality_Assurance?referer=');">QA</a>, podemos incluir a homologação da aplicação dentro do Sprint (nem todos os times fazem dessa forma).</p>
<p>Temos na empresa uma equipe que é especializada no ambiente de produção e por isso colocar os sistemas no ar fica fora do nosso Sprint. Quando nosso Sprint termina, entregamos um pacote fechado, testado, homologado e pronto para ser colocado em funcionamento, e então agendamos uma data e hora para que a subida seja feita acompanhada por um ou mais desenvolvedores do time. Todas as alterações de arquitetura e ambiente de deployment, quando necessárias, são feitas dentro do Sprint, somente as mudanças que envolvem risco de indisponibilidade nos sistemas que são feitas numa data que agendamos após o termino do Sprint, geralmente no meio da madrugada (as famosas &#8220;janelas&#8221;). Alguns times, por terem menos criticidade no seu ambiente de deployment, consideram que um Sprint está concluído quando o software está no ar, e o seu último dia do Sprint sempre é uma subida para produção. Como já havia falado anteriormente, cada time se adaptou para funcionar da melhor forma possível de acordo com suas peculiaridades.</p>
<p>E por último, nossas retrospectivas têm sido uma base forte para adaptações no processo e na forma de trabalhar. Para mim foi um aprendizado enorme quando o <a href="http://gc.blog.br/2008/02/01/sprint-review-e-retrospective-com-boris-gloger/">Boris Gloger veio na Globo.com</a> e acompanhou uma retrospectiva inteira do nosso time &#8211; ele deu excelentes toques importantissimos. A última retrospectiva em especial, que aconteceu após uma grande entrega de um projeto interno, mostrou nitidamente a evolução do time e como estamos efetivamente conseguindo aos poucos achar e resolver todos os problemas. Estamos evoluindo devagar mas constantemente e já temos várias equipes com um bom nível de maturidade e evolução na empresa.</p>
<h3>Concluindo&#8230;</h3>
<p>Não só o Scrum como todos as metodologias ágeis dependem muito das pessoas. Na Globo.com não foi diferente e as pessoas certas fizeram toda a diferença. Também existe o outro lado da moeda: algumas pessoas simplesmente não se adaptam a essa forma de trabalhar. Desde o início da adoção nós já perdemos muitos desenvolvedores e acredito que ainda perderemos muito mais. Por conta disso <a href="http://gc.blog.br/2008/01/21/sobre-entrevistas-parte-2/">nossos processos seletivos se tornaram mais exigentes e demorados</a>, porque agora não só precisamos de pessoas que sejam ótimas tecnicamente mas também que tenham um perfil adequado para trabalhar no tipo de ambiente que criamos dentro da empresa.</p>
<p>Além disso é essencial que haja apoio da gerência e &#8220;carta branca&#8221; para que as equipes de desenvolvimento tenham a autonomia necessária para levar o projeto da forma correta. Como estes &#8220;processos&#8221; são muito diferentes dos tradicionais, algumas empresas acabam fazendo modificações antes do tempo por puro medo ou falta de conhecimento, que acabam atrapalhando ou até mesmo arruinando a adoção de uma metodologia ágil. Ainda em relação aos times de desenvolvimento, é essencial que os líderes de equipe (ou <a href="http://www.improveit.com.br/scrum/scrum_master" onclick="urchinTracker('/outgoing/www.improveit.com.br/scrum/scrum_master?referer=');">Scrum Masters</a> no caso do Scrum) sejam muito bem capacitados e que conheçam profundamente as práticas/regras/princípios, não só para que tenham capacidade de argumentação com a empresa mas também para que não façam adaptações que violem os <a href="http://agilemanifesto.org/" onclick="urchinTracker('/outgoing/agilemanifesto.org/?referer=');">princípios básicos das metodologias ágeis</a>.</p>
<p>Por fim, acho que ainda estamos muito longe do ideal e vejo muitas oportunidades de melhoria na nossa forma de trabalhar, mas o mais importante é que agora acreditamos que estamos no caminho certo.</p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2008/05/27/como-estamos-indo-com-a-adocao-de-scrum-na-globocom/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>Mais sobre Product Owners</title>
		<link>http://gc.blog.br/2008/05/24/mais-sobre-product-owners/</link>
		<comments>http://gc.blog.br/2008/05/24/mais-sobre-product-owners/#comments</comments>
		<pubDate>Sat, 24 May 2008 12:27:28 +0000</pubDate>
		<dc:creator>Guilherme Chapiewski</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[InfoQ]]></category>
		<category><![CDATA[Product Owner]]></category>

		<guid isPermaLink="false">http://gc.blog.br/2008/05/24/mais-sobre-product-owners/</guid>
		<description><![CDATA[Para os Product Owners de plantão, seguem alguns artigos interessantes:
Em primeiro, Roman Pichler escreveu um excelente artigo no InfoQ entitulado &#8220;Creating Product Owner Success&#8221; com vários insights sobre como ser um Product Owner de sucesso. Além disso ele também fala de alguns erros comuns cometidos nesse papel. Há uma lista de outros artigos sobre Scrum [...]]]></description>
			<content:encoded><![CDATA[<p>Para os <a href="http://www.mountaingoatsoftware.com/product_owner" onclick="urchinTracker('/outgoing/www.mountaingoatsoftware.com/product_owner?referer=');">Product Owners</a> de plantão, seguem alguns artigos interessantes:</p>
<p>Em primeiro, <a href="http://www.scrumalliance.org/profiles/26-roman-pichler" onclick="urchinTracker('/outgoing/www.scrumalliance.org/profiles/26-roman-pichler?referer=');">Roman Pichler</a> escreveu um excelente artigo no <a href="http://www.infoq.com/" onclick="urchinTracker('/outgoing/www.infoq.com/?referer=');">InfoQ</a> entitulado <em><a href="http://www.infoq.com/articles/agile-product-owner" onclick="urchinTracker('/outgoing/www.infoq.com/articles/agile-product-owner?referer=');">&#8220;Creating Product Owner Success&#8221;</a></em> com vários insights sobre como ser um Product Owner de sucesso. Além disso ele também fala de alguns erros comuns cometidos nesse papel. <a href="http://www.romanpichler.com/publication/publication.html" onclick="urchinTracker('/outgoing/www.romanpichler.com/publication/publication.html?referer=');">Há uma lista de outros artigos sobre Scrum e P.O.s no site do Roman</a>, vale a pena dar uma vasculhada.</p>
<p>O segundo artigo é do <a href="http://blog.aspercom.com.br/" onclick="urchinTracker('/outgoing/blog.aspercom.com.br/?referer=');">Rodrigo Yoshima</a> entitulado <em><a href="http://blog.aspercom.com.br/2008/05/15/product-owner-um-desgracado-ganancioso/" onclick="urchinTracker('/outgoing/blog.aspercom.com.br/2008/05/15/product-owner-um-desgracado-ganancioso/?referer=');">&#8220;Product Owner: Um de$graçado ganancio$o&#8221;</a></em>. O Rodrigo colocou um ponto interessante que eu também vejo acontecendo em alguns projetos: a falta de compromisso com o <a href="http://en.wikipedia.org/wiki/Return_on_Investment" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Return_on_Investment?referer=');">ROI</a>. O <a href="http://pt.wikipedia.org/wiki/Scrum" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Scrum?referer=');">Scrum</a> é totalmente &#8220;ROI-oriented&#8221; e é absolutamente essencial que o P.O. entenda isso plenamente para o sucesso dos projetos.</p>
<p>E por último, o <a href="http://blog.bardusco.com/" onclick="urchinTracker('/outgoing/blog.bardusco.com/?referer=');">Danilo Bardusco</a> escreveu sobre <em><a href="http://blog.bardusco.com/2008/04/12/scrum-product-owner-tecnico/" onclick="urchinTracker('/outgoing/blog.bardusco.com/2008/04/12/scrum-product-owner-tecnico/?referer=');">&#8220;Product Owner Técnicos&#8221;</a></em>, argumentando porque o P.O. também deve ter bons conhecimentos técnicos e como isso é benéfico para que ele possa guiar bem o time e expressar melhor suas idéias.</p>
<p>Além disso, há uns meses <a href="http://gc.blog.br/2008/02/04/o-papel-do-product-owner-no-scrum/">escreví sobre esse mesmo assunto</a> referenciando um artigo do <a href="http://www.acarlos.com.br/" onclick="urchinTracker('/outgoing/www.acarlos.com.br/?referer=');">Antonio Carlos Silveira</a> sobre <em><a href="http://www.acarlos.com.br/blog/2008/02/papel-do-product-owner-e-priorizacao-do-product-backlog/" onclick="urchinTracker('/outgoing/www.acarlos.com.br/blog/2008/02/papel-do-product-owner-e-priorizacao-do-product-backlog/?referer=');">&#8220;O papel do Product Owner e priorização do Product Backlog&#8221;</a></em>, que também vale a pena ler.</p>
]]></content:encoded>
			<wfw:commentRss>http://gc.blog.br/2008/05/24/mais-sobre-product-owners/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

