<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>AkitaOnRails.com</title><link>http://www.akitaonrails.com/posts</link><language>en-US</language><managingEditor>fabioakita@gmail.com (Fabio Akita)</managingEditor><lastBuildDate>Tue, 23 Jun 2009 11:30:58 PDT</lastBuildDate><generator>Enki http://enkiblog.com</generator><description></description><meta xmlns="http://pipes.yahoo.com" name="pipes" content="noprocess" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AkitaOnRails" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/AkitaOnRails" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:browserFriendly>Dedicated to all free thinker skeptical inquirer out there.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Rails Shops in Brazil</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/Y_AOveLZB0w/rails-shops-in-brazil</link><pubDate>Tue, 23 Jun 2009 11:30:58 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5177</guid><description>&lt;p&gt;Uma coisa que eu vi nos vários eventos em várias cidades do Brasil, foi que mais e mais pequenas empresas ou mesmo departamentos governamentais estão avançando em Ruby on Rails. Até nos lugares mais inusitados. Muitos me perguntam para recomendar empresas que desenvolvem em Rails. Aqui fica a questão, você trabalha ou tem uma empresa que desenvolve Rails, dá cursos de Rails, ou tem equipes trabalhando full-time em Rails?&lt;/p&gt;


	&lt;p&gt;Deixe seu comentários neste post, com nome da empresa, contato, descrição do que fazem, website, etc para que todos possam saber. De qualquer parte do Brasil.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y-FZvdNIW3CP1-o2TG30U1aPX0I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y-FZvdNIW3CP1-o2TG30U1aPX0I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y-FZvdNIW3CP1-o2TG30U1aPX0I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y-FZvdNIW3CP1-o2TG30U1aPX0I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Y_AOveLZB0w:GLZi9QMhM7Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Y_AOveLZB0w:GLZi9QMhM7Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Y_AOveLZB0w:GLZi9QMhM7Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=Y_AOveLZB0w:GLZi9QMhM7Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Y_AOveLZB0w:GLZi9QMhM7Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=Y_AOveLZB0w:GLZi9QMhM7Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Y_AOveLZB0w:GLZi9QMhM7Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/Y_AOveLZB0w" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/06/23/rails-shops-in-brazil</feedburner:origLink></item><item><title>[37signals] Quem quer viver no Mundo Real?</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/ahNy3FFqkko/37signals-quem-quer-viver-no-mundo-real</link><pubDate>Thu, 18 Jun 2009 08:07:49 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5176</guid><description>&lt;p&gt;&lt;strong&gt;Tradução:&lt;/strong&gt; &lt;a href="http://www.37signals.com/svn/posts/578-who-wants-to-live-in-the-real-world"&gt;Who wants to live in The Real World?&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;O Mundo Real deve ser um lugar verdadeiramente deprimente de se viver. Aparentemente um lugar onde novas idéias, maneiras não-familiares, e conceitos estrangeiros sempre perdem. Me dizem que a única coisa que funciona no Mundo Real é que seus habitantes já sabem e já fazem. Não importa quão ruim ou ineficiente isso possa ser.&lt;/p&gt;


	&lt;p&gt;Define-se pessoas que vivem lá como vivendo uma Vida Real. Uma existência preenchida com pessimismo, desespero e todo gradiente de preto imaginável. E de forma estranha, essas pessoas vivendo Vidas Reais não parecem interessadas em sair. Eles não estão procurando por uma mudança no cenário do duro Mundo Real.&lt;/p&gt;


	&lt;p&gt;Em vez disso, eles na realidade estão recrutando! Em argumentos em todos os lugares, eles estão tentando convencer aqueles com comportamento mais ensolarado que eles devem se converter para o Mundo Real ou sofrer. Que resistir ao Mundo Real é fútil. Essa chamada persiste mesmo em face a experiências contrárias. Contos de pessoas que realmente fizeram as coisas de forma diferente e ainda vivem para ver o nascer do sol de manhã.&lt;/p&gt;


	&lt;p&gt;Por favor, não seja idiota, não existe nada nem remotamente atraente sobre o Mundo Real. É uma miragem miserável que serve somente como um lugar de comunhão para aqueles que perderam toda a esperança.&lt;/p&gt;


	&lt;p&gt;Relacionado: &lt;a href="http://www.37signals.com/svn/posts/363-define-the-real-world-in-10-words-or-less"&gt;Defina o Mundo Real em 10 palavras ou menos&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OLrlfxcj5ZZmEjvHl2jiBR--1hg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OLrlfxcj5ZZmEjvHl2jiBR--1hg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OLrlfxcj5ZZmEjvHl2jiBR--1hg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OLrlfxcj5ZZmEjvHl2jiBR--1hg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ahNy3FFqkko:bubWL6emLg4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ahNy3FFqkko:bubWL6emLg4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ahNy3FFqkko:bubWL6emLg4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=ahNy3FFqkko:bubWL6emLg4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ahNy3FFqkko:bubWL6emLg4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=ahNy3FFqkko:bubWL6emLg4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ahNy3FFqkko:bubWL6emLg4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/ahNy3FFqkko" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/06/18/37signals-quem-quer-viver-no-mundo-real</feedburner:origLink></item><item><title>[Off-Topic] O Dilema do Blogueiro</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/ZjZJrXct5EM/off-topic-o-dilema-do-blogueiro</link><pubDate>Tue, 16 Jun 2009 15:44:06 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5175</guid><description>&lt;p&gt;Existe um pensamento que me cruza a cabeça de vez em quando. Como blogueiro eu tenho relacionamentos com muitas pessoas da blogosfera em geral, tanto do Brasil quanto fora, muitas pessoas que sempre encontro em conferências, tudo  muito gratificante pois eu sempre aprendo mais. Além disso já trabalhei em muitos lugares então sempre existem contatos antigos e antigas experiências.&lt;/p&gt;


	&lt;p&gt;Por outro lado tenho um dilema, especialmente quando envolve assuntos sobre críticas porque muitas pessoas lêem e assumem a carapuça de formas interessantes que, obviamente, eu não posso controlar. Contexto é tudo.&lt;/p&gt;


	&lt;p&gt;Exemplo clássico, os artigos &lt;a href="http://www.akitaonrails.com/2009/05/31/off-topic-as-5-disfun--es-de-equipes-em-c-digo"&gt;As 5 Disfunções em Equipe de Código&lt;/a&gt;, &lt;a href="http://www.akitaonrails.com/2009/06/05/tradu--o-conselhos-para-gerentes-de-desenvolvimento-de-software"&gt;Conselho para Gerentes de Desenvolvimento de Software&lt;/a&gt;, ou &lt;a href="/2009/03/30/off-topic-net-negative-producing-programmer"&gt;Net Negative Producing Programmer&lt;/a&gt;. Razões para escrever eu nunca tenho uma única específica, a inspiração aparece, eu escrevo. Nos últimos meses tenho estudado muito material a respeito, diversos livros, dezenas de artigos, porque eu sempre gosto de entender o que faço mais a fundo e porque eu entendo que nunca vou saber tudo. (O que significa que tem mais artigos meus nessa linha ainda para vir :-) Em particular dois desses artigos foram inspirados numa conversa que tive durante conferências recentes com um bom amigo meu.&lt;/p&gt;&lt;p&gt;No meio disso, sempre vão surgir histórias, coisas que eu ou amigos meus já passaram e que eu descrevo. Mas não especifico um caso em particular, uma pessoa em particular, eu tento entender um comportamento geral e descrevo como tal. É como observar fenômenos naturais, tento descrever as consequências (como as 5 disfunções, &lt;span class="caps"&gt;NNPP&lt;/span&gt;) e tento entender quais as possíveis causas, às vezes até de forma propositadamente ingênua.&lt;/p&gt;


	&lt;p&gt;Às vezes os motivos são diretamente pessoais mesmo. Vejam artigos como &lt;a href="/2007/3/14/off-topic-um-desabafo"&gt;Um Desabafo&lt;/a&gt; e &lt;a href="/2007/06/19/um-desabafo-parte-ii"&gt;Um Desabafo, parte II&lt;/a&gt; que escrevi no começo de 2007. Vale a pena ler porque num blog só os artigos recentes ficam em destaque, mas se verem o que escrevo desde 2006, observarão que de tempos em tempos eu escrevo artigos com temas provocativos de forma parecida.&lt;/p&gt;


	&lt;p&gt;O &amp;#8220;problema&amp;#8221;: até amigos próximos meus já ficaram um pouco mordidos com artigos como esses. Já recebi alguns hate-mails, algumas indiretas online e offline, essas coisas simpáticas  :-) Sinceramente não me preocupo nem um pouco com isso, eu sempre vou pecar por mais do que por menos e a lógica é óbvia: se eu achasse que o que escrevo está errado eu não escreveria. Quando eu erro, me desculpo. Mas a popularidade do blog às vezes dá mais peso ao que eu falo do que acho que deveria.&lt;/p&gt;


	&lt;p&gt;Pelo menos para meus amigos e quem eu normalmente costumo conversar pelo menos via IM, fiquem sossegados, se eu estiver com problemas com &lt;em&gt;você&lt;/em&gt; em particular, vou conversar diretamente, em particular. Da mesma forma a recíproca é verdadeira, eu prefiro que se &lt;em&gt;você&lt;/em&gt; tem problemas comigo, que venha falar diretamente também. É sempre o caminho mais curto e o de entendimento mais rápido.&lt;/p&gt;


	&lt;p&gt;Mas, como eu disse, &lt;em&gt;contexto&lt;/em&gt; é tudo. É como horóscopo, você lê e realmente se identifica &lt;em&gt;&amp;#8220;nossa, sou exatamente eu.&amp;#8221;&lt;/em&gt; Isso são estereótipos, e poucas pessoas são tão monofacetadas assim e nem deveriam se considerar como tal. Um efeito que existe em textos gerais é o seguinte: não é difícil encontrar paralelos de qualquer coisa com qualquer coisa. Exatamente como eu apresentei em &lt;a href="/2008/03/01/off-topic-somos-matematicamente-ignorantes"&gt;Somos Matematicamente Ignorantes&lt;/a&gt;, coincidências são muito comuns, muito mais do que achamos que deveria.&lt;/p&gt;


	&lt;p&gt;Meus artigos não tem o objetivo de estabelecer verdades absolutas, são pensamentos, opiniões, desenvolvimentos que eu apresento e que gostaria de receber feedback para poder observar outros argumentos (argumentos, não trollismos) e possivelmente aumentar minha visão sobre o assunto.&lt;/p&gt;


	&lt;p&gt;Não sei se outros blogueiros tem o mesmo &amp;#8220;problema&amp;#8221;. E eu digo entre aspas porque discordar do meu ponto de vista não é um problema. É para isso que existem os comentários: coloquem seu ponto de vista, especialmente se for contrária e se tiver bons argumentos, isso vai enriquecer o tema. Eu achava que isso deveria ser óbvio, mas pelo jeito não é então aqui vai a explicação.&lt;/p&gt;


	&lt;p&gt;Finalmente, reafirmo que não pretendo mudar em nada a forma como escrevo. Foi tudo isso apenas para dizer que nada muda :-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-vKxX3lKotXqqTitTEz2SexPOU4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-vKxX3lKotXqqTitTEz2SexPOU4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-vKxX3lKotXqqTitTEz2SexPOU4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-vKxX3lKotXqqTitTEz2SexPOU4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZjZJrXct5EM:TweOpGbrMbU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZjZJrXct5EM:TweOpGbrMbU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZjZJrXct5EM:TweOpGbrMbU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=ZjZJrXct5EM:TweOpGbrMbU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZjZJrXct5EM:TweOpGbrMbU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=ZjZJrXct5EM:TweOpGbrMbU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZjZJrXct5EM:TweOpGbrMbU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/ZjZJrXct5EM" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/06/16/off-topic-o-dilema-do-blogueiro</feedburner:origLink></item><item><title>[Tradução] Ruby na ThoughtWorks</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/nw5nftpCAkA/tradu--o-ruby-na-thoughtworks</link><pubDate>Sun, 14 Jun 2009 22:50:21 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5173</guid><description>&lt;p&gt;Esta é a tradução em português do artigo original de Martin Fowler no seu Bliki. Você pode ler a versão original &lt;a href="http://martinfowler.com/articles/rubyAtThoughtWorks.html"&gt;aqui&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;A ThoughtWorks começou a usar Ruby para projetos em produção em 2006, de lá até o fim de 2008 tínhamos 41 projetos em ruby. Preparando para uma palestra na QCon eu pesquisei esses projetos para examinar que lições poderíamos tirar dessa experiência. Eu descrevo nossos pensamentos até agora sobre questões comuns da produtividade, velocidade e mantenabilidade de Ruby. Até agora nossas conclusões são que Ruby é uma plataforma viável e que deve ser considerada seriamente para muitas formas de aplicações &amp;#8211; em particular aplicações Web usando Ruby on Rails. Eu também avanço por sobre algumas lições técnicas, incluindo alguns pensamentos sobre testar Active Record.&lt;/blockquote&gt;&lt;p&gt;A ThoughtWorks, minha contratante, é primariamente uma empresa de entrega de software. Nós construímos softwares para pessoas, incluindo produtos construídos para nós mesmos. Uma parte importante de nossa filosofia é abertura para usar diferentes plataformas de desenvolvimento, de forma que podemos escolher a plataforma apropriada para nossos diferentes clientes. Quando me juntei à ThoughtWorks em 2000, Java era nossa plataforma mais usada. Logo depois começamos a trabalhar com .NET e essas duas plataformas dominaram nosso trabalho pelo meio da década.&lt;/p&gt;


	&lt;p&gt;Algumas pessoas, entretanto, começaram com linguagens de script &lt;span class="caps"&gt;LAMP&lt;/span&gt;, em particular Ruby. A aparição do framework web Ruby on Rails deu um grande empurrão ao Ruby, o suficiente para que em 2006, começássemos a fazer alguns projetos sérios com a essa plataforma. Enquanto escrevo isto em 2009, a plataforma Ruby tem uma grande parcela de nosso trabalho, não tanto quanto Java e C#, mas uma porção significante.&lt;/p&gt;


	&lt;p&gt;Durante esses três anos aprendemos muito sobre Ruby na prática. Quando 2009 começou, eu fui convidado para falar sobre nossas experiências com Ruby para a conferência QCon. Me preparando para isso eu conduzi uma extensiva pesquisa de nossos projetos Ruby e questionei nosso líderes Ruby por seus pensamentos e experiências. Levou mais tempo do que gostaria para produzir este artigo também, mas aqui está ele.&lt;/p&gt;


	&lt;p&gt;Dividi este artigo em 3 partes. Para começar olharei para o perfil de experiência de nossos projetos Ruby, para dar uma sensação de quais tipos de projetos estivemos tocando nesses últimos anos. Em seguida vou para várias questões comuns sobre Ruby e como nossas experiências respondem a elas. Finalmente vou para algumas lições que aprendemos por usar Ruby.&lt;/p&gt;


	&lt;h2&gt;A Forma de Nossos Projetos&lt;/h2&gt;


	&lt;p&gt;De 2006 a 2008, a ThoughtWorks se envolveu em cerca de 41 projetos de Ruby. Eu defino um projeto de Ruby como um projeto onde Ruby foi a principal linguagem de desenvolvimento. Ruby apareceu em outros projetos também, existem muitos desenvolvimentos recentes usando ruby para automações ou testes funcionais para projetos de Java. Quase todos esses projetos envolveram Rails, e a maioria são projetos de web sites onde Rails é pelo menos tão importante quanto Ruby.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/6/15/projectScatter_original.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;Figura 1: Gráfico de Dispersão de picos de contagem de pessoas vs. tamanho envolvido por projetos Ruby da ThoughtWorks de 2006 a 2008.&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;A Figura 1 dá uma sensação do tamanho dos projetos que estivemos envolvidos. A contagem de pessoas é o pico de todos os envolvidos (ThoughtWorks, clientes e outros; desenvolvedores, gerentes de projetos, analistas, etc.) O tamanho é a duração que estivemos envolvidos no projeto.&lt;/p&gt;


	&lt;p&gt;Projetos Ruby são geralmente vistos como mais curtos e menores do que outros projetos. Infelizmente não tenho dados comparativos com outros de nossos projetos em outras plataformas para ter uma sensação melhor se isso é verdade ou não. Certamente podemos ver que a maioria desses projetos envolve menos de 20 pessoas por menos de um ano.&lt;/p&gt;


	&lt;p&gt;Existem alguns projetos fora da curva. De longe nosso maior projeto é o que vou me referir como projeto Atlanta, com uma contagem de pessoas acima de 40. Outro grande e ainda corrente é o Jersey. Esses dois estão relacionados no sentido que houve muita rotação de pessoas entre eles, algumas de nossas mais experientes pessoas de Ruby estiveram em ambos.&lt;/p&gt;


	&lt;p&gt;O terceiro projeto é o Mingle, que é um caso particularmente interessante já que é um produto da ThoughtWorks Studios &amp;#8211; e como tal podemos ser mais públicos sobre ele do que outros que fizemos para clientes. É um projeto longo e corrente e também internacional: começando na Austrália, movendo para Beijing e agora multi-site entre Beijing e São Francisco.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/6/15/yearStrip_original.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;Figura 2: Gráfico de Tiras mostrando esforço por projeto a cada ano.&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;A Figura 2 olha para a forma do gráfico de maneira diferente, olhando para o esforço em vários projetos que estivemos envolvidos a cada ano. Cada ponto no gráfico representa o esforço total (todas as pessoas) em um projeto durante esse ano. Esse gráfico fornece uma boa sensação de quanto crescimento vemos em projetos Ruby durante os últimos três anos.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/6/15/countryStrip_original.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;Figura 3: Gráfico de Tiras mostrando esforço de projetos por país.&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;A Figura 3 mostra projetos por país onde foram feitos. Não é muito exato já que não tentei lidar com alguns projetos multi-site que se moveram (Mingle, por exemplo, eu classifiquei como China embora sua história tenha variado.)&lt;/p&gt;


	&lt;p&gt;A divisão por país mostra que os Estados Unidos viram o maior interesse por trabalhos em Ruby. A Índia também viu uma boa quantidade &amp;#8211; de fato nosso primeiro projeto de Ruby foi em Bangalore. A Inglaterra foi onde teve a menor quantidade. Isso provavelmente reflete o fato que nossos evangelistas de Ruby era na maioria baseados nos Estados Unidos e existiu ceticismo considerável sobre Ruby na Inglaterra. O nível de envolvimento da Índia é encorajador, tradicionalmente a Índia é vista como sendo atrasada no uso de novas tecnologias mas estamos conseguindo fazer um trabalho razoável de tornar nossos escritórios na Índia bem diferentes.&lt;/p&gt;


	&lt;p&gt;Nossa experiência vendendo trabalho de Ruby é que usar linguagens dinâmicas como Ruby se encaixa bem com nossa imagem geral. Nossa força é que contratamos pessoas talentosas que são difíceis de serem atraídos por organizações típicas de TI. Ruby tem filosofia de um ambiente que dá a um desenvolvedor talentoso mais vantagem, do que tentar proteger os desenvolvedores menos talentosos dos seus erros. Um ambiente como Ruby, portanto, dá aos nossos desenvolvedores mais habilidade para produzir seu verdadeiro valor.&lt;/p&gt;


	&lt;p&gt;Ruby também se encaixa com nossa preferência por processos ágeis de desenvolvimento de software. A filosofia ágil é sobre feedback rápido construindo software e revisando regularmente com o cliente. Quanto mais produtivo for um ambiente de desenvolvimento, mais freqüentemente podemos revisar o progresso e melhor o processo ágil de &amp;#8220;inspecionar e adaptar&amp;#8221; funciona.&lt;/p&gt;


	&lt;h2&gt;Questões Sobre Ruby&lt;/h2&gt;


	&lt;h3&gt;Ruby foi a escolha correta?&lt;/h3&gt;


	&lt;p&gt;Olhando para trás em nossos 41 projetos, talvez a questão mais importante para perguntar é se a plataforma Ruby foi a escolha correta. Uma forma de responder é perguntar aos líderes técnicos do projeto se, em retrospectiva, eles acham que foi a escolha correta.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/6/15/hindsightPie_original.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;Figura 4: Ruby foi a escolha correta de plataforma para esse projeto?&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;Como a Figura 4 indica, o voto foi muito positivo com 36 contra 5 suportando a escolha. Como um grupo, nossos líderes técnicos normalmente não são tímidos em indicar se estão insatisfeitos com a escolha tecnológica. Então eu vejo isso como uma afirmação firme da viabilidade da plataforma Ruby como uma escolha razoável.&lt;/p&gt;


	&lt;p&gt;Eu me aprofundei mais nos cincos projetos arrependidos. A primeira coisa que se sobressaiu foi que em quatro dos cinco casos, os líderes sentiram que usar Ruby não foi uma escolha mais ruim do que as alternativas. Por Ruby não ser uma coisa comum significa que sentimos que usar Ruby tem que vir com mais benefícios que as alternativas. Quatro dos cinco também relataram problemas por causa de integração com tecnologias .NET, por exemplo. Outro tema que dois dos projetos relataram foram problemas sociais &amp;#8211; as pessoas na organização dos clientes se opuseram a Ruby ou outras linguagens dinâmicas. O projeto na pior situação mostrou esse problema social &amp;#8211; uma organização de TI que resistiu com unhas e dentes ao Ruby (o patrocinador de negócios nesse caso foi um fã de Ruby.)&lt;/p&gt;


	&lt;p&gt;De fato quanto mais eu perguntava sobre as bandeiras vermelhas por usar Ruby em um projeto de software, a única resposta clara foi a respeito de problemas sociais. Ruby era de forma geral aceita ou encorajada por nosso trabalho de desenvolvimento de software, mas o maior sinal para evitá-la seria uma resistência social da parte do cliente.&lt;/p&gt;


	&lt;h3&gt;Ruby é mais produtivo?&lt;/h3&gt;


	&lt;p&gt;Quando as pessoas perguntam porque Ruby deveria ser usado em um projeto, a resposta mais comum é que ele aumenta a produtividade. Um indicador inicial foi a afirmação de um projeto que sugeria que Ruby deu uma melhoria de uma ordem de magnitude na produtividade.&lt;/p&gt;


	&lt;p&gt;Como um resultado parecia óbvio perguntar aos líderes técnicos dos projetos sobre a produtividade &amp;#8211; o ruby aumentou a produtividade e se sim, por quanto. Eu pedi que comparassem com projetos feitos em Java ou .NET da maneira mais produtiva que eles sabiam como.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/6/15/productivityBar_original.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;Figura 5: Quanto Ruby melhorou a produtividade para este projeto? (Comparado com a melhor ferramenta mainstream que você conhece.)&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;Não leve esses resultados ao pé da letra. Afinal não existe maneira objetiva de medir produtividade de software. Esses são resultados subjetivos e qualitativos dos líderes técnicos de cada projeto (eu não consegui respostas para todos os projetos.) Entretanto eles ainda sugerem que existiu uma real melhoria de produtividade acontecendo.&lt;/p&gt;


	&lt;p&gt;A sugestão é mais reforçada considerando os envolvidos. Scott Conley, que gerencia nosso escritório de Atlanta, relata que uma vez que um projeto Ruby começa a andar, ele espera precisar de 50% mais pessoas focadas em preparação de requerimentos do que o esperado em outras tecnologias.&lt;/p&gt;


	&lt;p&gt;Uma coisa que vimos é que você não deve esperar melhorias de produtividade aparecer imediatamente. Eu ouvi diversas vezes que as pessoas ficavam alarmadas nas semanas iniciais sobre o progresso devagar de novas equipes de projetos Ruby &amp;#8211; uma conseqüência do que chamamos de &lt;a href="http://martinfowler.com/bliki/ImprovementRavine.html"&gt;Ravina de Melhoria&lt;/a&gt;. Realmente leva tempo para uma equipe Ruby se inteirar sobre como a plataforma funciona e durante esse tempo eles serão mais devagar do que o esperado.&lt;/p&gt;


	&lt;p&gt;A ravina de melhoria é um fenômeno comum e um paliativo comum é garantir que existem algumas pessoas experientes na equipe. Nossa história, entretanto, é que a experiência mais importante aqui é com linguagens dinâmicas que suportam os tipos de meta-programação que o Ruby suporta, mais do que especificamente experiência com Ruby. Como o Scott Conley coloca: a diferença é entre risco de eficiência e risco de entrega. Uma equipe com experiência em linguagens dinâmicas mas pouca experiência com Ruby será mais devagar inicialmente (risco de eficiência) mas uma equipe sem qualquer experiência com linguagens dinâmicas podem produzir código ruim que poderia arriscar a entrega no geral.&lt;/p&gt;


	&lt;h3&gt;Ruby é lento?&lt;/h3&gt;


	&lt;p&gt;Em uma palavra, &amp;#8220;sim&amp;#8221;. Procure por aí por benchmarks na internet e verá numerosas pesquisas que mostram que, mesmo pelos padrões de linguagens de script, Ruby é uma tartaruga.&lt;/p&gt;


	&lt;p&gt;No geral, entretanto, isso tem sido irrelevante para nós. A maioria do nosso uso de Ruby é construindo websites ligados a bancos de dados. Eu visitei muitos projetos durante muitos anos, usando ruby e outras tecnologias, quase todo projeto gasta tempo trabalhando em problemas de performance e em quase todos os casos esses problemas eram no acesso a banco de dados. As pessoas gastam tempo &lt;em&gt;tunando&lt;/em&gt; SQL e não tunando o código de processamento. Então, já que quase toda aplicação é limitada por I/O, o uso de linguagens mais lentas para processamento não trás um impacto tão importante à performance geral do sistema.&lt;/p&gt;


	&lt;p&gt;Vocês vão notar que eu usei o comum palavreado absoluto no parágrafo anterior. Embora quase todo projeto seja limitado por I/O, você ainda cai em exceções ocasionais &amp;#8211; e um interessante é o Mingle. O Mingle é incomum em muitas maneiras. Sua forma de mostrar telas de forma dinâmica significa que ele não pode usar nenhum tipo de caching de página para melhorar performance, o que imediatamente a torna diferente da maioria das aplicações web. Como resultado ele não é limitado por I/O e para melhor performance  precisa de mais hardware do que a maioria das pessoas espera (um box de quatro cores com 2Gb de memória para suportar equipes de 20-40 pessoas.)&lt;/p&gt;


	&lt;p&gt;Mas a equipe do Mingle ainda sente que fizeram a escolha correta com Ruby. Eles construíram muitas funcionalidades rapidamente e sentem que o ganho de produtividade que tiveram com o Ruby vale o custo de mais demanda de hardware no produto final. Como com muitas coisas, esta é uma troca de hardware vs. produtividade &amp;#8211; uma das mais velhas trocas na computação. Cada equipe precisa pensar sobre qual importa mais. A boa notícia aqui é que o Mingle tem ótima escalabilidade horizontal (jogue mais processadores nele e terá proporcionalmente melhor performance). Escalabilidade de hardware é normalmente a coisa mais valiosa que você pode ter nessas situações enquanto o custo de hardware decresce.&lt;/p&gt;


	&lt;p&gt;Eu devo re-enfatizar. Para a maioria dos projetos a velocidade do Ruby tem sido irrelevante já que quase todos eles são limitados por I/O. Mingle é uma exceção, não o caso comum.&lt;/p&gt;


	&lt;h3&gt;Um código de Ruby é difícil de entender?&lt;/h3&gt;


	&lt;p&gt;Uma preocupação que freqüentemente ouvimos sobre Ruby é que sua tipagem dinâmica, suporte a meta-programação e a falta de ferramentas coloquem um risco de deixar um código difícil de seguir. Em geral isso não tem se tornado um problema na prática para nós. A história que eu ouço é que o fato de poder escrever muito menos código para a mesma funcionalidade significa que é mais fácil manter o código limpo do que é para a maioria das linguagens mais populares.&lt;/p&gt;


	&lt;p&gt;Isso dito, é importante lembrar do nosso contexto. Os desenvolvedores da ThoughtWorks tendem a ser muito acima da média em termos de habilidade e também altamente disciplinados em técnicas como Extreme Programming. Colocamos alto valor em testes (algo que é verdade na comunidade Ruby em geral) e esses testes ajudam muito a manter o código limpo. Então não posso dizer se nossa experiência é comparável a outros desenvolvedores menos disciplinados. (Mesmo as ferramentas e relativo controle de outras linguagens não nos impedem de ver código bem horrível, então é uma questão em aberto se um código ruim de Ruby seria tão mais ruim.)&lt;/p&gt;


	&lt;p&gt;Temos visto uma seqüência comum de atitudes sobre meta-programação.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/6/15/metaprogramming_original.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;Figura 6: Progressão de sentimentos sobre meta-programação.&lt;/em&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Assustador e Ruim: as pessoas são prudentes quanto a meta-programação e não a usam muito.&lt;/li&gt;
		&lt;li&gt;Assustador e Bom: as pessoas começam a ver valor na meta-programação mas ainda não se sentem confortáveis usando.&lt;/li&gt;
		&lt;li&gt;Fácil e Bom: as pessoas ficam confortáveis e começam a usar demais, o que pode complicar o código.&lt;/li&gt;
		&lt;li&gt;Fácil e Ruim: as pessoas são prudentes com meta-programação e entendem que é muito útil em pequenas doses.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;No fim, a analogia que gosto mais para esse tipo de técnica é que eles são como receitas de remédios. Muito valiosos em pequenas quantidades mas você precisa se certificar de não cair numa overdose.&lt;/p&gt;


	&lt;p&gt;Assim como muitas outras coisas, experiência é a maior ajuda aqui, podendo levá-lo por essa curva mais rápido. Em particular é importante esperar essa curva de adoção, particularmente a utilização excessiva. Quando se aprende alguma coisa nova é normal usar demais em algum estágio porque sem cruzar essa linha é difícil saber onde fica a linha. Também pode ser útil tentar construir um sandbox &amp;#8211; uma área relativamente contida de código para as pessoas testarem meta-programação. Com um sandbox é mais fácil desfazer o uso excessivo depois.&lt;/p&gt;


	&lt;h3&gt;Ruby é uma plataforma viável?&lt;/h3&gt;


	&lt;p&gt;Todas essas questões se somam na pergunta chave para nós: Ruby (e Rails) é uma plataforma viável para nós e nossos clientes? A resposta até agora é um grande &amp;#8220;sim&amp;#8221;. Ele oferece ganhos palpáveis em produtividade, nos permitindo ser mais responsivos e produzir melhor software, mais rapidamente para nossos clientes. Isso não significa que é a escolha certa para todas as situações. Escolher uma plataforma de desenvolvimento nunca é uma escolha simples, particularmente porque normalmente é mais uma coisa social do que técnica. Mas a conclusão é que Ruby é uma escolha que vale a pena considerar, o suficiente para nós querermos manter essa ferramenta em nossa caixa de ferramentas.&lt;/p&gt;


	&lt;p&gt;Uma outra questão interessante aqui é o papel de outras linguagens menos comuns. Deveríamos usar Groovy, F#, Python, Smalltalk e outros? Eu não ficaria surpreso se muitas das mesmas trocas que vimos com Ruby forem também verdade para qualquer dessas linguagens. Espero ver algumas dessas em nossa caixa de ferramentas no futuro.&lt;/p&gt;


	&lt;p&gt;Também devo estressar que não é um caso de &amp;#8220;e/ou&amp;#8221; quando falamos em usar essas linguagens e outras mais populares como Java ou C#. Eu sempre defendi que equipes de desenvolvimento usando uma linguagem como Java/C# deveriam também usar linguagens de script para outras tarefas de suporte. Ruby é uma excelente escolha para isso, e estamos vendo essa combinação crescer em nossos projetos. Com o crescimento do suporte dessas linguagens na &lt;span class="caps"&gt;JVM&lt;/span&gt; e &lt;span class="caps"&gt;CLR&lt;/span&gt;, vemos mais oportunidades de misturar diferentes linguagens com diferentes pontos fortes &amp;#8211; uma coisa que Neal Ford refere como &lt;a href="http://memeagora.blogspot.com/2006/12/polyglot-programming.html"&gt;Programação Poliglota&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Algumas Dicas de Desenvolvimento&lt;/h2&gt;


	&lt;p&gt;Nessa última seção, vou passar por algumas lições que aprendemos usando Ruby.&lt;/p&gt;


	&lt;h3&gt;Testando com Active Record&lt;/h3&gt;


	&lt;p&gt;Logo no começo de nosso uso de Ruby, houve um debate de qual era a melhor organização de testes na presença da camada Active Record de banco de dados em Rails. O problema básico é que na maioria do tempo, a performance de aplicações enterprise é dominada por acesso a banco de dados. Descobrimos que usando &lt;a href="http://martinfowler.com/bliki/TestDouble.html"&gt;Dublê de Testes&lt;/a&gt; podemos aumentar muito a velocidade dos testes. Ter testes rápidos é crucial para nosso processo de desenvolvimento que é intensivo em testes. Kent Beck recomenda uma construção básica de commit de menos de dez minutos. A maioria de nossos projetos conseguem isso hoje em dia, e usar um dublê de banco de dados é parte vital para conseguir isso.&lt;/p&gt;


	&lt;p&gt;O problema com Active Record é que ao combinar o acesso a código de banco de dados com lógica de negócios, é meio difícil criar um dublê de banco de dados. A reação da equipe do Mingle a isso foi aceitar que o Rails se liga ao banco de dados de forma apertada e portanto rodar todos os testes de commit contra um banco de dados real.&lt;/p&gt;


	&lt;p&gt;A visão contrária foi defendida de forma mais firme pelas equipes do Atlanta e Jersey. Ruby tem uma funcionalidade poderosa que permite redefinir métodos em tempo de execução. Você pode usar isso para pegar uma classe active record e redefinir os métodos de acesso a banco de dados como stubs. A equipe iniciou uma gem chamada &lt;a href="http://github.com/dan-manges/unit-record"&gt;unitrecord&lt;/a&gt; para ajudar nisso.&lt;/p&gt;


	&lt;p&gt;Nesses três anos, não vimos um vitorioso aceito nesse debate. A equipe do Mingle roda milhares de testes contra um banco de dados postgresql real em cerca de 8 minutos. (Eles paralelizam os testes para se beneficiarem de múltiplos cores.) As equipes de Atlanta e Jersey consideram valioso que seus testes de commit rodem em 2 minutos com stubs em vez de 8 minutos sem. A troca de simplicidade de acesso direto ao banco de dados vs. construções de commit mais rápidos com testes stubados.&lt;/p&gt;


	&lt;p&gt;Embora ambas as equipes estejam felizes no geral com suas posições nesse debate, o uso de stubbing levou a outro problema para as equipes de Atlanta/Jersey. À medida que elas se familiarizam com o método de stubbing, usam mais e mais &amp;#8211; caindo no inevitável problema de usar demais, onde testes unitários fazem stub de todos os métodos menos o que está sendo testado. O problema aqui, como acontece normalmente no uso de dublês, são testes frágeis. À medida que você muda o comportamento da aplicação, também precisa mudar montes de dublês que estão imitando o comportamento antigo. Esse uso excessivo levou ambas as equipes a saírem de testes unitários stubados e a usar mais testes funcionais no estilo do Rails, com acesso direto ao banco.&lt;/p&gt;


	&lt;h3&gt;Active Record Vaza&lt;/h3&gt;


	&lt;p&gt;Uma situação comum que as pessoas relatam é tempo gasto mexendo com &lt;span class="caps"&gt;SQL&lt;/span&gt;. Active Record faz um bom trabalho de esconder muito do acesso ao banco de dados do programador, mas ele falha em esconder tudo &amp;#8211; essencialmente, a abstração vaza. Como um resultado as pessoas gastam uma quantidade razoável de tempo trabalhando diretamente com &lt;span class="caps"&gt;SQL&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;Esse vazamento é uma funcionalidade comum em frameworks de mapeamento objeto/relacional. Praticamente todas as vezes que converso com as pessoas em projetos, eles dizem que o framework de mapeamento O/R esconde &lt;span class="caps"&gt;SQL&lt;/span&gt; eficientemente cerca de 80-90% do tempo, mas você precisa gastar algum tempo trabalhando com &lt;span class="caps"&gt;SQL&lt;/span&gt; de forma a conseguir performance decente. Então sobre esse respeito o Active Record não é realmente diferente de outros mapeadores O/R.&lt;/p&gt;


	&lt;p&gt;De fato um comentário que ouço é que com Active Record, a abstração quebra de forma mais limpa. Quando conversei com o &lt;span class="caps"&gt;DHH&lt;/span&gt;, ele sempre estressou que  acredita que desenvolvedores que usam um banco de dados relacional devem saber trabalhar com &lt;span class="caps"&gt;SQL&lt;/span&gt;. Active Record simplifica os casos comuns, mas uma vez que você começa a chegar em cenários mais complicados ele espera que você use &lt;span class="caps"&gt;SQL&lt;/span&gt; diretamente.&lt;/p&gt;


	&lt;p&gt;Eu não vejo o vazamento de abstrações O/R como uma condenação a esses frameworks. O objetivo deles é melhorar a produtividade tornando mais fácil fazer as coisas comuns. Eles permitem a uma equipe focar seus esforços nos poucos casos que realmente interessam. O problema somente aparece quando uma equipe acredita que a abstração é perfeita, e não coloca nenhum esforço em trabalhar com &lt;span class="caps"&gt;SQL&lt;/span&gt;. É uma falha comum, mas não é uma razão para abandonar as reais vantagens de frameworks O/R quando usados corretamente.&lt;/p&gt;


	&lt;h3&gt;Requisições Demoradas&lt;/h3&gt;


	&lt;p&gt;Um problema comum que vimos são aplicações que caem em levar tarefas que demoram para terminar. Feitas de forma ingênua, isso pode resultar no controlador das requisições web de caírem no escuro por um longo e preocupante tempo enquanto lida com a requisição.&lt;/p&gt;


	&lt;p&gt;Isso é um problema muito comum com qualquer interface humana, e tem uma solução comum &amp;#8211; jogar a tarefa a um processo ou thread em background. Qualquer um que tenha programado uma aplicação cliente de &lt;span class="caps"&gt;GUI&lt;/span&gt; reconhecerá que fez algo assim. As pessoas acabam caindo em problemas, entretanto, se essa troca e comunicação são feitas da maneira errada.&lt;/p&gt;


	&lt;p&gt;A rota que eu prefiro, e felizmente parece que a maioria dos ThoughtWorkers concordam, é usar um ator. Nesse modelo o controlador da requisição web pega qualquer tarefa demorada, embrulha em um comando e coloca em uma fila. O ator no background então monitora a fila, tirando comandos da fila e os executando, sinalizando ao ator de interação humana quando termina com cada um. A fila normalmente começa como uma tabela num banco de dados e então pode migrar para um sistema real de mensagens se precisar.&lt;/p&gt;


	&lt;p&gt;Sobre o vazamento do Active Record, eu aponto não porque é um problema de aplicações Rails, nós vemos isso em todo tipo de aplicação. Vale a pena apontar porque parece muito fácil para muitas pessoas usando Rails de esquecer que esse tipo de coisa acontece, e portanto precisam usar esse tipo de padrão. Descobrimos que Rails torna muitas das partes repetitivas de aplicações web fáceis e mais rápidas de fazer &amp;#8211; mas as partes mais envolvidas permanecem.&lt;/p&gt;


	&lt;h3&gt;Deployment&lt;/h3&gt;


	&lt;p&gt;Aplicações Rails são fáceis de construir, mas infelizmente já foram mais chatas de fazer deployment. O cenário comum de usar um pacote de muitos servidores web mongrel é ruim de configurar. Isso era uma coisa que ficou marcada pelo contraste com a suavidade do resto da experiência ruby.&lt;/p&gt;


	&lt;p&gt;O consenso comum é que Phusion Passenger torna essa coisa toda muito mais simples agora e é o jeito recomendado de deployment com &lt;span class="caps"&gt;MRI&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;Também vimos grandes fãs em usar JRuby para deployment. JRuby permite que as pessoas usem a pilha padrão de aplicações web Java, o que pode tornar muito mais fácil de lidar em muitas configurações corporativas. Mingle também usou esse jeito para facilitar a instalação para clientes. De fato a equipe Mingle faz todo o desenvolvimento com &lt;span class="caps"&gt;MRI&lt;/span&gt; mas faz deploy com JRuby. Eles fazem isso porque o tempo de início mais rápido do &lt;span class="caps"&gt;MRI&lt;/span&gt; torna o desenvolvimento mais rápido. (JRuby requer o início da &lt;span class="caps"&gt;JVM&lt;/span&gt;, que é perceptivelmente hesitante.)&lt;/p&gt;


	&lt;h3&gt;Controlando Gems&lt;/h3&gt;


	&lt;p&gt;Ruby inclui um sistema de gerenciamento de pacotes, Ruby Gems, que torna muito fácil instalar e atualizar bibliotecas de terceiros. Rails também tem plugins que faz uma tarefa semelhante para Rails. São boas ferramentas, mas é fácil equipes caírem numa cilada com máquinas diferentes configuradas com diferentes versões de diferentes bibliotecas.&lt;/p&gt;


	&lt;p&gt;Existem algumas maneiras de lidar com isso. O primeiro jeito envolve copiar o código fonte com todas as bibliotecas e colocar tudo no repositório de controle. Desta forma um simples checkout lhe dará todas as versões corretas das bibliotecas. Um segundo jeito é usar um script que faz o download e ativa as versões corretas de todas as bibliotecas. O script precisa ser mantido no repositório. (&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; o terceiro jeito é usar o próprio controle do Rails para indicar as versões corretas como eu explico &lt;a href="/2009/2/2/entendendo-rubygems"&gt;neste artigo&lt;/a&gt;).&lt;/p&gt;


	&lt;p&gt;Na mesma linha, a maioria das equipes também colocam uma cópia do próprio código fonte do Rails. Isso lhes permite aplicar patches ao Rails diretamente para consertar qualquer bug ou outros problemas vitais. Esses patches podem ser enviados à equipe principal do Rails. Usar sistemas de controle distribuídos, como git, tornou isso um pouco mais fácil de gerenciar. É certamente muito mais fácil do que nossas lembranças de ter que decompilar servidores de aplicação Java para aplicar patches no passado.&lt;/p&gt;


	&lt;h3&gt;Tempo Cronogramado de Atualizações&lt;/h3&gt;


	&lt;p&gt;Ruby no geral, e Rails em particular, movem de forma rápida. Existem atualizações freqüentes ao sistema Rails, com funcionalidades que queremos usar. Descobrimos que precisamos garantir um tempo cronogramado para lidar com atualizações do Rails e incluí-los no nosso processo de planejamento. Eles são mais significativos que outras plataformas, mas a boa notícia é que existe uma linha constante de novas capacidades.&lt;/p&gt;


	&lt;h3&gt;Desenvolvendo em Windows&lt;/h3&gt;


	&lt;p&gt;Ruby nasceu num mundo unix, e muitas pessoas que trotaram à plataforma usam barras não invertidas para caminhos de diretórios. É possível rodar, fazer deploy e desenvolver para ruby na plataforma Windows, mas também é mais complicado. Nossa recomendação geral é usar uma plataforma unix para todo o desenvolvimento. Macs são mais comumente preferidos, mas muitas pessoas usam outros Unixes &lt;span class="caps"&gt;FOSS&lt;/span&gt; também.&lt;/p&gt;


	&lt;p&gt;Esperamos que essa situação vá mudar enquanto o Iron Ruby é desenvolvido. Seria legal ter a opção de fazer deploy de aplicações Ruby em Unix, &lt;span class="caps"&gt;JVM&lt;/span&gt; e &lt;span class="caps"&gt;CLR&lt;/span&gt;. De fato isso tornaria Ruby uma opção particularmente flexível para suporte de runtimes em múltiplas plataformas. Também ajudaria projetos .NET a ter Ruby como uma linguagem de script em conjunção com as linguagens mais populares em .NET.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rMTy7vufuf8d5hFzsz9E_uBDl5o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rMTy7vufuf8d5hFzsz9E_uBDl5o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rMTy7vufuf8d5hFzsz9E_uBDl5o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rMTy7vufuf8d5hFzsz9E_uBDl5o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=nw5nftpCAkA:YzFaD7O738U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=nw5nftpCAkA:YzFaD7O738U:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=nw5nftpCAkA:YzFaD7O738U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=nw5nftpCAkA:YzFaD7O738U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=nw5nftpCAkA:YzFaD7O738U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=nw5nftpCAkA:YzFaD7O738U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=nw5nftpCAkA:YzFaD7O738U:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/nw5nftpCAkA" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/06/15/tradu--o-ruby-na-thoughtworks</feedburner:origLink></item><item><title>[Off-Topic] Padrões, Commodities e Inovações</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/qrt_SIqqwoM/off-topic-padr-es-commodities-e-inova--es</link><pubDate>Sun, 14 Jun 2009 18:17:45 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5172</guid><description>&lt;p&gt;Recentemente a Apple atualizou toda sua linha de notebooks Macbook Pro para não terem mais baterias removíveis. As baterias agora são internas e duram de 7 a 8 horas, o dobro do resto da indústria e, teoricamente, devem durar até 5 vezes mais.&lt;/p&gt;


	&lt;p&gt;Olhando em termos de valor ao cliente eu imagino que a Apple pode ter pensado: &lt;em&gt;&amp;#8220;por que as pessoas precisam de baterias removíveis?&amp;#8221;&lt;/em&gt; As respostas variam, mas eu particularmente imagino que existem apenas duas razões: como as baterias normais duram cerca de 3 ou 4 horas, para usar um dia inteiro de trabalho você precisa de pelo menos 2 baterias, especialmente se você está viajando ou em conferências que duram o dia inteiro. O segundo motivo é porque a baixa qualidade das baterias atuais faz com que elas se &amp;#8220;viciem&amp;#8221; muito rápido e uma bateria que durava 3 horas começa a durar 2 ou menos horas.&lt;/p&gt;


&lt;div style="text-align: center"&gt;&lt;object width="600" height="365"&gt;&lt;param name="movie" value="http://www.youtube.com/v/C3AcfTxr4Hw&amp;#38;color1=0xb1b1b1&amp;#38;color2=0xcfcfcf&amp;#38;hl=en&amp;#38;feature=player_embedded&amp;#38;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/C3AcfTxr4Hw&amp;#38;color1=0xb1b1b1&amp;#38;color2=0xcfcfcf&amp;#38;hl=en&amp;#38;feature=player_embedded&amp;#38;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="600" height="365"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;p&gt;A Apple resolveu isso de diversas formas. Ela repensou o processo todo de construção da bateria, possui engenheiros e cientistas especializados em química e montagem de baterias. Ela as constrói em formatos customizados que utilizam o espaço da forma mais otimizada possível. O fato de torná-las não-removíveis é para retirar o desperdício dos mecanismos móveis, baias, mecanismos de encaixe, abertura, etc. Isso permite uma área muito maior. Fora tudo isso, colocaram inteligência na forma de chips que alteram a voltagem de recarga dinamicamente, evitando com que a bateria se vicie prematuramente.&lt;/p&gt;


	&lt;p&gt;É uma coisa que pode passar despercebido mas eu quis comentar aqui &amp;#8211; e recomendo que vocês assistam ao vídeo deles. O que eles fizeram foi inteligente. Eliminaram desperdícios que eram considerados &amp;#8220;normais&amp;#8221; em qualquer notebook. Eles repensaram algo que já era considerado maduro. Quebraram paradigmas considerados senso comum como &lt;em&gt;&amp;#8220;óbvio que baterias tem que ser removíveis&amp;#8221;&lt;/em&gt; e com isso criaram um produto que entrega mais valor ao cliente. Pessoalmente, eu acho que isso é um pensamento bastante &lt;strong&gt;Lean&lt;/strong&gt;.&lt;/p&gt;


	&lt;p&gt;Eu gosto de pensar em Lean não como um processo &amp;#8211; mesmo porque ele não é. Lean é uma filosofia e uma cultura &amp;#8211; assim como Agilidade. No centro dela está o pensamento de fluxo contínuo, uma das formas de atingir isso é eliminar desperdícios. Por outro lado, existem outras filosofias envolvidas, uma delas é o &lt;strong&gt;Kaizen&lt;/strong&gt;, melhoria contínua e, como objetivo final de tudo, levar o máximo valor ao cliente e remover tudo aquilo que não leva benefício direto ao cliente. Em tudo que a Apple faz, é exatamente isso que eu vejo: inovação é o resultado desse tipo de pensamento, ao mesmo tempo conseguindo um processo mais enxuto, eficiente e que leva o máximo valor direto ao cliente.&lt;/p&gt;


	&lt;p&gt;É a mesma coisa que leva a coisas como o Magsafe, o touchpad MultiTouch, o teclado luminoso, a integração íntima do sistema operacional com o hardware &amp;#8211; e isso é muito mais importante do que muitos acham -, e assim por diante. O que justifica o acabamento superior dos notebooks Apple. E isso não é fanboyismo, é fato, o valor de um notebook Apple é indiscutivelmente superior.&lt;/p&gt;


	&lt;h2&gt;Zara&lt;/h2&gt;


	&lt;p&gt;Esse tipo de pensamento me relembra os livros de James Womack. Não lembro se foi em &lt;a href="http://tinyurl.com/mwuvn8"&gt;Lean Thinking&lt;/a&gt; onde li sobre o case da &lt;strong&gt;Zara&lt;/strong&gt; e que depois revi numa palestra da &lt;a href="http://www.infoq.com/presentations/poppendieck-agile-leadership"&gt;Mary Poppendieck&lt;/a&gt;, da Agile 2007, sobre Liderança, o mesmo case. Eu gosto desse caso porque, por coincidência, a Zara é uma das lojas que eu mais gosto de frequentar.&lt;/p&gt;


	&lt;p&gt;Zara é uma grande rede de lojas de roupas, pelo menos em 2007 eles tinham mais de 990 lojas pelo mundo, principalmente na Europa, e faturamento de 5 bilhões de euros, nada pequeno. Eles tem capacidade de ir do design das roupas até a loja em 2 semanas, esse é o tempo de produção deles.&lt;/p&gt;


	&lt;p&gt;A premissa deles é simples &amp;#8211; e óbvia &amp;#8211; de que eles não sabem o que os clientes querem. Portanto dependem dos gerentes nas lojas constantemente reportando à matriz o que os clientes mais procuram. Por exemplo, numa determinada cidade talvez os locais queiram mais roupas de cor vermelha porque é a cor do time local de baseball que acabou de ganhar um campeonato. A resposta da Zara é entregar o que eles querem o mais rápido possível, e eles conseguem fazer isso em 2 dias. Para isso eles fabricam pequenas quantidades de cada ítem e não grandes lotes. Mais do que isso, indo contra o que muitos considerariam &amp;#8220;bom senso&amp;#8221;, eles não terceirizam a fabricação em massa para a China ou outros países asiáticos porque a logística para entregas rápidas seria muito mais cara e não compensa a mão de obra mais barata. Portanto eles tem fábricas no Leste Europeu mesmo.&lt;/p&gt;


&lt;p style="text-align: center"&gt;&lt;a href="http://www.infoq.com/presentations/poppendieck-agile-leadership"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/6/14/Picture_1_original.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

	&lt;p&gt;Por causa disso, a Zara fabrica cerca de 11 mil ítems por ano, contra uma média da indústria de 3 mil peças apenas. A Zara consegue vender cerca de 85% de tudo que fabricam ao preço cheio, enquanto o resto da indústria vende 60%, no máximo 70% a preço cheio. Isso é por causa do desperdício de fabricar demais &amp;#8211; novamente, forecasts não funcionam. Podemos ver isso o tempo todo com &amp;#8220;queimas de estoque&amp;#8221;, &amp;#8220;liquidações&amp;#8221;, &amp;#8220;outlets&amp;#8221;. A Zara fica com menos de 10% de ítens não vendidos, enquanto os outros ficam com pelo menos 20% de ítems não vendidos. Com isso você vê de onde a Zara tira seu lucro, não é fazendo economia porca e terceirizando para a Ásia para mão de obra barata, é em tendo um processo de produção mais eficiente. Esse é mais um exemplo do pensamento Lean. (obs: Infelizmente acho que a Zara do Brasil não segue o mesmo processo, tem muita peça velha e pouca novidade ultimamente.)&lt;/p&gt;


	&lt;p&gt;A Zara e a Apple não descobriram nenhuma fórmula mágica. Nem mesmo a Toyota quando criou o famoso Toyota Production System, o melhor exemplo do pensamento Lean. &amp;#8220;Entregar valor ao cliente&amp;#8221; parece óbvio e a maioria das empresas acha que está fazendo isso, quando na realidade não está. Focar em entrega rápida ao cliente é bastante difícil e não é algo que estamos acostumados a fazer.&lt;/p&gt;


	&lt;h2&gt;Padrões&lt;/h2&gt;


	&lt;p&gt;Isso me leva a outra coisa que vi na palestra da Mary e nos livros do Womack. Na maioria das empresas temos coisas como &amp;#8220;padrões&amp;#8221; ou &amp;#8220;políticas&amp;#8221; ou simplesmente &amp;#8220;regras&amp;#8221;. Independente da palavra, vou usar &amp;#8220;padrão&amp;#8221; para significar a mesma coisa.&lt;/p&gt;


	&lt;p&gt;Para a maioria dos gerentes, &amp;#8220;padrões&amp;#8221; são feitos para que qualquer novo funcionário consiga trabalhar como todos os outros. Padrões foram feitos para serem seguidos, e não questionados.&lt;/p&gt;


	&lt;p&gt;Esta é a maneira mais idiota de se pensar em padrões. Para Taiichi Ohno, pai do &lt;span class="caps"&gt;TPS&lt;/span&gt;, padrões são outra coisa. Padrões são o &amp;#8220;as-is&amp;#8221;, ou seja, como as coisas funcionam hoje. Não são visões de como as coisas deveriam ser, mas uma descrição fiel de como se trabalha e se produz no presente, sendo certo ou errado.&lt;/p&gt;


	&lt;p&gt;O trabalho de um líder de produção lean é garantir que os padrões não permaneçam fixos por muito tempo. Se depois de um mês o padrão ainda for o mesmo, seu chefe poderia lhe fazer até a pergunta &lt;em&gt;&amp;#8220;você trabalhou no mês passado? porque os padrões não mudaram.&amp;#8221;&lt;/em&gt; Numa cultura de melhoria contínua, a equipe deve estar constantemente procurando maneiras melhores de fazer a mesma coisa, e não apenas idioticamente seguir o que o padrão diz. Padrões são &amp;#8220;baselines&amp;#8221;, são pontos de partida que devem ser constantemente questionados e melhorados. O padrão de hoje tem que ser melhor que o padrão de ontem.&lt;/p&gt;


	&lt;p&gt;A partir do momento em que você tem na cabeça &lt;em&gt;&amp;#8220;é assim que sempre fizemos e portanto é assim como vou fazer hoje e é assim como vou fazer amanhã&amp;#8221;&lt;/em&gt; você criou um funcionário estagnado, desmotivado, conformado e, pior de tudo, que não evoluiu. Funcionários que não evoluem significa uma empresa que não evolui.&lt;/p&gt;


	&lt;p&gt;Empresas que tem departamentos que devem ficar criando novos padrões, processos ou políticas para empurrar goela abaixo no resto da empresa são empresas que considero &amp;#8220;burras&amp;#8221; ou, pelo menos, &amp;#8220;cegas&amp;#8221; porque eles ignoram os seus verdadeiros olhos: os seus funcionários. Ao mesmo tempo ela sinaliza uma cultura onde ninguém deve tentar se destacar, todos devem ser iguais, se vestir iguais, chegar nos mesmos horários, almoçar na mesma hora, até ir no banheiro em horários constantes. É uma empresa que valoriza a média &amp;#8211; meus &lt;a href="/2008/9/13/off-topic-matando-a-m-dia"&gt;velhos inimigos&lt;/a&gt;, as curvas gaussianas, ou &amp;#8220;normais&amp;#8221; &amp;#8211; uma empresa que valoriza, por definição, a &amp;#8220;mediocridade&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;Empresas Lean, por outro lado, valorizam a &lt;a href="http://en.wikipedia.org/wiki/Meritocracy"&gt;meritocracia&lt;/a&gt;. Valorizam espaço para erro que, no processo correto de &lt;a href="http://en.wikipedia.org/wiki/Hansei"&gt;Hansei&lt;/a&gt; e &lt;a href="http://en.wikipedia.org/wiki/Kaizen"&gt;Kaizen&lt;/a&gt;, levam à melhoria contínua. Por sua vez, isso eleva os padrões de forma cumulativa.&lt;/p&gt;


	&lt;p&gt;Este artigo segue a linha do anterior &lt;a href="http://www.akitaonrails.com/2009/06/05/tradu--o-conselhos-para-gerentes-de-desenvolvimento-de-software"&gt;Conselhos para Gerentes&lt;/a&gt;, sugiro que leiam este também.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yXrzlEYb5Ew421amPI0PHrX3Jnw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yXrzlEYb5Ew421amPI0PHrX3Jnw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yXrzlEYb5Ew421amPI0PHrX3Jnw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yXrzlEYb5Ew421amPI0PHrX3Jnw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=qrt_SIqqwoM:J2xZOhgy7-g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=qrt_SIqqwoM:J2xZOhgy7-g:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=qrt_SIqqwoM:J2xZOhgy7-g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=qrt_SIqqwoM:J2xZOhgy7-g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=qrt_SIqqwoM:J2xZOhgy7-g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=qrt_SIqqwoM:J2xZOhgy7-g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=qrt_SIqqwoM:J2xZOhgy7-g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/qrt_SIqqwoM" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/06/14/off-topic-padr-es-commodities-e-inova--es</feedburner:origLink></item><item><title>[Tradução] Conselhos para Gerentes de Desenvolvimento de Software</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/5AZPix3Nrao/tradu--o-conselhos-para-gerentes-de-desenvolvimento-de-software</link><pubDate>Thu, 04 Jun 2009 23:35:59 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5171</guid><description>&lt;div style="float: right; margin: 3px"&gt;&lt;a href="http://www.geraldmweinberg.com/Site/Home.html"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/6/5/shapeimage_1_original.png" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Obs:&lt;/strong&gt; alguns dias trás eu &lt;a href="http://www.akitaonrails.com/2009/05/31/off-topic-as-5-disfun--es-de-equipes-em-c-digo"&gt;escrevi um desabafo&lt;/a&gt; sobre o comportamento ruim de um gerente de projetos. Nesta tradução, vamos ver soluções e os cenários corretos. Vamos à tradução:&lt;/p&gt;    

	&lt;p&gt;Em 2004, a revista &amp;#8216;Software Development Magazine&amp;#8217; entrevistou &lt;a href="http://www.geraldmweinberg.com/"&gt;&lt;strong&gt;Gerald Weinberg&lt;/strong&gt;&lt;/a&gt;. Aqui vão algumas de suas respostas (a entrevista completa está no &lt;a href="http://www.ayeconference.com/advice-for-software-development-managers/"&gt;site dele&lt;/a&gt;):&lt;/p&gt;


	&lt;p&gt;Qual foi o melhor conselho relacionado a gerenciamento que você já deu?&lt;/p&gt;


&lt;blockquote&gt;Se você culpa seus funcionários, você é um péssimo gerente. Você os contratou, os aceitou, os supervisionou, e dirigiu seu treinamento. Você é responsável. Se você não gosta do que está acontecendo, veja seu próprio comportamento. Mas, se há crédito a ser dado, é deles.&lt;/blockquote&gt;

	&lt;p&gt;E sobre gerentes que foram contratados em um grupo onde alguns ou todos os funcionários já foram contratados por outra pessoa?&lt;/p&gt;


&lt;blockquote&gt;Você não assume um trabalho de gerência de forma passiva. Antes de aceitar a posição, você entrevista todos em seu grupo, e você consegue o apoio deles, ou se livra deles &amp;#8211; ou não aceita a posição. Eu não sei porque gerentes não entendem isso. Eles assumem novas responsabilidades como colegiais em seu primeiro encontro às cegas.&lt;/blockquote&gt;

	&lt;p&gt;E se um funcionário começa a demonstrar mal comportamento depois que ele ou ela o contratou &amp;#8211; comportamento que não era aparente na fase de entrevista?&lt;/p&gt;


&lt;blockquote&gt;Bem, isso acontece, e é para isso que gerentes são pagos. Pode ser um retrocesso, mas é seu trabalho cuidar disso e terminar o serviço. Infelizmente, poucos gerentes técnicos tem qualquer preparação para isso, é uma coisa que venho tentando remediar por anos &amp;#8211; então, por um lado, eu sou culpado, porque fui bem sucedido apenas em alguns casos. Ei, se tudo desse certo o tempo todo, você não precisaria de gerentes.&lt;/blockquote&gt;&lt;h2&gt;O que é atribuir a Culpa?&lt;/h2&gt;


	&lt;p&gt;&lt;strong&gt;Obs:&lt;/strong&gt; Leia o artigo completo &lt;a href="http://www.ayeconference.com/beyondblaming/"&gt;Beyond Blaming&lt;/a&gt; no site oficial do Jerry.&lt;/p&gt;


	&lt;p&gt;Em uma organização congruente, seu gerente pergunta, &lt;em&gt;&amp;#8220;Como anda seu projeto?&amp;#8221;&lt;/em&gt; e sua resposta, &lt;em&gt;&amp;#8220;Estou um pouco receoso que vou atrasar no cronograma.&amp;#8221;&lt;/em&gt; Isso inicia uma discussão para resolver o problema, de onde vocês dois fazem novos planos para colocar o projeto de volta em dia. Em uma organização de culpa, entretanto, seu gerente pode lhe dizer que somente pessoas inferiores tem pouca confiança. Nesse caso, resolução de problema será substituído por evitar-a-culpa.&lt;/p&gt;


	&lt;p&gt;Do ponto de vista de um escritor, interações congruentes não são muito dramáticas; as pessoas apenas agem sensivelmente, tem consideração uns pelos outros, terminam seus trabalhos, e se divertem com o que fazem. Esse tipo de comportamento pode não dar uma boa cena de novela, do que seu gerente gritando em ira e você se encolhendo num canto, mas definitivamente resulta em projetos melhores.&lt;/p&gt;


	&lt;p&gt;Não que uma cultura de atribuir a culpa conduz toda interação de forma culposa, dramática. Sob circunstâncias ordinárias, resoluções congruentes são a regra, mas se as circunstâncias fossem sempre ordinárias, não precisaríamos de gerentes. Quando sentimentos de auto-estima estão em baixa, elas se manifestam de maneira mais dramática em resoluções incongruentes características: atribuir culpa, apaziguamento, ser super-razoável, amável ou odioso e agir de forma irrelevante. Não podemos lidar com tudo isso num artigo curto, então vamos discutir &amp;#8216;atribuir a culpa&amp;#8217;, talvez a forma mais comum e mais diretamente destrutível de estilo de resolução.&lt;/p&gt;


	&lt;p&gt;Sob estresse as pessoas tendem a perder o equilíbrio, e um ou mais de três componentes essenciais podem ser ignorados, levando ao característico estilo de resolução incongruente. Por exemplo, quando as pessoas falham em levar outras pessoas em consideração, eles caem em uma postura de jogar a culpa nos outros. Aqui vai uma típica ação de atribuir culpa que você vê em organizações de software (palavras em itálico são enfatizados nesse estilo de falar &amp;#8211; porque múltiplas palavras enfatizadas em uma sentença linguística são sinais de jogar a culpa):&lt;/p&gt;


&lt;blockquote&gt;Gerente, quando o programador chega atrasado para uma reunião: &amp;#8220;Você está &lt;em&gt;sempre&lt;/em&gt; atrasado. Você &lt;em&gt;nunca&lt;/em&gt; demonstra &lt;em&gt;qualquer&lt;/em&gt; consideração pelas &lt;em&gt;outras&lt;/em&gt; pessoas.&amp;#8221;&lt;/blockquote&gt;

	&lt;p&gt;Por que isso é incongruente? Se o gerente realmente está sentindo e pensando que o programador está sempre atrasado e não tem consideração, ele não está sendo congruente ao dizer isso? Sim, mas não é isso que esse gerente disso. Ele não disse, &amp;#8220;é minha impressão que você está sempre atrasado para minhas reuniões.&amp;#8221; Em vez disso, ele pronunciou sua impressão de atraso como se fosse um fato científico, nunca oferecendo a possibilidade do programador poder ter uma impressão diferente. Ele generalizou a experiência da sua reunião como se isso necessariamente se aplicasse a todas as reuniões, nunca permitindo a possibilidade de sua experiência não ser a única que conta.&lt;/p&gt;


	&lt;p&gt;Se o gerente realmente está sentindo e pensando que o programador está sempre atrasado e não tem consideração, ele deveria dizer, &amp;#8220;eu acho que você está sempre atrasado, e eu acho que você não está tendo consideração comigo e com os outros. Essa é sua percepção também?&amp;#8221; (e deixando de lado as palavras estressadas). Estilo de gerenciamento ainda melhor seria dar ao programador a chance de dar uma percepção diferente antes de lançar qualquer interpretação. No mínimo, isso evita embarassamentos em situações como a seguinte:&lt;/p&gt;


&lt;blockquote&gt;Gerente, quando o programador chega atrasado para uma reunião: &amp;#8220;Parece para mim que você está sempre atrasado. Essa é sua percepção também?&amp;#8221; Programador: &amp;#8220;Sim, e eu me sinto mal sobre isso. A razão de eu estar sempre atrasado é que eu tenho que doar sangue para meu filho de 9 anos, que está morrendo de leucemia, e a única hora para doações é bem antes desta reunião.&amp;#8221; Gerente: &amp;#8220;sinto muito sobre seu filho. Não sabia disso. Vamos marcar a reunião para outro horário para que você não precise se atrasar.&amp;#8221;&lt;/blockquote&gt;

	&lt;p&gt;De forma geral, isso permite a possibilidade de que possa existir outras considerações que contem além daquelas desse único gerente. Por exemplo, talvez o programador está chegando de uma reunião com clientes &amp;#8211; uma reunião que por acaso cruza horários com a reunião do gerente.&lt;/p&gt;


	&lt;p&gt;Mas e se o programador realmente está sempre atrasado, sem uma explicação razoável? O gerente não está no seu direito de culpar o programador? Na realidade &lt;strong&gt;não&lt;/strong&gt;, porque essa situação não é sobre &amp;#8220;se tem direito&amp;#8221;, mas sim sobre ter o projeto finalizado. Para esse propósito, o problema é resolvido de forma mais efetiva confrontando sem jogar a culpa; com fatos sobre o comportamento inaceitável. Pulando a atribuição de culpa, o gerente mantém a comunicação clara e aberta, maximizando a chance do programador receber a mensagem intencionada. E, claro, receber a mensagem intencionada maximiza a chance (embora não garanta) que o problema irá se resolver.&lt;/p&gt;


	&lt;p&gt;Quando se atribui culpa, a resolução do problema tem menor chance de acontecer porque os fatos do caso se tornaram uma fator minoritário &amp;#8211; o maior fator na atribuição de culpa é &amp;#8220;quem é importante e quem é insignificante.&amp;#8221; Quando se atribui culpa, a pessoa está dizendo, &amp;#8220;Eu sou tudo, você não é nada.&amp;#8221; Claro, isso não vem de realmente pensar &amp;#8220;Eu sou tudo,&amp;#8221; mas do oposto. Dirigir a atenção para outra pessoa &amp;#8211; e jogar a culpa é normalmente acompanhado de apontamento de dedo &amp;#8211; é um dispositivo de auto-proteção para distrair os outros do desconforto que o inquisidor sente.&lt;/p&gt;


	&lt;p&gt;Como toda resolução incongruente, atribuir culpa é reforçado por sentimentos de baixa auto-estima. Quando você culpa, você tenta se colocar no alto através de puxar o tapete dos outros, porque você não tem a segurança de que pode aguentar muito &amp;#8211; ou mesmo sobreviver &amp;#8211; de qualquer outra forma.&lt;/p&gt;


	&lt;p&gt;Jogar a culpa nos outros engana as pessoas pouco sofisticadas, ou cuja própria auto-estima seja bem baixa. O observador inteligente, entretanto, enxerga a quantidade de atribuições de culpa como uma medida segura de quão inadequado o inquisidor se sente. Mais do que isso, se jogar a culpa nos outros é o estilo de comunicação de projeto preferida, então se torna uma medida de quanto um ambiente se degradou &amp;#8211; quão pouca comunicação é dirigida a assuntos de projeto, comparado à quantidade que é dirigida diretamente a estufar a baixa auto-estima do comunicador.&lt;/p&gt;


	&lt;p&gt;Em uma organização onde se joga culpas, não é somente o gerente que faz isso, como ilustrado por estes exemplos:&lt;/p&gt;


&lt;blockquote&gt;Programador, quando o gerente pede para falar com um candidato ao trabalho: &amp;#8220;Por que você não faz isso você mesmo? Não vou fazer seu trabalho por você. Se fosse mais organizado, não precisaria me pedir essas coisas.&amp;#8221; 
Cliente, quando o gerente de projeto pergunta sobre a possibilidade de rever os requerimentos: &amp;#8220;Você nunca acerta nos requerimentos da primeira vez. Se eu digo uma vez, já disse mil vezes. Faça o trabalho certo da primeira vez, daí não vai precisar me perturbar com revisões.&amp;#8221;&lt;/blockquote&gt;

	&lt;h2&gt;Como Jogar a Culpa Machuca um Projeto&lt;/h2&gt;


	&lt;p&gt;Claro, pessoas não são perfeitas, então é impossível conduzir um projeto grande sem ocasiões onde as pessoas são incongruentes. Gerenciamento normal de projetos pode lidar com essas situações &amp;#8211; quando elas são excepcionais. Mas quando todo o ambiente encoraja jogar a culpa, cada nova situação complica ainda mais a incongruência. &lt;a href="http://en.wikipedia.org/wiki/Fred_Brooks"&gt;Fred Brooks&lt;/a&gt; uma vez perguntou, &amp;#8220;Como um projeto de um ano acaba ficando dois anos atrasado?&amp;#8221; Sua resposta foi &amp;#8220;um dia de cada vez.&amp;#8221; Nossa resposta é &amp;#8220;uma comunicaçao incongruente de cada vez,&amp;#8221; como o exemplo seguinte ilustra:&lt;/p&gt;


&lt;blockquote&gt;Um dos programadores estava desenvolvendo um módulo que produzia relatórios impressos quando era testado. O gerente colocou muita pressão no programador para que ficasse pronto no prazo, sem desculpas permitidas. O programador produziu um relatório e o gerente estava contente (embora ele tivesse demonstrado isso, claro &amp;#8211; era &amp;#8220;somente uma parte esperada do trabalho&amp;#8221; na cultura de jogar a culpa). Um mês depois, outra pessoa tentou usar esse módulo e descobriu que ele não havia sido finalizado de jeito nenhum. O programador usou um Word para produzir um relatório falso que se parecia exatamente como um relatório de teste deveria se parecer. Ele pensou que isso lhe daria mais tempo (levou um mês, afinal de contas, até alguém descobrir) para finalizar o módulo. Infelizmente, como era muito trabalho, um mês não fora o suficiente.&lt;/blockquote&gt;

	&lt;p&gt;O gerente culpou o programador. O programador não disse nada, porque nessa cultura de jogar a culpa, dizer alguma coisa só trás mais acusações na cabeça. A pessoa que reportou o incidente disse que nessa organização, &lt;strong&gt;falha não é permitida sob nenhuma circunstância.&lt;/strong&gt; Pessoas que tem problemas em um projeto e conseguem prever atrasos não conseguem gritar por &lt;span class="caps"&gt;AJUDA&lt;/span&gt;! e receber assistência apropriada. De acordo com os gerentes, cada programador é responsável por atingir os prazos que concordaram. Estimativas inexatas &amp;#8220;não eram permitidas&amp;#8221; e perfeição deve ser atingida no primeiro dia &amp;#8211; caso contrário você é colocado no pilar da culpa. Nessa situação, relatórios falsos são a regra, não a exceção (&lt;strong&gt;nota do Akita:&lt;/strong&gt; para ser mais claro, substitua &amp;#8216;relatório falso&amp;#8217; por qualquer dessas &amp;#8216;gambiarras&amp;#8217; que vemos comumente em código.)&lt;/p&gt;


	&lt;p&gt;Jogar a culpa é o segredo negro do fracasso de muitos projetos. Uma cultura de jogar a culpa machuca um projeto de pelo menos seis grandes maneiras:&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;As pessoas se comprometem com planos que sabem que não conseguem atingir, pelo menos para atrasar o recebimento da culpa. (&lt;strong&gt;nota do Akita:&lt;/strong&gt; já ouviu aquele programador que parece sempre &amp;#8220;tenho muita coisa pra fazer, por isso não posso nem fazer direito, nem ajudar os outros&amp;#8221; &amp;#8211; o paradoxo: como pode &amp;#8220;ter muita coisa&amp;#8221; se foi ele mesmo quem concordou, em todas as vezes, com o que fazer?)&lt;/li&gt;
		&lt;li&gt;As pessoas escondem fatos que os gerentes precisam para controlar o projeto, como no exemplo acima. (&lt;strong&gt;nota do Akita:&lt;/strong&gt; lembrem-se, &amp;#8220;não ter problemas, é um problema&amp;#8221; &amp;#8211; significa que estão sob o tapete.)&lt;/li&gt;
		&lt;li&gt;Quando os problemas são finalmente revelados, as pessoas evitam sair com idéias de soluções criativas, por medo de levarem a culpa caso não funcione, ou simplesmente se fazem de joão-sem-braço.&lt;/li&gt;
		&lt;li&gt;Em operações de rotina, uma grande parcela dos esforços de cada um é devotado em se posicionar para não levar a culpa quando a hora chegar. (&lt;strong&gt;nota do Akita:&lt;/strong&gt; exemplo, &amp;#8220;a culpa é da outra equipe, a responsabilidade não é minha, ou só minha.&amp;#8221;)&lt;/li&gt;
		&lt;li&gt;As pessoas que porventura se sentem seguras o suficiente para se focar no trabalho, se vêem gastando bastante tempo checando a confiabilidade na comunicação com os outros.&lt;/li&gt;
		&lt;li&gt;As pessoas se sentem mal a maior parte do tempo, e gastam muito tempo em tarefas improdutivas ou simplesmente olhando para as paredes.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;h2&gt;A Aparência e Sentimento da Incongruência&lt;/h2&gt;


	&lt;p&gt;Organizações podem mudar de uma cultura de jogar a culpa para uma cultura de congruência. Para fazer essa mudança, o primeiro passo é medir, ou pelo menos detectar &amp;#8211; mas como medir atribuição de culpa? Na realidade, um consultor experiente consegue detectar uma organização de atribuição de culpa com poucos minutos de contato, porque os sintomas estão por todos os lados. De fato, as pessoas da organização já sabem que é uma cultura de jogar a culpa &amp;#8211; mas, claro, numa cultura dessas, jogar a culpa é indiscutível e, mais ainda, a indiscutibilidade também é indiscutível. Paradoxalmente, a existência da indiscussabilidade torna mais fácil detectar a atribuição de culpa. O gerente de um projeto manda um e-mail dizendo que não haveria mais discussão sobre a moral do projeto, e que ele não prestaria mais atenção a questões do assunto porque todos deveriam estar gratos por estar trabalhando num projeto tão legal. Esse tipo de coisa só poderia acontecer numa organização onde se joga a culpa.&lt;/p&gt;


	&lt;h3&gt;Executivos&lt;/h3&gt;


	&lt;p&gt;Uma cultura de jogar a culpa começa no topo. Membros do nível superior de gerenciamento tem costume de enxergar as outras pessoas da organização como fontes de problemas. Os funcionários são vistos como &amp;#8220;ingratos&amp;#8221; por seus trabalhos, salários, benefícios e oportunidades dadas a eles. São vistos como tendo &amp;#8220;falta de ética apropriada de trabalho&amp;#8221;, &amp;#8220;não saber dar valor&amp;#8221;, &amp;#8220;ter problemas de autoridade&amp;#8221; e &amp;#8220;resistir a mudanças&amp;#8221;. Essas percepções deixam a alta gerência num dilema: &amp;#8220;será que eu as demito, ou demito quem as contratou?&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Esse tipo de gerente sente que está tentando realizar uma visão sem ter o suporte necessário, o que os deixa no limbo. A experiência interna de inércia desses executivos é normalmente uma dor de cabeça contínua e crônica &amp;#8211; a menos que as margens de lucro estejam muito baixas. Nesse caso, eles tem sentimentos mais apurados, como dor no peito e queimação no estômago. Suas baixas auto-estimas se refletem adiante na forma de frequentes downsizings, re-engenharias (&lt;strong&gt;nota do Akita:&lt;/strong&gt; aqueles que em vez de encarar os problemas, ficam achando mais uma &amp;#8220;metodologia&amp;#8221; da moda para implementar, achando que isso resolve alguma coisa), evitar problemas mais sérios, e-mails fúteis e, claro, humilhar subordinados (&lt;strong&gt;nota do Akita:&lt;/strong&gt; aqueles que largaram seu sub-gerente trabalhando, achando que estavam fazendo direito, e só recebem feedback negativo meses depois, quando é conveniente &amp;#8211; que é um tipo de humilhação). A si mesmos, eles normalmente praticam comportamentos viciados e auto-destrutivos (que não podem ser discutidos, mas costumam ser assunto de fofocas.)&lt;/p&gt;


	&lt;h3&gt;Gerência do Meio&lt;/h3&gt;


	&lt;p&gt;Enquanto a alta liderança é incongruente, os gerentes do meio constantemente recebem mensagens misturadas. Cantarolam aos gerentes de projetos de sua importância e, então descobrem que seus sêniores os &amp;#8220;bypassaram&amp;#8221; (passaram sobre eles) para intervir diretamente em projetos ou mudaram as regras sem os consultar. Eles se sentem como se estivessem vivendo numa montanha-russa &amp;#8211; sem conseguir prever se um determinado dia ou semana será bom ou ruim. Depois de serem publicamente humilhados algumas vezes, eles decidem que sua melhor estratégia é tentar ficar longe de problemas, sem chamar a atenção (&lt;strong&gt;nota do Akita:&lt;/strong&gt; aqui começa a rotina do batedor-de-cartão conformado).&lt;/p&gt;


	&lt;p&gt;Em uma organização de atribuição de culpa, a alta gerência tenta (talvez de forma inconsciente) ensinar os gerentes do meio suas próprias atitudes de jogar a culpa. Quando um gerente de projetos reclamou da sua inabilidade de fazer os programadores trabalharem mais rápido, o Vice-Presidente de Desenvolvimento disse, &amp;#8220;se seus cachorros não vão pular mais alto, encontre uma vara mais longa para bater neles.&amp;#8221; Vivendo num inferno de incongruência vindo de cima, aparecem os problemas de sobrevivência da gerência do meio. Como faziam quando eram crianças, eles descobrem como acalmar, agradar ou evitar os donos do poder. Ao fazer isso eles asseguram sua sobrevivência &amp;#8211; e passam a culpa para níveis mais baixos.&lt;/p&gt;


	&lt;h3&gt;Funcionários&lt;/h3&gt;


	&lt;p&gt;Na parte de baixo de uma organização de atribuição de culpa, os funcionários normalmente estão procurando por outro lugar para trabalhar a menos que a empresa esteja em uma &lt;strong&gt;condição estável e com pouca competição&lt;/strong&gt; &amp;#8211; ou se suas aposentadorias estão próximas. A maneira para sobreviver é se esconder e aparecer somente para pegar o contra-cheque (&lt;strong&gt;nota do Akita:&lt;/strong&gt; e em épocas de depósitos automáticos, nem isso.)&lt;/p&gt;


	&lt;p&gt;Funcionários são desencorajados de pensar criativamente &amp;#8211; novas idéias são interpretadas como jogar a culpa na gerência ou tentar usurpar seus poderes e prerrogativas. Funcionários não são recompensados por competência &amp;#8211; mas são frequentemente punidos por &amp;#8220;descuido&amp;#8221; percebido. Funcionários não procuram seus gerentes &amp;#8211; exceto quando há problemas. Então, a maior parte do esforço é gasto em tentar dar nome aos bois em vez de resolver o problema.&lt;/p&gt;


	&lt;p&gt;O estilo de jogar a culpa varia de organização para organização. Pode ser de forma dura, vingativa, direta ou indireta &amp;#8211; mas é sempre contagiosa. Algumas organizações refinaram sua maneira de jogar a culpa a um alto grau de sutileza &amp;#8211; sem gritos, meramente lançando um olhar, ou um e-mail, ou um telefonema, ou uma visitinha se as coisas são realmente ruins. Em outras organizações, a atribuição de culpa é na gritaria, raivosa e frequentemente feita na frente de uma platéia &amp;#8211; para assegurar que todos entenderam a mensagem de quem está certo, quem é o &amp;#8220;bonzão&amp;#8221;, quem está no comando, e quem deve ficar invisível.&lt;/p&gt;


	&lt;p&gt;Nesse tipo de ambiente, se defender se torna comum. Para aqueles sem poder formal ou autoridade, parece que aqueles com poder não se importam com eles &amp;#8211; e os baniriam sem nenhum remorso. Então eles se sentem no direito de retaliar (adiantado, e em segredo), e em evitar seus gerentes e seus problemas.&lt;/p&gt;


	&lt;p&gt;Independente do estilo, jogar a culpa do topo sempre gera medo, desconforto, erros, acidentes e respostas passivo-agressivas de baixo. Aqueles embaixo se sentem pequenos e agem de um lugar sem poder. A falta de segurança emocional efetivamente corrói os níveis de confiança e torna qualquer tentativa de congruência extremamente arriscada. O ambiente deles soa assustador e é &amp;#8211; tanto para a pessoa que regrediu para imaturidade emocional e, tristemente, para a pessoa no topo que está jogando a culpa.&lt;/p&gt;


	&lt;p&gt;Aqueles na camada de baixo de qualquer grande organização podem facilmente vir a sentir um senso de dependência àqueles acima deles na hierarquia. Quando jogar a culpa é o modo primário de lidar com pessoas, essa dependência é exacerbada (&lt;strong&gt;nota do Akita:&lt;/strong&gt; quase uma &lt;a href="http://pt.wikipedia.org/wiki/Síndrome_de_Estocolmo"&gt;síndrome de Estocolmo&lt;/a&gt;). Então, de um sentimento de dependência, as pessoas facilmente geram um sentimento de hostilidade. À medida que essa hostilidade aumenta também aumenta a experiência debilitante de vergonha &amp;#8211; aquele juíz excessivamente crítico que existe latente em todos nós, humanos.&lt;/p&gt;


	&lt;h2&gt;A Aparência e Sentimento de Congruência&lt;/h2&gt;


	&lt;p&gt;A maioria das pessoas que experimentaram uma organização congruente não vão tolerar a miséria de trabalhar em uma organização de atribuição de culpa. Mas muitas pessoas sequer tiveram essa experiência, e tem dificuldade em acreditar em congruência. Vamos ver o que aconteceria se uma dose saudável de congruência pudesse ser magicamente aplicada em larga escala a uma organização incongruente de projetos.&lt;/p&gt;


	&lt;h3&gt;Executivos&lt;/h3&gt;


	&lt;p&gt;Se pudéssemos magicamente instalar congruência nos programas internos desses executivos que jogam culpa, o estilo deles mudaria dramaticamente. Por exemplo, se eles verdadeiramente considerassem os outros envolvidos em sua comunicação, possivelmente acreditariam nas intenções das pessoas de contribuir, de serem produtivos, de pertencer e de aprender &amp;#8211; e interpretariam desvios desse ideal como evidência de gerenciamento não efetivo. Sua crença no valor inerente de todas as pessoas com respeito saudável pelas limitações do contexto do trabalho traria energia, esperança, agradecimento, compreensão e gratidão entre seus funcionários.&lt;/p&gt;


	&lt;p&gt;Um executivo congruente que realmente não acreditasse nas boas intenções dos funcionários diria &amp;#8216;Sem desculpas! Você terá isso pronto em Outubro.&amp;#8217; Mas, com funcionários cujas intenções são ruins, esse estilo (ou qualquer outro) não funcionaria mesmo.&lt;/p&gt;


	&lt;p&gt;Quando a alta gerência mantém seu compromisso com congruência, eles vêem que a maioria dos trabalhadores aprecia a oportunidade que o negócio lhes proporciona para desenvolver suas capacidades, sentido, relacionamentos e recompensas monetárias. Eles também sabem como agir quando o trabalhador ocasional não parece apreciar ou ser produtivo. Gerentes que sabem como usar seu poder de forma congruente geralmente conseguem os resultados que procuram &amp;#8211; não perfeição, que eles sabem que não devem esperar.&lt;/p&gt;


	&lt;p&gt;Esses líderes sabem que possuem um tipo especial de poder &amp;#8211; poder que usam com consciência e sensibilidade. Eles não deixam de cobrar daqueles que lideram, mas demonstram o mesmo nível de integridade que procuram nos outros. E se não conseguem encontrar os níveis de comprometimentos que requisitam dos outros, eles são abertos quanto a isso. Eles sabem que de vez em quando serão fracos e vulneráveis e precisam de apoio &amp;#8211; talvez até para ver o valor de suas próprias visões. Eles usam sua consciência dessa realidade humana para cultivar sua capacidade de empatizar e de ter compaixão por si mesmos e pelos outros.&lt;/p&gt;


	&lt;p&gt;Executivos congruentes sabem que seu trabalho principal é desenvolver as capacidades de sua organização, não apenas empurrar os mesmos velhos produtos e serviços porta afora. Eles se envolvem de maneira séria nos esforços de melhoria da organização e simultaneamente envolvem outros da organização para conseguir os esforços na vida real, prática operacional e tomada de decisão. Eles sabem que sinergia é necessária para o desenvolvimento da organização e sabem que sinergia vem com conexões de alta qualidade entre as pessoas &amp;#8211; independente de nível.&lt;/p&gt;


	&lt;h3&gt;Gerência do Meio&lt;/h3&gt;


	&lt;p&gt;Quando o pessoal do topo começa a operar com congruência, os gerentes do meio recebem mensagens claras e diretas &amp;#8211; não mensagens misturadas com duplos sentidos. As comunicações são mais abertas, tornando mais fácil saber mais sobre o que está acontecendo. Dada informação de alta qualidade, eles sabem mais como podem ser úteis, conseguindo mais facilmente se unir a seus líderes em suas visões. Saber mais claramente as direções estratégicas desejadas, e sentir que eles contam nesse processo, os libera para contribuir de forma mais generosa e consciente &amp;#8211; em vez de meramente jogar com segurança. Sucesso se torna um objetivo que todos podem compartilhar.&lt;/p&gt;


	&lt;p&gt;Dada sua posição única de vantagem, as pessoas do meio tem dados mais úteis para ajudá-los a prever problemas, projetar linhas do tempo realistas e predizer tendências. O que eles vêem, ouvem, pensam e sentem é valorizado e eles estão numa posição de iniciar comportamentos que evitam que fraquezas dos projetos cresçam até o fracasso. Eles conhecem a necessidade de interdependência, então se problemas maiores acontecem, eles podem ser considerados para oferecer &amp;#8211; e também procurar &amp;#8211; por informações importantes. Eles não estão envergonhados nem com medo daqueles que os contrataram. De fato, têm orgulho de seus compromissos com a organização &amp;#8211; e sabem que não se trata apenas de compromissos como prazos e orçamentos, mas sobre a verdade sobre esses prazos e orçamentos.&lt;/p&gt;


	&lt;p&gt;E como congruência que vem do topo também vai para baixo, gerentes do meio notam a diferença entre seus líderes. Eles respondem ao modelo passando isso a seus constituintes. Todos na organização sabem o que está em jogo em cada trabalho bem feito, então todos se sentem seguros em dizer o que está errado, o que está atrapalhando e o que precisa ser consertado. Relatórios honestos de fatos e sentimentos são genuinamente apreciados e não colocam as pessoas em risco de serem humilhadas ou perderem seus empregos. É por isso que organizações congruentes entregam seus projetos como prometido.&lt;/p&gt;


	&lt;p&gt;Gerentes do meio congruentes encorajam comunicação de alta qualidade. Sua crença na habilidade das pessoas de aprender e mudar em direção a mais congruência tornam aqueles ao seu redor mais responsivos. Com radiação de congruência a partir do centro da organização, todos podem ter um lugar, posição e função de importância e valor &amp;#8211; então as coisas acontecem da maneira correta.&lt;/p&gt;


	&lt;h3&gt;Funcionários&lt;/h3&gt;


	&lt;p&gt;Trabalhar na linha de frente de um negócio onde a liderança de cima é congruente, é uma experiência inteiramente diferente de trabalhar numa organização de atribuição de culpa. Compromisso e energia são a norma, não a exceção praticada por novos funcionários até eles &amp;#8220;aprenderem como as coisas funcionam por aqui.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Organizações congruentes suportam uma ideologia que fazer direito no mercado está ligado a lidar direito com os funcionários assim como com os clientes. A perspectiva da liderança inclui consciência global sobre a existência de múltiplos fatores não-lineares, a importância das conexões entre as várias partes do todo e a necessidade de todas as partes saberem seu valor. Os funcionários sentem que esta é uma empresa indo para algum lugar, onde crescimento é um estado natural e o esforço de todos conta. (&lt;strong&gt;nota do Akita:&lt;/strong&gt; essa é a semente para equipes auto-gerenciadas.)&lt;/p&gt;


	&lt;p&gt;Trabalhadores numa organização congruente tendem a ter uma visão ampla e podem normalmente manobrar como necessário para atingir as mudanças demandadas pelos clientes. Os funcionários confiam que o que vêem e ouvem é real. Eles compartilham do entusiasmo de criar o futuro. Eles podem não gostar de tudo que acontece &amp;#8211; por exemplo, nem sempre acham que estão sendo recompensados adequadamente pelo o que estão dando &amp;#8211; mas não se sentem num padrão crônico de diminuição, descrédito e desvalorização do que fazem. Eles podem arriscar a congruência sabendo que isso vai agir como um catalisador para otimizar resultados de sucesso que beneficiam a todos.&lt;/p&gt;


	&lt;p&gt;Congruência é o grande segredo por trás dos sucessos de muitos projetos. Uma cultura de congruência ajuda um projeto de pelo menos seis grandes maneiras:&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;As pessoas se comprometem com planos somente depois de negociações abertas, então os planos tem mais chances de serem realistas logo no começo. (&lt;strong&gt;nota do Akita:&lt;/strong&gt; a equipe se compromete apenas com aquilo que realmente acredita que vai entregar &amp;#8211; não existe &amp;#8220;tenho coisas demais para fazer&amp;#8221;)&lt;/li&gt;
		&lt;li&gt;As pessoas vêm rapidamente com fatos, que os gerentes precisam para controlar o projeto, tão logo se tornarem conhecidos, então os gerentes podem agir mais rapidamente com movimentos pequenos para corrigir os problemas. (&lt;strong&gt;nota do Akita:&lt;/strong&gt; cultura ágil que aceita a mudança.)&lt;/li&gt;
		&lt;li&gt;Quando problemas são revelados, as pessoas vêm rapidamente com idéias de soluções criativas, aumentando as chances de soluções rápidas e efetivas.&lt;/li&gt;
		&lt;li&gt;Uma boa parte dos esforços de todos é devotado a terminar o trabalho e ajudar os outros a terminar o trabalho deles.&lt;/li&gt;
		&lt;li&gt;Porque a falabilidade humana é considerada normal, uma quantidade apropriada &amp;#8211; mas pequena &amp;#8211; de tempo é gasto garantindo a confiabilidade da comunicação.&lt;/li&gt;
		&lt;li&gt;As pessoas se sentem bem a maior parte do tempo, e por isso são produtivas a maior parte do tempo.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;h2&gt;Congruências em Grandes Esforços de Desenvolvimento de Sistemas&lt;/h2&gt;


	&lt;p&gt;No percurso de desenvolvimento de sistemas, as pessoas engajam em numerosos atos de comunicação &amp;#8211; sobre requerimentos, prazos, problemas interpessoais, designs, progresso e mais. É por isso que comunicação individual efetiva é importante em todos os projetos, grandes e pequenos. Isso dito, isso se torna ainda mais importante à medida que crescem os esforços de desenvolvimento. A quantidade de comunicação necessária sobe de forma não-linear com o tamanho do projeto, então o efeito de estilo de comunicação imperfeita é aumentada. Portanto, se a qualidade individual de comunicação se mantém constante à medida que o projeto cresce, a qualidade geral da comunicação decai. (&lt;strong&gt;nota do Akita:&lt;/strong&gt; quantidade de conexões entre pares cresce segundo uma Lei de Potência.)&lt;/p&gt;


	&lt;p&gt;Por exemplo, um certo nível de congruência de comunicação pode ser adequado para produzir um produto com 25 mil linhas de código, mas totalmente inaceitável para um produto com 2,5 milhões de linhas de código. Para desenvolver sistemas grandes ou complexos, então, não é suficiente prestar atenção aos problemas técnicos &amp;#8211; aceitando que o estilo existente de comunicação será adequado. Gerentes também devem melhorar a cultura de comunicação do projeto e, portanto, precisam prestar atenção à congruência.&lt;/p&gt;


	&lt;p&gt;Para tornar as coisas piores, se não for gerenciado direito, projetos difíceis tendem a diminuir a congruência &amp;#8211; porque o estresse tende a subir quando a expectativa de qualidade decai. Não somos criatura altamente lógicas o tempo todo, mas temos sentimentos, assim como pensamentos em resposta a responsabilidades difíceis. Quando esses sentimentos internos são fortes o suficiente, eles se traduzem em estilos característicos de resolução sob estresse. Se nosso estilo característico é incongruente, as comunicaçoes se tornam menos efetivas e o trabalho se torna ainda mais difícil, criando um ciclo vicioso.&lt;/p&gt;


	&lt;p&gt;Congruência, claro, é apenas um dos fatores em comunicação efetiva &amp;#8211; outros fatores incluem coisas como tempo, memória, platéia adequada e dados precisos. Mas sem congruência, seus esforços de melhorar esses fatores &amp;#8220;lógicos&amp;#8221; serão sempre seriamente sabotados, junto com sua habilidade de construir sistemas maiores, mais complexos ou mais confiáveis.&lt;/p&gt;


	&lt;h2&gt;Atingindo Congruência&lt;/h2&gt;


	&lt;p&gt;Quando Deming disse, &amp;#8220;Coloque o medo fora do ambiente de trabalho,&amp;#8221; nós achamos que ele estava falando sobre mudar a organização que atribui culpa a uma organização congruente. Esse tipo de mudança é apresentada a uma pessoa de cada vez &amp;#8211; de preferência começando do topo &amp;#8211; um passo de cada vez. Os passos podem ser quebrados em seis partes: Conscientização, Aceitação, Autoria, Articulação, Aplicação, Ativismo. Vamos olhar como cada um deles aparece no contexto de um indivíduo tentando mudar a organização que atribui culpa.&lt;/p&gt;


	&lt;h3&gt;Conscientização&lt;/h3&gt;


	&lt;p&gt;Conscientização diz, &amp;#8220;Isto está acontecendo. Isto é real.&amp;#8221; Conscientização vem da experiência, quando eu me permito experimentar o mundo ao meu redor como ele é &amp;#8211; não como deveria ser, ou como eu acho que deveria ser, ou como alguém me diz que deveria ser.&lt;/p&gt;


	&lt;p&gt;Conscientização é sempre o primeiro passo e provavelmente o mais difícil, porque geralmente não estamos conscientes que não estamos conscientes. Aqui vai um exemplo pessoal de como falta de conscientização pára o processo de mudança antes mesmo de começar:&lt;/p&gt;


&lt;blockquote&gt;Jerry estava participando de uma reunião de projeto em uma empresa de software &amp;#8211; uma reunião chamada pelo presidente da empresa para descobrir o que estava acontecendo em um projeto atrasado. Depois de alguma persuasão, um dos programadores disse que estava com medo de ir até o Nat, o Gerente de Desenvolvimento, com problemas, por causa da recepção que teve. Nat ficou com a cara vermelha, se levantou e gritou nervoso &amp;#8220;Como pode dizer isso? Minha porta estava sempre aberta para ouvir seus problemas! A única coisa que não vou tolerar é se você fica todo tenso quando chega, ou se não tem uma solução para propor!&amp;#8221; 
Na voz mais calma que conseguia (é difícil ficar calmo quando alguém está tão nervoso, mesmo se não diretamente a você), Jerry se virou ao Presidente e perguntou se Nat alguma vez foi até ele com problemas. Quando o Presidente disse que sim, Jerry perguntou se o Nat estava sempre calmo e carregando uma solução proposta. Antes do Presidente poder responder, Nat interrompeu: &amp;#8220;Por que eu iria com um problema se não era importante o suficiente para se excitar a respeito? E, se eu tivesse uma solução, por que eu iria até ele?&amp;#8221; 
Embora estivesse claro para todo mundo na sala que o Nat estava demandando que os outros &amp;#8220;façam como eu digo, não como eu faço&amp;#8221;, ele era incapaz de ver a incongruência. Faltando conscientização, não havia jeito do Nat mudar &amp;#8211; e de fato ele nunca mudou, até o dia que o Presidente o demitiu para que pudesse procurar por pastos mais verdes.&lt;/blockquote&gt;

	&lt;p&gt;O caso do Nat é bem típico. Já que incongruência é uma defesa, pessoas incongruentes sobem todos os tipos de escudos que fecham a informação sobre congruência. Sua própria incongruência e a dos outros é invisível &amp;#8211; isso é aceito, especialmente se é o normal na organização. Essa invisibilidade torna muito difícil alcancá-los com qualquer tipo de informação sobre o assunto.&lt;/p&gt;


	&lt;p&gt;Em outras palavras, quando você está sendo incongruente, você está perdendo sua habilidade de ver o que está acontecendo no mundo (dentro e fora). Então, não sabe que precisa mudar. E, mesmo se souber, não tem nenhuma idéia do que mudar para. Não admira que é tão difícil transformar uma cultura incongruente, quando o primeiro passo &amp;#8211; conscientização &amp;#8211; já é tão difícil de conseguir.&lt;/p&gt;


	&lt;p&gt;Conscientização vem da experiência, quando você se permite experimentar o mundo ao seu redor &amp;#8211; não como ele deveria ser, ou você gostaria que fosse, ou como alguém lhe diz que gostaria que fosse. Mas numa organização que atribui culpa, onde as pessoas se protegem dessa experiência, se tornar consciente normalmente requer ajuda. Ajudar os outros a se conscientizar demanda habilidades para desenvolver ambientes seguros e construir relacionamentos. Demanda paciência e carinho para observar por sinais de conscientização e ajudar a construí-lo. Também demanda fé e um comprometimento de que &amp;#8220;parte do meu trabalho é ajudar as pessoas da minha equipe a se desenvolver &amp;#8211; a parte mais importante.&amp;#8221; Se não acredita nisso, então certamente não tente ajudar. Caso contrário, vai se encontrar dizendo &amp;#8220;Você não está consciente de quão ruim você é, mas eu vou torná-lo consciente!&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Mas conscientização da situação geral não é suficiente &amp;#8211; você também precisa de auto-conscientização. &amp;#8220;Este sou eu. Isso é meu.&amp;#8221; Você pode estar consciente da jogatina de culpa, mas enquanto meramente apenas disser &amp;#8220;Esta é uma organização de atribuição de culpa,&amp;#8221; você não está fazendo coisa alguma para mudar isso. Quando você diz, &amp;#8220;Eu sou parte desta organização de atribuição de culpa,&amp;#8221; você está dando um passo. Você deve ver a jogatina de culpa como uma parte de si mesmo e de seu comportamento &amp;#8211; não apenas alguma coisa que &amp;#8220;eles&amp;#8221; fazem (a você).&lt;/p&gt;


	&lt;p&gt;Auto-conscientização é normalmente seguido ou de vergonha ou de culpa. Algumas pessoas reagem com raiva, a si mesmos ou a algum alvo conveniente. Ainda assim, auto-conscientização dá sensação de poder &amp;#8211; o pensamento de que já que me pertence, é meu para eu fazer alguma coisa a respeito.&lt;/p&gt;


	&lt;h3&gt;Aceitação&lt;/h3&gt;


	&lt;p&gt;Aceitação move o processo de mudança além de alto-culpa e diz, &amp;#8220;Eu não sou uma pessoa má porque faço isso. Minhas intenções são boas, embora minhas ações possam não ser efetivas.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Aceitação significa que você entende que tomar a responsabilidade não é a mesma coisa que se culpar. Portanto, você tem clemência de si mesmo e de suas imperfeições humanas. Você pára de ser raivoso. Perdoa a si mesmo por não ter feito melhor no passado, baseado no seu entendimento presente e padrões. E, enquanto perdoa e aceita a si mesmo, você ganha compaixão pelos outros envolvidos &amp;#8211; aumentando as chances de conseguir se comunicar com eles e efetuar mudanças.&lt;/p&gt;


	&lt;p&gt;No ponto quando você está tentando alcançar aceitação, é crítico que não seja punido ou humilhado por alguém. Você precisa de ajuda em suportar suas costas, do contrário você pensa tão pouco sobre si mesmo que não poderia fazer qualquer coisa sobre a situação. Claro, em uma organização que atribui culpa, pode ser difícil, por um tempo, evitar esse tipo de punição, que é o motivo pelo qual autoria e aceitação normalmente acontecem internamente, e se mantém internos por algum tempo.&lt;/p&gt;


	&lt;h3&gt;Autoria&lt;/h3&gt;


	&lt;p&gt;Autoria é o primeiro ponto de decisão, quando você diz, &amp;#8220;Eu tenho escolhas. Eu posso fazer alguma coisa a respeito.&amp;#8221; Com algum encorajamento, você aceita que é responsável por escolhas na sua vida. Você entende que não precisa reagir, mas que pode escolher suas respostas &amp;#8211; que você consegue criar, em grande parte, seu próprio contexto interpessoal. Você sabe que existem algumas partes do contexto que pode controlar e algumas que não pode; e sabe precisamente qual é qual.&lt;/p&gt;


	&lt;h3&gt;Articulação&lt;/h3&gt;


	&lt;p&gt;Articulação é o compromisso público de mudar e dizer &amp;#8220;Eu vou a público com isso (para assumir responsabilidade e conseguir suporte.)&amp;#8221; Articulação não é efetiva se tentada antes dos pré-requisitos estarem nos lugares. Se não consegue aceitar a si mesmo ou como você se refletia para o mundo, ou se não sabe que tem escolhas ou sente que pode ganhar suporte com essas escolhas, então falar para fora é meramente uma bravata não efetiva.&lt;/p&gt;


	&lt;p&gt;Mas quando os pré-requisitos estão nos lugares, você não consegue ser efetivo mantendo silêncio &amp;#8211; você precisa decidir falar. No processo de falar você transforma sua conscientização interior para outro tipo de experiência. Você se ouve e nota a resposta que recebe dos outros. Você torna público, se quiser, a si mesmo &amp;#8211; sua posição mental e emocional.&lt;/p&gt;


	&lt;p&gt;Inicialmente, claro, você precisa procurar lugares para abrir suas expressões verdadeiras e honestas de seus pensamentos e sentimentos. Quando se acostuma mais com o poder de seu verdadeiro você, então consegue procurar o tipo de suporte que o desafia e o confronta, em vez do tipo de suporte que o protege ou consola.&lt;/p&gt;


	&lt;p&gt;Passos iniciais da articulação congruente normalmente são desajeitados. É por isso que um ouvinte responsivo e receptivo satisfaz um dos requerimentos para promover desenvolvimento e congruência.&lt;/p&gt;


	&lt;h3&gt;Aplicação&lt;/h3&gt;


	&lt;p&gt;Aplicação diz, &amp;#8220;Estas são minhas escolhas (minhas novas maneiras de resolução).&amp;#8221; Você consegue aprender a ser congruente, primeiro no contexto mais imediato, seguro e encorajador. Então expande os contextos nos quais consegue responder congruentemente. Não tente &amp;#8220;não ser incongruente&amp;#8221;. Esse comando paradoxal somente envolve incongruência e perfeccionismo. (&amp;#8220;Se não consigo ser perfeitamente congruente o tempo todo, eu não valho nada.&amp;#8221;) Foque na congruência, pratique congruência e os &amp;#8220;músculos&amp;#8221; da incongruência vão simplesmente atrofiar.&lt;/p&gt;


	&lt;p&gt;Com suporte e prática você consegue começar a usar e testar congruência nos seus relacionamentos imediatos. Sugerimos que continue a desenhar para o sucesso, de tal forma que esses testes iniciais de sua nova habilidade sejam feitos dentro de ambientes onde seja mais factível que lhe dêem o benefício da dúvida. À medida que experimenta sucesso, então você consegue se centrar até mesmo em arenas mais turbulentas e de conflito. Em outras palavras, uma vez que você &amp;#8220;entende o recado&amp;#8221;, não marche à sala do presidente e anuncie que, a partir de agora, todas as partes culpadas devem parar de jogar a culpa, ou caso contrário.&lt;/p&gt;


	&lt;h3&gt;Ativismo&lt;/h3&gt;


	&lt;p&gt;Ativismo diz, &amp;#8220;Agora que eu consigo fazer diferença em mim e em meu mundo mais familiar, vou ajudar a espalhar isso pela organização.&amp;#8221; Ativismo é liderança aplicada, começando pelo ponto onde você tem competência suficiente em ser congruente para alcançar e ser pró-ativo &amp;#8211; antecipando, iniciando, instigando &amp;#8211; mas não infligindo. Você não consegue operar de uma posição de incongruência e forçar outras pessoas a serem congruentes. (&amp;#8220;Eu preciso culpá-los, porque eles também jogam tanto a culpa (&lt;strong&gt;nota do Akita:&lt;/strong&gt; &amp;#8220;sabonetam&amp;#8221;). Quando eles mudarem, então eu serei capaz de mudar.&amp;#8221;)&lt;/p&gt;


	&lt;p&gt;De qualquer forma, você não deve infligir congruência a qualquer um. Congruência é contagiosa &amp;#8211; quando dirigida de forma consciente para criar um ambiente seguro, de cultivo, produtivo. Pode se espalhar mais devagar do que você gostaria, mas uma vez que começa a se mover, é difícil parar.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4_Z-WPYhyy-GNuWd8QMRr18e9aU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4_Z-WPYhyy-GNuWd8QMRr18e9aU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4_Z-WPYhyy-GNuWd8QMRr18e9aU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4_Z-WPYhyy-GNuWd8QMRr18e9aU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=5AZPix3Nrao:_UbcwrJedqA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=5AZPix3Nrao:_UbcwrJedqA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=5AZPix3Nrao:_UbcwrJedqA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=5AZPix3Nrao:_UbcwrJedqA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=5AZPix3Nrao:_UbcwrJedqA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=5AZPix3Nrao:_UbcwrJedqA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=5AZPix3Nrao:_UbcwrJedqA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/5AZPix3Nrao" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/06/05/tradu--o-conselhos-para-gerentes-de-desenvolvimento-de-software</feedburner:origLink></item><item><title>Notícias do Front #5</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/8rJJdxuZt-Q/not-cias-do-front-5</link><pubDate>Mon, 01 Jun 2009 17:18:39 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5170</guid><description>&lt;p&gt;Desta vez faz apenas pouco mais de um mês desde &lt;a href="http://www.akitaonrails.com/2009/04/20/not-cias-do-front-4"&gt;minha última&lt;/a&gt; compilação de notícias. Este mês foi interessante, principalmente com a RailsConf Las Vegas que aconteceu no começo do mês. Quem quiser acompanhar tudo o que eu venho lendo, assine o &lt;a href="http://www.google.com/reader/shared/11268689969169739024"&gt;feed do meu Google Reader&lt;/a&gt;, meu  &lt;a href="http://delicious.com/fabioakita"&gt;Delicious&lt;/a&gt; e, claro, para as últimas novidades, &lt;a href="http://www.twitter.com/akitaonrails"&gt;sigam-me no Twitter&lt;/a&gt;. Vamos às notícias:&lt;/p&gt;&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.hashcode.eti.br/?p=269"&gt;&lt;span class="caps"&gt;PDF&lt;/span&gt; + Rails + RGhost &amp;#8211; Now in the View&lt;/a&gt; &amp;#8211; quando se pergunta sobre suporte de &lt;span class="caps"&gt;PDF&lt;/span&gt; no Ruby/Rails, a maioria se lembra primeiro do PDFWriter. Porém não podemos esquecer que temos uma solução nacional, o &lt;strong&gt;RGhost&lt;/strong&gt;, criado pelo Shairon Toledo. Agora ele criou uma nova gem que integra ainda melhor o RGhost às convenções do Rails para conseguir criar views que geram &lt;span class="caps"&gt;PDF&lt;/span&gt; de forma bem mais simples.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://blog.martyandrews.net/2009/05/enforcing-ruby-code-quality.html"&gt;Enforcing Ruby code quality&lt;/a&gt; &amp;#8211; hoje temos diversas ferramentas que checam qualidade de código, no caso flay, flog, reek, roodi, metric-fu. Neste artigo o Marty Andrews explica como começar a usá-los para melhorar a qualidade do seu código.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://blog.mmediasys.com/2009/05/31/beta-test-rake-compiler-fat-binaries-functionality-implemented/"&gt;beta test rake-compiler: fat binaries functionality implemented&lt;/a&gt; &amp;#8211; se você é mantenedor ou colaborador de RubyGems, especialmente se elas tem extensões em C, leia esse artigo do Luis Lavena. Ele está aperfeiçoando um processo para tornar possível criar gems que contenham &amp;#8220;fat-binaries&amp;#8221;, ou seja, múltiplos binários para múltiplas plataformas na mesma gem, um processo que no mundo Mac ficou conhecido como &amp;#8220;Universal Binary&amp;#8221; (por ter um único executável com binários para PowerPC e Intel). Essa é, de longe, a maneira mais inteligente para suportar múltiplas plataformas e será excelente se as gems de Ruby começarem a sair dessa forma.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.linux-mag.com/id/7341"&gt;Sunspot: A Solr-Powered Search Engine for Ruby&lt;/a&gt; &amp;#8211; felizmente uma coisa que nunca faltou no mundo Rails foi integração com engines de procura. O mais usado acho que ainda é o Sphinx junto com o plugin Ultrasphinx ou Thinking Sphinx. Porém existe outra alternativa: o Lucene, famoso em Java, com seu par Solr, um servidor que implementa o Lucene como serviço. O &lt;a href="http://outoftime.github.com/sunspot/docs/index.html"&gt;Sunspot&lt;/a&gt; tenta ser uma alternativa para integar ao Solr, dando uma &lt;span class="caps"&gt;DSL&lt;/span&gt; que permite integração mais intuitiva a esse engine de procura. Pode ser uma boa alternativa ao antigo plugin acts_as_solr.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://giantrobots.thoughtbot.com/2009/5/29/internbot-chronicles-4"&gt;Internbot Chronicles #4: CI &amp;#38; Test Metrics&lt;/a&gt; &amp;#8211; ainda falando de qualidade, teste é um assunto constante em nossa qualidade, em especial Integração Contínua (CI). Neste artigo o Nick Quaranto explica como montar seu próprio CI.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://merbist.com/2009/05/27/macruby-changing-the-ruby-ecosystem/"&gt;MacRuby, changing the Ruby ecosystem&lt;/a&gt; &amp;#8211; fiquem de olho no MacRuby. Na atual versão 0.4 ele já é bastante usável e inclusive permitiu a criação de aplicações desktop nativas de Mac como o &lt;a href="http://www.drinkbrainjuice.com/blogo"&gt;Blogo&lt;/a&gt;, totalmente feito em Ruby mas que você nem perceberia. A versão experimental 0.5 está andando de vento em popa e trás uma nova virtual machine e performance &amp;#8211; até agora &amp;#8211; espetacular. Especula-se que ela venha inclusive a se tornar uma VM usada oficialmente pela Apple como ambiente de desenvolvimento rápido de aplicações Desktop de Mac e também de iPhone/iPod Touch! Neste artigo, o Matt Aimonnetti, colaborador do projeto HotCocoa, dá uma prévia do que está acontecendo. Aproveitando, não deixe de comprar o último excelente screencast do Peepcode, &lt;a href="http://peepcode.com/products/meet-macruby"&gt;&lt;span class="caps"&gt;MEET MACRUBY&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/blog/439-hg-git-mercurial-plugin"&gt;Hg-Git Mercurial Plugin&lt;/a&gt; &amp;#8211; a comunidade Ruby adotou o Git praticamente como a ferramenta de versionamento distribuído de código &amp;#8220;oficial&amp;#8221;. Porém, nós não acreditamos em &lt;em&gt;&amp;#8220;uma única maneira de fazer as coisas.&amp;#8221;&lt;/em&gt; Durante a RailsConf, o Scott Chacon, que trabalha para o Github.com, lançou um plugin para Mercurial (hg), que permite a clientes Hg conversarem com repositórios remoto em Git de forma transparente. Isso permite que usuários de Mercurial consigam consumir repositórios do Github, por exemplo. Excelente exemplo de como a comunidade Ruby resolve seus problemas.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.rubyinside.com/scotland-on-rails-presentations-now-online-27-awesome-videos-1799.html"&gt;Scotland On Rails Presentations Now Online: 27 Awesome Videos&lt;/a&gt; &amp;#8211; o evento Scotland on Rails liberou os vídeos das apresentações. Vale a pena dar uma olhada.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://talklikeaduck.denhaven2.com/2009/05/21/ward-cunningham-on-wikis-and-agility"&gt;Ward Cunningham on Wikis and Agility&lt;/a&gt; &amp;#8211; vídeo muito legal de uma entrevista com ninguém menos que Ward Cunningham &amp;#8211; dentre milhares de outras coisas, criador do Wiki &amp;#8211; , mostrando o ambiente de sua empresa, a AboutUs. Muito interessante para quem está interessado em criar ambiente realmente ágeis para seus funcionários.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.planeterlang.org/en/planet/article/rinterface_a_pure_Ruby_client_to_talk_to_Erlang/"&gt;rinterface: a pure Ruby client to talk to Erlang&lt;/a&gt; &amp;#8211; mais uma maneira de fazer chamadas remotas a procedimentos (RPC) a partir de clientes Ruby, enviando chamadas a processos Erlang. É uma forma de integração, pode ser útil em muitos casos. Neste &lt;a href="http://weblog.miceda.org/2009/04/24/connecting-to-erlangs-epmd-from-ruby/"&gt;outro artigo&lt;/a&gt;, Dave Bryson explica algo similar, conectando-se diretamente na porta &lt;span class="caps"&gt;TCP&lt;/span&gt; do processo Erlang.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://blog.saush.com/2009/05/clone-tinyurl-with-40-lines-of-ruby-code-on-google-appengine-for-java/"&gt;Clone TinyURL with 40 lines of Ruby code on Google AppEngine for Java&lt;/a&gt; &amp;#8211; o título já diz tudo, mas aqui vai mais uma maneira de se criar mais um clone de TinyURL &amp;#8211; que, aliás, deve ser a aplicação mais clonada dos últimos tempos. A idéia é usar Sinatra rodando sobre JRuby no Google App Engine. Pode ser um bom exercício para quem quer entender essas tecnologias.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://adminmyserver.com/articles/ruby-pong-with-shoes-and-bloopsaphone"&gt;ruby pong with shoes and bloopsaphone&lt;/a&gt; &amp;#8211; quer aprender a criar o jogo mais simples de todos os tempos em ruby? Pong é o avô dos videogames modernos, mas ainda é divertido, especialmente de reimplementá-lo pela milésima vez. Neste caso usando o framework Shoes, do _why.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.elctech.com/tutorials/heroku-0-to-60-in-15-minutes"&gt;Heroku 0 to 60 in 15 minutes&lt;/a&gt; &amp;#8211; neste tutorial a Elctech demonstra como criar, configurar e instalar uma aplicação Rails no Heroku. É tão simples que o tutorial é quase uma redundância :-) Na realidade metade do tutorial é gasto explicando como se registra domínios.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.rubyinside.com.br/23-links-e-recursos-uteis-do-ruby-19-11"&gt;23 links e recursos úteis do Ruby 1.9&lt;/a&gt; &amp;#8211; não deixem de visitar o site RubyInside.com.br, a versão brasileira do site britânico de mesmo nome. Neste artigo há uma coletânea importante de 23 links para aprender mais sobre o Ruby 1.9. Todos os rubistas precisam estar atualizados quanto a este assunto para ajudar a comunidade a migrar gems e outros projetos para 1.9.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://weblog.rubyonrails.org/2009/5/13/railsconf-in-review"&gt;Railsconf 2009 in Review&lt;/a&gt; &amp;#8211; este ano a RailsConf foi em Las Vegas. Se quiser mais detalhes também veja este &lt;a href="http://www.railsenvy.com/2009/5/13/railsconf-video-2"&gt;vídeo da RailsEnvy&lt;/a&gt; ; a &lt;a href="http://railsmagazine.com/issues/2"&gt;segunda edição da Rails Magazine&lt;/a&gt; ; o &lt;a href="http://giantrobots.thoughtbot.com/2009/5/12/railsconf-2009-wrapup"&gt;wrap up da thoughtbot&lt;/a&gt; ; os &lt;a href="http://tecblog.locaweb.com.br/tag/railsconf/"&gt;artigos que meus amigos da Locaweb&lt;/a&gt; que foram comigo escreveram; o &lt;a href="http://www.rubyinside.com/the-mega-railsconf-2009-round-up-1757.html"&gt;round up da RubyInside&lt;/a&gt; ; o &lt;a href="http://yehudakatz.com/2009/05/08/railsconf-wrapup/"&gt;wrap up do wycatz&lt;/a&gt; ; o &lt;a href="http://merbist.com/2009/05/08/railsconf-2009/"&gt;wrap up do Matt Aimonnetti&lt;/a&gt;. Finalmente, meus próprios artigos estão na categoria &lt;a href="http://www.akitaonrails.com/railsconf2009"&gt;RailsConf2009&lt;/a&gt;, dêem uma olhada.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.railsenvy.com/2009/5/11/rubystein-ruby-meets-wolfenstein"&gt;Rubystein&lt;/a&gt; &amp;#8211; durante a RailsConf, uma das coisas que mais chamou a atenção foi a palestra dos garotos da Phusion, onde eles demonstraram um jogo feito em Ruby puro, uma reimplementação (não um port) do famoso jogo Wolfenstein 3D. A idéia foi demonstrar que o Ruby é lento mas não tão lento quanto dizem, e para provar, eles fizeram algoritmos que exigem muito processamento, como ray tracing, diretamente em Ruby. Leia a respeito também na &lt;a href="http://www.rubyinside.com/rubystein-wolfenstein-3d-recreated-in-ruby-1751.html"&gt;RubyInside&lt;/a&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://pivotallabs.com/users/spierson/blog/articles/830-railsconf-don-t-mock-yourself-out-dave-chelimsky"&gt;Sam&amp;#8217;s Blog &amp;#8211; Railsconf: Don&amp;#8217;t mock yourself out &amp;#8211; Dave Chelimsky&lt;/a&gt; &amp;#8211; durante a RailsConf o David Chelimsky explicou mais uma vez sobre Mocks, Stubs. Neste artigo da Pivotal Labs, o Sam Pierson resume o assunto.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.rubyinside.com.br/rabbitmq-um-sistema-de-fila-rapido-e-confiavel-para-rubistas-1198"&gt;RabbitMQ &amp;#8211; Um sistema de fila rápido e confiável para Rubistas&lt;/a&gt; &amp;#8211; por favor, toda vez que precisarem de algum mecanismo que simule uma &amp;#8220;fila&amp;#8221; (lembram-se da faculdade, First In, First Out), &lt;strong&gt;não&lt;/strong&gt; comecem implementando uma tabela chamada &amp;#8220;fila&amp;#8221; onde cada linha é um elemento! Já existem dezenas de soluções para isso. Especialmente se você precisa de uma fila realmente robusta, com as características básicas de &lt;em&gt;garantia de entrega&lt;/em&gt; e &lt;em&gt;garantia de entrega apenas uma vez&lt;/em&gt;. O RabbitMQ é uma fila muito capaz e, o melhor, não é difícil integrar com Ruby. E eis mais um exemplo de Ruby integrando com produtos Erlang.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://jmettraux.wordpress.com/2009/04/25/rufus-decision-11-ruby-decision-tables/"&gt;rufus-decision 1.1, ruby decision tables&lt;/a&gt; &amp;#8211; você tem aquele código feio, cheio de copy e paste, com vários ifs, dentro de ifs, dentro de ifs &amp;#8230; resumindo, uma lógica que liga diversas condições em cruzamento a ações. Você precisa de uma &lt;em&gt;tabela de decisão&lt;/em&gt;. Em Ruby, o rufus é uma implementação disso que pode ser muito útil para tornar sua lógica de negócio bem mais simples de dar manutenção, evitando duplicações desnecessárias.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.rubyinside.com/typhoeus-a-high-speed-parallel-http-library-for-ruby-1767.html"&gt;Typhoeus: A High Speed, Parallel &lt;span class="caps"&gt;HTTP&lt;/span&gt; Library for Ruby&lt;/a&gt; &amp;#8211; para quem quer realizar múltiplas requisições &lt;span class="caps"&gt;HTTP&lt;/span&gt; em paralelo, esta biblioteca pode ajudar. É algo até que simples em conceito mas que não havia de forma fácil em Ruby. Basicamente trata-se de realizar chamadas assíncronas não-bloqueantes que respondem a eventos. Pode ser útil quando você quiser criar spiders ou crawlers de sites.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://isitjruby.com/"&gt;is it jruby?&lt;/a&gt; &amp;#8211; recentemente a Brightbox lançou o site &lt;a href="http://isitruby19.com/"&gt;is it ruby 1.9?&lt;/a&gt;, onde a comunidade poderia testar gems e dizer nesse site se ela é ou não compatível, em seus testes, com o ruby 1.9. Agora foi lançado mais uma com o mesmo objetivo mas desta vez para avaliar a compatibilidade de gems com o jruby. Mais e mais a comunidade está se conscientizando que as gems precisam receber mais tratamento para ficarem compatíveis com múltiplas virtual machines. Isso é muito bom e espero que todos colaborem.&lt;/li&gt;
	&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CvklfdAeQw7zzDsPWMSk9k9G0-8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CvklfdAeQw7zzDsPWMSk9k9G0-8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CvklfdAeQw7zzDsPWMSk9k9G0-8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CvklfdAeQw7zzDsPWMSk9k9G0-8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=8rJJdxuZt-Q:edijkdUknjg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=8rJJdxuZt-Q:edijkdUknjg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=8rJJdxuZt-Q:edijkdUknjg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=8rJJdxuZt-Q:edijkdUknjg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=8rJJdxuZt-Q:edijkdUknjg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=8rJJdxuZt-Q:edijkdUknjg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=8rJJdxuZt-Q:edijkdUknjg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/8rJJdxuZt-Q" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/06/01/not-cias-do-front-5</feedburner:origLink></item><item><title>[Off-Topic] As 5 disfunções de equipes em código</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/F7hoS6mtdOI/off-topic-as-5-disfun--es-de-equipes-em-c-digo</link><pubDate>Sun, 31 May 2009 15:10:11 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5168</guid><description>&lt;p&gt;Eu costumo repetir a todas as equipes que eu gerencio, que 99% dos problemas de qualquer projeto são especialmente devidos à &amp;#8220;comunicação&amp;#8221;. Estresses que duram dias e poderiam ser resolvidos numa conversa de corredor de 30 seg. Eu uso &amp;#8220;comunicação&amp;#8221; mas é um pouco mais do que isso, é falta de respeito, falta de confiança, falta de &lt;a href="http://pt.wikipedia.org/wiki/Empatia"&gt;empatia&lt;/a&gt; (não &amp;#8220;simpatia&amp;#8221;, &amp;#8220;Empatia&amp;#8221;). Vamos à &lt;strong&gt;tradução&lt;/strong&gt; do artigo de &lt;a href="http://www.markhneedham.com/blog/2009/05/28/the-5-dysfunctions-of-teams-in-code/"&gt;Mark Needham&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Eu recentemente esbarrei em um &lt;a href="http://www.thekua.com/atwork/2009/05/evidence-in-favour-of-conways-law/"&gt;post interessante do meu colega Pat Kua&lt;/a&gt; onde ele fala sobre alguns padrões que ele notou em código poderiam ser ligados à &lt;a href="http://en.wikipedia.org/wiki/Conway%27s_Law"&gt;lei de Conway&lt;/a&gt;, que sugere que as estruturas de sistemas desenvolvidos em organizações vão refletir a estrutura de comunicação dessa organização. (AkitaOnRails: leiam também o &lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month"&gt;The Mythical Man-Month&lt;/a&gt;, onde o assunto de Conway também é explorado e entendam &lt;a href="http://www.infoq.com/articles/scaling-lean-agile-feature-teams"&gt;Cross Functional Teams&lt;/a&gt; para entender uma das soluções.)&lt;/p&gt;


	&lt;p&gt;Também recentemente li um livro chamado &lt;a href="http://www.markhneedham.com/blog/2009/04/22/the-five-dysfunctions-of-a-team-book-review/"&gt;As Cinco Disfunções de Equipes&lt;/a&gt; que descreve alguns comportamentos em equipes que não funcionam de maneira efetiva.&lt;/p&gt;


	&lt;p&gt;Jogando como o advogado do diabo eu fiquei intrigado se existia algum tipo de ligação entre essas disfunções e se elas se manifestam em nosso código como anti-padrões.&lt;/p&gt;


	&lt;p&gt;As 5 disfunções são:&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Inexistência de Confiança &amp;#8211; membros da equipe não querem ser vulneráveis dentro do grupo&lt;/li&gt;
		&lt;li&gt;Medo de Conflito &amp;#8211; equipe não consegue engajar debates honestos de idéias&lt;/li&gt;
		&lt;li&gt;Falta de Comprometimento &amp;#8211; membros da equipe raramente se comprometem em decisões&lt;/li&gt;
		&lt;li&gt;Evitar Responsabilidade &amp;#8211; membros da equipe não chamam a atenção de seus pares a respeito de ações/comportamentos que prejudicam a equipe&lt;/li&gt;
		&lt;li&gt;Falta de Atenção a Resultados &amp;#8211; membros da equipe que colocam suas necessidades individuais antes daquelas da equipe&lt;/li&gt;
	&lt;/ol&gt;&lt;h2&gt;Inexistência de Confiança&lt;/h2&gt;


	&lt;p&gt;Acho que ter &lt;strong&gt;checagens por null por todo o código&lt;/strong&gt; é o indicador mais óbvio que as pessoas não confiam no código com que estão trabalhando.&lt;/p&gt;


	&lt;p&gt;Se a pessoa escrevendo o código tivesse fé em seus colegas que escreveram o código que ele precisa agora, acho que seria mais provável que ele confiaria que o código fará a coisa certa e não se sentiria na necessidade de &lt;a href="http://www.thekua.com/atwork/2008/08/defensive-programming-depends-on-context/"&gt;ser tão defensivo&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Medo do Conflito&lt;/h2&gt;


	&lt;p&gt;Medo do conflito em uma equipe parece se manifestar da maneira mais óbvia em código quando temos &lt;strong&gt;muitas duplicações acontecendo&lt;/strong&gt; (síndrome do &amp;#8220;copy &amp;#38; paste&amp;#8221;) &amp;#8211; existem diversas razões para duplicações mas acho que uma delas é quando as pessoas não estão engajadas em discussões quando eles não concordam com alguma coisa que um colega escreveu e por isso acabam escrevendo suas próprias versões de alguma coisa que já foi feita.&lt;/p&gt;


	&lt;p&gt;Isso provavelmente se manifesta de maneira ainda mais óbvia quando você acaba com múltiplos diferentes frameworks na mesma base de código e todos fazendo as mesmas coisas só porque as pessoas não querem engajar em conversações para escolher qual a equipe toda vai usar.&lt;/p&gt;


	&lt;h2&gt;Falta de Comprometimento&lt;/h2&gt;


	&lt;p&gt;Esse é um que parece cruzar muito com os dois anteriores, embora uma maneira específica que este se manifesta em código quando vemos &lt;strong&gt;erros básicos ou falta de cuidado demonstrado em código&lt;/strong&gt; (síndrome de &amp;#8220;fazer nas coxas&amp;#8221;) &amp;#8211; um exemplo disso pode ser mudar o nome da classe e então não garantir que todos os lugares onde o nome antigo era usado tenham sido atualizados.&lt;/p&gt;


	&lt;p&gt;Isso deixa o código numa situação meia-boca e torna muito difícil para as outras pessoas trabalharem e eles precisam ficar limpando as coisa antes de conseguir efetivamente fazer algum trabalho.&lt;/p&gt;


	&lt;h2&gt;Evitar Responsabilidade&lt;/h2&gt;


	&lt;p&gt;O anti-padrão de código que mais salta aos meus olhos é &lt;strong&gt;quando nós permitimos que as pessoas escrevam código sem testes&lt;/strong&gt; e colocamos no repositório de código.&lt;/p&gt;


	&lt;p&gt;Pela minha experiência até agora isso nunca funcionou bem e eu acho que isso demonstra falta de respeito pelo resto da equipe já que não temos uma maneira simples de verificar se o código efetivamente funciona e as outras pessoas não podem usar isso em outro lugar com nenhum grau de segurança.&lt;/p&gt;


	&lt;h2&gt;Falta de Atenção a Resultados&lt;/h2&gt;


	&lt;p&gt;Membros da equipe colocando suas necessidades individuais antes da equipe se manifesta no código quando acabamos com &lt;strong&gt;código que foi escrito de tal maneira que apenas quem escreveu o código é capaz de entendê-lo.&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Acho que isso se manifesta em &amp;#8220;código esperto&amp;#8221; que não tem problema se o projeto for só seu, mas no contexto de uma equipe é muito detrimental à medida que você se torna o gargalo quando outras pessoas querem fazer mudanças nessa área do código e não podem porque não conseguem entender o que está acontecendo.&lt;/p&gt;


	&lt;p&gt;Outra coisa que cai nesta mesma situação é &lt;strong&gt;quando existem convenções a serem seguidas mas decidimos sair por fora e fazer do nosso jeito&lt;/strong&gt;. Tudo bem, algumas vezes não tem problema se estamos trabalhando para tornar o código realmente melhor e o resto da equipe sabe e concorda com isso. Caso contrário, não é algo inteligente de se fazer.&lt;/p&gt;


	&lt;h2&gt;Em Resumo&lt;/h2&gt;


	&lt;p&gt;Acho intrigante que em minha mente, pelo menos, alguns dos problemas que vemos em código parecem ter alguma correlação aos problemas que vemos nas equipes.&lt;/p&gt;


	&lt;p&gt;Uma coisa que eu me lembro ao ler &lt;a href="http://www.amazon.com/Secrets-Consulting-Giving-Getting-Successfully/dp/0932633013/ref=sr_1_1?ie=UTF8&amp;#38;s=books&amp;#38;qid=1243452602&amp;#38;sr=1-1"&gt;Os Segredos de Consultoria&lt;/a&gt;, de Gerald Weinberg é sua afirmação de que &lt;a href="http://www.codinghorror.com/blog/archives/001033.html"&gt;não importa qual seja o problema, sempre é um problemas de pessoas&lt;/a&gt; &amp;#8211; se de fato isso for verdade então, em teoria, problemas que vemos em código devem ser indicativos de problemas com pessoas, que eu acho que até certo ponto realmente é verdade.&lt;/p&gt;


	&lt;p&gt;Eu acho certamente que nem todo problema de código está ligado às disfunções de equipes &amp;#8211; certamente alguns anti-padrões entram no seu código devido à inexperiência de membros da equipe, mas de qualquer forma isso também demonstraria a falta de sêniors na equipe trabalhando de forma mais próxima com seus colegas!&lt;/p&gt;


	&lt;p&gt;Talvez possamos identificar maneiras de como melhorar nossas equipes começando dando uma olhada no seu código.&lt;/p&gt;


	&lt;h2&gt;Ranting&lt;/h2&gt;


	&lt;p&gt;&lt;strong&gt;por AkitaOnRails:&lt;/strong&gt; de fato, estou muito convencido que problemas que acontecem no código são apenas sintomas de problemas estruturais das equipes e das organizações.&lt;/p&gt;


	&lt;p&gt;Começa pela falta de respeito: quando membros da equipe vêem seu chefe (não usem &amp;#8220;líderes&amp;#8221; para designar chefes hierárquicos. Eles nunca são &amp;#8220;líderes&amp;#8221; de verdade) usando de &amp;#8220;carteirada&amp;#8221; para conseguir as coisas com outras equipes, entre desenvolvedores também fica uma briga de braço do tipo: &lt;em&gt;&amp;#8220;eu fiz minha parte, se o outro reclamar mando meu chefe falar com eles e pronto.&amp;#8221;&lt;/em&gt; Na minha experiência, quase todos os problemas de equipes ineficientes e problemáticas é o gerente.&lt;/p&gt;


	&lt;p&gt;Gerentes que exercitam &lt;em&gt;&amp;#8220;comando-e-controle&amp;#8221;&lt;/em&gt; são exatamente os tipos que devem ser execrados de uma organização. Gerentes que não confiam na equipe, que gritam, que usam de força do cargo, que insistem em ser o gargalo da comunicação, que insistem que tudo tem que passar por eles, que não tem conhecimento real &amp;#8211; o que é notório na sua falta de capacidade de argumentação. Gerentes que não sabem dar feedback honesto e diário, pelo bem ou pelo mal, e deixam para jogar tudo na cara dos outros meses depois &amp;#8211; que, para mim, é a maior demonstração de &lt;strong&gt;covardia&lt;/strong&gt; em alguém que deveria ser um &lt;em&gt;&amp;#8220;líder&amp;#8221;&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;O Gerente que gosta de &lt;em&gt;&amp;#8220;micro-gerenciar&amp;#8221;&lt;/em&gt; quando bem lhe convém, mas não explica quais são suas expectativas e cujo feedback é positivo ou negativo não de acordo com o trabalho feito, mas de acordo com seu humor em geral, o que torna as coisas muito cômodas para ele, óbvio. Os gerentes que, para parecerem que não são tão ruins, gastam seu tempo tentando fazer as outras equipes parecerem ruins: os famosos caçadores de pelo em ovo, aqueles que vão procurar os motivos triviais como horário, vestimenta, pequenas conversas, e coisas desse tipo como desculpas para falar mal, em vez de resultados reais como lucro, custo, etc.&lt;/p&gt;


	&lt;p&gt;Se você está realmente preocupado em porque suas equipes não estão performando como deveriam, olhe para a camada de gerentes. Especialmente, ou principalmente, aqueles que estão &lt;strong&gt;há muitos anos&lt;/strong&gt; na mesma organização. Viciados, que já conhecem todos os &lt;em&gt;&amp;#8220;jeitinhos&amp;#8221;&lt;/em&gt; da organização. Eles são perigosos: sorriem para todo mundo, parecem confiantes, parecem eficientes, a maioria dos seus subordinados o elogiam (porque estão sob efeito de coerção, obviamente).&lt;/p&gt;


	&lt;p&gt;A equipe reflete o sistema e a estrutura que lhes é colocado sobre eles. Tire-lhes a autonomia, trate-os como crianças, deixe-os confusos e com medo e é exatamente esse o resultado que você vai ter: trabalho mal feito, de má qualidade, que dá defeitos o tempo todo, que custa caro. Alguns acham que isso é exagero, especialmente diretoria alheia e pouco participativa (qualquer coisa diferente de &amp;#8216;todos os dias&amp;#8217; não é participação) ao que acontece no chão de fábrica, eles ficam surpresos ao ver que seus funcionários se tornaram não somente estagnados, incompetentes, obsoletos mas também distantes e despreocupados com o futuro da organização. A única coisa que os preocupa nesse momento, são seus empregos.&lt;/p&gt;


	&lt;p&gt;Enquanto isso, os tais &amp;#8220;gerentes&amp;#8221;, continuam em situações confortáveis: quando as coisas &amp;#8211; por sorte, e apenas sorte &amp;#8211; dão certo, recebem os louros. Quando as coisas dão errado a culpa é de membros da equipe que eles já iam dar um jeito mesmo, ou a culpa é de outras equipes, a culpa é da organização inteira que não o ajudou, a culpa é das decisões históricas que agora não tem mais jeito. Mas a culpa nunca é dele mesmo. Lembrem-se: anos de casa não pode significar imunidade. Anos de casa deve ser irrelevante se a intenção da organização é ser eficiente. E não se preocupe em mandar um gerente desses embora com o medo &lt;em&gt;&amp;#8220;mas só ele sabe como fazer as coisas&amp;#8221;&lt;/em&gt;; as &amp;#8220;coisas&amp;#8221; não vão desandar, confie nas equipes, devolva-lhes a autonomia, elas saberão o que fazer.&lt;/p&gt;


	&lt;p&gt;Portanto, sim, a grande maioria das disfunções de uma equipe é resultado direto das disfunções de sua organização. Não adianta tentar aplicar técnicas localizadas como pregar pair programming, test driven development, refactoring, etc se a organização permanece a mesma. Quer mudar? Mude tudo. Ou nem se dê ao trabalho.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xfuahRgw1b1m6AqiM8w7vpaAf5g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xfuahRgw1b1m6AqiM8w7vpaAf5g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xfuahRgw1b1m6AqiM8w7vpaAf5g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xfuahRgw1b1m6AqiM8w7vpaAf5g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=F7hoS6mtdOI:Rc8ziglc6DQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=F7hoS6mtdOI:Rc8ziglc6DQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=F7hoS6mtdOI:Rc8ziglc6DQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=F7hoS6mtdOI:Rc8ziglc6DQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=F7hoS6mtdOI:Rc8ziglc6DQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=F7hoS6mtdOI:Rc8ziglc6DQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=F7hoS6mtdOI:Rc8ziglc6DQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/F7hoS6mtdOI" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/05/31/off-topic-as-5-disfun--es-de-equipes-em-c-digo</feedburner:origLink></item><item><title>[Off-Topic] Se quiser melhorar a cultura, 20 expressões a se evitar</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/buZqvlM2G78/off-topic-se-quiser-melhorar-a-cultura-20-express-es-a-se-evitar</link><pubDate>Sat, 30 May 2009 23:28:57 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5167</guid><description>&lt;p&gt;Do blog de &lt;a href="http://jchyip.blogspot.com/2009/04/if-you-want-improvement-culture-20.html"&gt;Jason Yip&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Fonte: &lt;a href="http://www.amazon.com/gp/product/0915299747?ie=UTF8&amp;#38;tag=youdthinwitha-20&amp;#38;linkCode=as2&amp;#38;camp=1789&amp;#38;creative=390957&amp;#38;creativeASIN=0915299747"&gt;40 anos, 20 milhões de idéias: The Toyota Suggestion System&lt;/a&gt;&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Todo mundo entende isso!&lt;/li&gt;
		&lt;li&gt;Nunca fizemos isso antes, não vale a pena tentar.&lt;/li&gt;
		&lt;li&gt;Eu tentei isso antes, e eu sei que não funciona.&lt;/li&gt;
		&lt;li&gt;Isso não é atualizado o suficiente.&lt;/li&gt;
		&lt;li&gt;Isso está dentro do orçamento?&lt;/li&gt;
		&lt;li&gt;Tem planos demais sendo feitos&amp;#8212;vou pensar na sua opinião quando tiver tempo&lt;/li&gt;
		&lt;li&gt;Vamos falar disso outra hora.&lt;/li&gt;
		&lt;li&gt;Vamos esperar mais um pouco e ver como as coisas ficam.&lt;/li&gt;
		&lt;li&gt;Por que você quer mudar? As coisas não estão indo bem agora?&lt;/li&gt;
		&lt;li&gt;Existem regras, então não é bom fazer as coisas desse jeito.&lt;/li&gt;
		&lt;li&gt;Eu não acho que isso seja tecnicamente possível.&lt;/li&gt;
		&lt;li&gt;Essa idéia está muito fora, o gerente nunca vai concordar.&lt;/li&gt;
		&lt;li&gt;Essas coisas não se fazem nesta empresa!&lt;/li&gt;
		&lt;li&gt;Isso pode funcionar em outros lugares, mas não aqui!&lt;/li&gt;
		&lt;li&gt;O mundo real é mais complicado que isso.&lt;/li&gt;
		&lt;li&gt;Você não entende realmente a situação, não é?&lt;/li&gt;
		&lt;li&gt;Sua sugestão é boa, mas a empresa não pode bancá-la.&lt;/li&gt;
		&lt;li&gt;Isso vai criar problemas mais para frente.&lt;/li&gt;
		&lt;li&gt;Mesmo que eu te dê conselhos, ainda assim não vai dar.&lt;/li&gt;
		&lt;li&gt;Que sugestão é essa? Não dá para torná-la um pouco melhor?&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; relembrei isso depois de ter conversado com o Juan Bernabó recentemente: &lt;em&gt;&amp;#8220;insanidade é querer resultados diferentes fazendo as mesmas coisas.&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://jchyip.blogspot.com/2006/08/ward-on-amateurs-vs-professionals.html"&gt;&lt;strong&gt;Ward Cunningham:&lt;/strong&gt;&lt;/a&gt; Um amador diz &lt;em&gt;&amp;#8220;eu só faço as coisas do meu jeito.&amp;#8221;&lt;/em&gt; Um profissional deve ser capaz de dizer &lt;em&gt;&amp;#8220;vamos tentar do seu jeito por um tempo e ver o que acontece.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3InJZvG3QSLjHLsa6xQPW1g--rY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3InJZvG3QSLjHLsa6xQPW1g--rY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3InJZvG3QSLjHLsa6xQPW1g--rY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3InJZvG3QSLjHLsa6xQPW1g--rY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=buZqvlM2G78:eRwBku1yXeU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=buZqvlM2G78:eRwBku1yXeU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=buZqvlM2G78:eRwBku1yXeU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=buZqvlM2G78:eRwBku1yXeU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=buZqvlM2G78:eRwBku1yXeU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=buZqvlM2G78:eRwBku1yXeU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=buZqvlM2G78:eRwBku1yXeU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/buZqvlM2G78" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/05/31/off-topic-se-quiser-melhorar-a-cultura-20-express-es-a-se-evitar</feedburner:origLink></item><item><title>Campanha: Ajude o One-Click Ruby Installer</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/5GKr2KsEqAY/campanha-ajude-o-one-click-ruby-installer</link><pubDate>Thu, 21 May 2009 03:58:16 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5166</guid><description>&lt;p&gt;Eu tenho tentado, na &lt;a href="/2008/7/2/chatting-with-luis-lavena-ruby-on-windows"&gt;medida&lt;/a&gt; do &lt;a href="/2009/04/27/the-best-environment-for-rails-on"&gt;possível&lt;/a&gt;- windows-part-2, &lt;a href="/2008/07/26/still-playing-with-ruby-on-windows"&gt;ajudar&lt;/a&gt; a crescente comunidade rubista que, por diversas razões, vivem em um mundo Windows.&lt;/p&gt;


	&lt;p&gt;Infelizmente, existem muito poucos desenvolvedores &amp;#8211; incluindo dentro da própria comunidade Windows &amp;#8211; ajudando nisso. Atualmente existe um Ruby estável e usável em produção no Windows graças ao esforço, quase individual, do &lt;a href="http://blog.mmediasys.com"&gt;Luis Lavena&lt;/a&gt;, o argentino que mantém o excelente projeto &lt;a href="http://rubyforge.org/projects/rubyinstaller/"&gt;One-Click Ruby Installer&lt;/a&gt;&lt;/p&gt;


&lt;div style="float: left; margin: 3px"&gt;&lt;a href='http://www.pledgie.com/campaigns/4435'&gt;&lt;img alt='Click here to lend your support to: Help One-Click Ruby Installer to get a New Home! and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/4435.png?skin_name=chrome' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Porém ele precisa de ajuda. Por isso ele começou uma campanha para angariar fundos ou qualquer tipo de colaboração para melhorar a visibilidade do projeto, criando um novo website, um novo wiki e ele começou primeiro no &lt;a href="http://blog.mmediasys.com/2009/05/19/rubyinstaller-one-clicks-need-a-new-home-can-you-help-him/"&gt;blog dele&lt;/a&gt;, depois na lista &lt;a href="http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/18b5203537929ad3"&gt;ruby-talk&lt;/a&gt;# e, finalmente, numa página para doações que você pode acessar &lt;a href="http://pledgie.com/campaigns/4435"&gt;por aqui&lt;/a&gt;&lt;/p&gt;

	&lt;p&gt;Vamos ajudar, twite sobre a campanha, espalhem por blogs, doem. Nenhuma quantia é pequena demais.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E2HG8yuFS2TXyM679XupiL17DJU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E2HG8yuFS2TXyM679XupiL17DJU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E2HG8yuFS2TXyM679XupiL17DJU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E2HG8yuFS2TXyM679XupiL17DJU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=5GKr2KsEqAY:6eGDAM-ah8U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=5GKr2KsEqAY:6eGDAM-ah8U:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=5GKr2KsEqAY:6eGDAM-ah8U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=5GKr2KsEqAY:6eGDAM-ah8U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=5GKr2KsEqAY:6eGDAM-ah8U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=5GKr2KsEqAY:6eGDAM-ah8U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=5GKr2KsEqAY:6eGDAM-ah8U:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/5GKr2KsEqAY" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/05/21/campanha-ajude-o-one-click-ruby-installer</feedburner:origLink></item><item><title>Promoção Ruby Learning: Ganhe o Livro do Urubatan</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/v_N9nfi2VDY/promo--o-ruby-learning-ganhe-o-livro-do-urubatan</link><pubDate>Sun, 17 May 2009 21:07:26 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5165</guid><description>&lt;div style="float: right; margin: 3px"&gt;&lt;a href="http://rubylearning.org/class/course/view.php?id=35"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/5/18/capa_original.gif" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;O bom e velho &lt;a href="http://rubylearning.org"&gt;RubyLearning.org&lt;/a&gt;, um dos mais antigos cursos de Ruby online está com promoções para ganhar livros. No caso, você pode concorrer ao livro &lt;a href="http://livro.urubatan.com.br/"&gt;Desenvolvimento Fácil e Rápido de Aplicações Web&lt;/a&gt; do nosso amigo Rodrigo Urubatan.&lt;/p&gt;

	&lt;p&gt;A idéia é criar uma maior interação nos fóruns com os autores dos livros em promoção. Quem o autor achar que está fazendo mais interações relevantes irá ganhar o livro.&lt;/p&gt;


	&lt;p&gt;A promoção do livro do Urubatan corre a partir do dia 19 agora até o dia 21. Não deixem de participar. Para isso cadastrem-se &lt;a href="http://rubylearning.org/class/course/view.php?id=35"&gt;neste link&lt;/a&gt; com a chave (enrollment key) &lt;strong&gt;&lt;span class="caps"&gt;BPCE101&lt;/span&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lmDkqD5fckRYPoLsNaAkwv1lUDc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lmDkqD5fckRYPoLsNaAkwv1lUDc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lmDkqD5fckRYPoLsNaAkwv1lUDc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lmDkqD5fckRYPoLsNaAkwv1lUDc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=v_N9nfi2VDY:lbFAZxaJOcI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=v_N9nfi2VDY:lbFAZxaJOcI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=v_N9nfi2VDY:lbFAZxaJOcI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=v_N9nfi2VDY:lbFAZxaJOcI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=v_N9nfi2VDY:lbFAZxaJOcI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=v_N9nfi2VDY:lbFAZxaJOcI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=v_N9nfi2VDY:lbFAZxaJOcI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/v_N9nfi2VDY" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/05/18/promo--o-ruby-learning-ganhe-o-livro-do-urubatan</feedburner:origLink></item><item><title>RailsConf 09 - Ninh Grosenbach Bui</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/mwITJblANWo/railsconf-09-ninh-grosenbach-bui</link><pubDate>Sun, 10 May 2009 23:12:03 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5161</guid><description>&lt;p&gt;RailsConf is not your &amp;#8220;normal&amp;#8221; tech conference. You will have people ranting, doing real rocket-science and lot&amp;#8217;s of people having real and genuine fun. We are very lucky to have people such as Geoffrey Grosenbach, Jason Seifer, Peter Cooper, Ninh Bui and so much more to remind us that there is an upper layer to technology: geeks love to have fun.&lt;/p&gt;


&lt;object width="500" height="375"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4583129&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=4583129&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/4583129"&gt;RailsConf 2009 &amp;#8211; Ninh Grosenbach Bui&lt;/a&gt; from &lt;a href="http://vimeo.com/akitaonrails"&gt;Fabio Akita&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;

	&lt;p&gt;And don&amp;#8217;t miss the awesome &lt;a href="http://www.rubyinside.com/rubystein-wolfenstein-3d-recreated-in-ruby-1751.html"&gt;Rubystein&lt;/a&gt;, Phusion&amp;#8217;s reimplementation of Wolsfenstein 3D in Ruby. They wanted to prove that Ruby is fast enough even to write games on it, and they succeeded in spades!&lt;/p&gt;


&lt;embed src="http://blip.tv/play/AYGA106WjnE" type="application/x-shockwave-flash" width="640" height="510" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt; 

	&lt;p&gt;A RailsConf não é sua conferência &amp;#8220;normal&amp;#8221; de tecnologia. Você verá pessoas reclamando, fazendo coisas realmente avançadas e muitas pessoas genuinamente se divertindo. Somos muito afortunados em ter pessoas como Geoffrey Grosenbach, Jason Seifer, Peter Cooper, Ninh Bui e tantos outros para nos lembrar que existe uma camada ainda acima da tecnologia: geeks adoram se divertir.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iRpUEcYU8EEaqkIwjs73VS6ejmE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iRpUEcYU8EEaqkIwjs73VS6ejmE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iRpUEcYU8EEaqkIwjs73VS6ejmE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iRpUEcYU8EEaqkIwjs73VS6ejmE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=mwITJblANWo:gLkqk3NCJBg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=mwITJblANWo:gLkqk3NCJBg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=mwITJblANWo:gLkqk3NCJBg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=mwITJblANWo:gLkqk3NCJBg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=mwITJblANWo:gLkqk3NCJBg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=mwITJblANWo:gLkqk3NCJBg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=mwITJblANWo:gLkqk3NCJBg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/mwITJblANWo" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/05/11/railsconf-09-ninh-grosenbach-bui</feedburner:origLink></item><item><title>RailsConf 09 - Message from Bryan Liles (TATFT) to Brazil</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/Kdl8kLCHIlE/railsconf-09-message-from-bryan-liles-tatft-to-brazil</link><pubDate>Fri, 08 May 2009 04:26:35 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5160</guid><description>&lt;p&gt;Bryan Liles&amp;#8217; &lt;a href="http://rubyhoedown2008.confreaks.com/05-bryan-liles-lightning-talk-tatft-test-all-the-f-in-time.html"&gt;Test All The Fucking Time&lt;/a&gt; video really struck a cord and people have been repeating his motto ever since. He was so kind to send a message to the Brazilian programmers as well, check it out:&lt;/p&gt;


&lt;object width="500" height="375"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4544115&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=4544115&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/4544115"&gt;RailsConf 2009 &amp;#8211; Mensagem de Bryan Liles para Brasileiros&lt;/a&gt; from &lt;a href="http://vimeo.com/akitaonrails"&gt;Fabio Akita&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;

	&lt;p&gt;O vídeo do Bryan Liles, &lt;a href="http://rubyhoedown2008.confreaks.com/05-bryan-liles-lightning-talk-tatft-test-all-the-f-in-time.html"&gt;Test All The Fucking Time&lt;/a&gt; realmente tocou num ponto importante e as pessoas vem repetindo seu lema desde então. Ele foi muito legal em enviar uma mensagem aos programadores Brasileiros, dêem uma olhada ;-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2-BmhJzsjVEOMhRV2aTQljla0Yo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2-BmhJzsjVEOMhRV2aTQljla0Yo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2-BmhJzsjVEOMhRV2aTQljla0Yo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2-BmhJzsjVEOMhRV2aTQljla0Yo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Kdl8kLCHIlE:-9zSpr6CEsU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Kdl8kLCHIlE:-9zSpr6CEsU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Kdl8kLCHIlE:-9zSpr6CEsU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=Kdl8kLCHIlE:-9zSpr6CEsU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Kdl8kLCHIlE:-9zSpr6CEsU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=Kdl8kLCHIlE:-9zSpr6CEsU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Kdl8kLCHIlE:-9zSpr6CEsU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/Kdl8kLCHIlE" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/05/08/railsconf-09-message-from-bryan-liles-tatft-to-brazil</feedburner:origLink></item><item><title>RailsConf 09 - Exclusive Audio Interviews</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/-kzrOrLxCAs/railsconf-09-exclusive-audio-interviews</link><pubDate>Fri, 08 May 2009 04:07:01 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5159</guid><description>&lt;p&gt;I&amp;#8217;ve had a great time interviewing several interesting Rubysts and Railers on their new projects. I think you will like to hear what they have to say.&lt;/p&gt;


	&lt;p&gt;My first guest was Joshua Timberman. He is a fervorous evangelist for the &lt;a href="http://www.infoq.com/news/2009/01/chef-management-tool-announced"&gt;Chef&lt;/a&gt; project. Chef could be seen as a more modern Puppet, which by itself, already is a modern systems configuration manager. Chef is composed of several pieces, cookbooks and details that Joshua explains in his interview.&lt;/p&gt;


&lt;object type="application/x-shockwave-flash" data="http://files.akitaonrails.com/player_mp3.swf" width="200" height="20"&gt;
    &lt;param name="movie" value="http://files.akitaonrails.com/player_mp3.swf" /&gt;
    &lt;param name="bgcolor" value="#ffffff" /&gt;
    &lt;param name="FlashVars" value="mp3=http%3A//files.akitaonrails.com/Joshua_Timberman_Chef.mp3" /&gt;
&lt;/object&gt;

	&lt;p&gt;&lt;a href="http://files.akitaonrails.com/Joshua_Timberman_Chef.mp3"&gt;Download&lt;/a&gt; (22:24)&lt;/p&gt;


	&lt;p&gt;One project that I am particularly very interested is &lt;a href="http://spreecommerce.com/"&gt;Spree&lt;/a&gt;. Sean Schofield started this Rails based e-commerce system to support developers that had to reinvent the wheel all the time, and e-commerce systems are notoriously not easy to do. Spree is a fairly complete project, with many nice features, including integration with ActiveMerchant, shipping support, tax categories and so on. I helped a bit doing the Brazilian Portuguese internationalization of the project as well. Highly recommended.&lt;/p&gt;


&lt;object type="application/x-shockwave-flash" data="http://files.akitaonrails.com/player_mp3.swf" width="200" height="20"&gt;
    &lt;param name="movie" value="http://files.akitaonrails.com/player_mp3.swf" /&gt;
    &lt;param name="bgcolor" value="#ffffff" /&gt;
    &lt;param name="FlashVars" value="mp3=http%3A//files.akitaonrails.com/Sean_Schofield_Spree.mp3" /&gt;
&lt;/object&gt;

	&lt;p&gt;&lt;a href="http://files.akitaonrails.com/Sean_Schofield_Spree.mp3"&gt;Download&lt;/a&gt; (22:15)&lt;/p&gt;


	&lt;p&gt;By now I think we all know New Relic, Fiveruns and Rails monitoring systems. But there are more competition coming up, from the guys of Highgroove Studios we have &lt;a href="http://scoutapp.com/"&gt;Scout&lt;/a&gt; a non-nonsense approach to Rails monitoring and data analysis. They are willing to go an step further: instead of just presenting raw data as reports, they are analyzing this data and giving you relevant recommendations so you can further optimize your application. And more than that: they are highly competitive in price. And the client agent that gathers data and send to their servers is open source and extensible through plugins, so you can add even more to what they already offer. Definitely worth checking out:&lt;/p&gt;


&lt;object type="application/x-shockwave-flash" data="http://files.akitaonrails.com/player_mp3.swf" width="200" height="20"&gt;
    &lt;param name="movie" value="http://files.akitaonrails.com/player_mp3.swf" /&gt;
    &lt;param name="bgcolor" value="#ffffff" /&gt;
    &lt;param name="FlashVars" value="mp3=http%3A//files.akitaonrails.com/Matt_Todd_Highgroove_Studios.mp3" /&gt;
&lt;/object&gt;

	&lt;p&gt;&lt;a href="http://files.akitaonrails.com/Matt_Todd_Highgroove_Studios.mp3"&gt;Download&lt;/a&gt; (13:43)&lt;/p&gt;


	&lt;p&gt;At RailsConf 2008, last year, I interviewed &lt;a href="http://www.akitaonrails.com/2008/6/5/railsconf-2008-brazil-rails-podcast-special-edition"&gt;James Lindenbaum&lt;/a&gt; about Heroku. They were still in beta at that time. Now they finally released a commercial version with lots of new features. I was particularly surprised to find Ryan Tomayko at their booth, working for Heroku. I think Heroku really nailed easy deployment for Ruby applications over Amazon &lt;span class="caps"&gt;EC2&lt;/span&gt;. If you don&amp;#8217;t want to worry about infrastructure, Heroku may be the answer:&lt;/p&gt;


&lt;object type="application/x-shockwave-flash" data="http://files.akitaonrails.com/player_mp3.swf" width="200" height="20"&gt;
    &lt;param name="movie" value="http://files.akitaonrails.com/player_mp3.swf" /&gt;
    &lt;param name="bgcolor" value="#ffffff" /&gt;
    &lt;param name="FlashVars" value="mp3=http%3A//files.akitaonrails.com/Ryan_Tomayko_Heroku.mp3" /&gt;
&lt;/object&gt;

	&lt;p&gt;&lt;a href="http://files.akitaonrails.com/Ryan_Tomayko_Heroku.mp3"&gt;Download&lt;/a&gt; (33:49)&lt;/p&gt;


	&lt;p&gt;Again, last year, everybody was blown away by the announcement of Gemstone &amp;#8211; traditional Smalltalk software-house &amp;#8211; showing a very preview version of Ruby actually running over a very mature Smalltalk VM. This is the &lt;a href="http://maglev.gemstone.com/"&gt;Maglev&lt;/a&gt; project. Since then the development has been quite secretive. But they are finally disclosing more and more information on how the project is going. This year, they were able to show a small Sinatra application already running &amp;#8211; albeit, with some tweaks. I think they are evolving very fast. Ruby is notoriously not an easy language to implement and Maglev will be incredible when released. In this interview we have Monty Williams, Peter McLain and Michael Latta discussing about the current development and future roadmap.&lt;/p&gt;


&lt;object type="application/x-shockwave-flash" data="http://files.akitaonrails.com/player_mp3.swf" width="200" height="20"&gt;
    &lt;param name="movie" value="http://files.akitaonrails.com/player_mp3.swf" /&gt;
    &lt;param name="bgcolor" value="#ffffff" /&gt;
    &lt;param name="FlashVars" value="mp3=http%3A//files.akitaonrails.com/Maglev_Team.mp3" /&gt;
&lt;/object&gt;

	&lt;p&gt;&lt;a href="http://files.akitaonrails.com/Maglev_Team.mp3"&gt;Download&lt;/a&gt; (36:42)&lt;/p&gt;


	&lt;p&gt;Finally, I think everybody knows Ilya Grigorik by now, from &lt;a href="http://www.igvita.com"&gt;igvita.com&lt;/a&gt;. He received last year&amp;#8217;s Ruby Hero Awards, and it was well deserved. He is one of the few developers that can tackle very advanced subjects in a way that anyone can understand. He started a new company recently and they have a very very interesting product called &lt;a href="http://www.postrank.com"&gt;PostRank&lt;/a&gt;. The overall idea is fairly simple: they went a step further over Google&amp;#8217;s own PageRank system. Instead of just considering link tracebacks, they now weigh in social network behavior. For example, a single Digg page traces back to a website with just one link. But this same page at Digg can have something like hundreds of comments, or &amp;#8220;engagements&amp;#8221; as Ilya calls it. This gives a totally different weigh to this traceback instead of just a simple link. So companies are starting to pay attention to social networks such as Digg, Reddit, Twitter and others and now Ilya comes up with the tool to deliver them the necessary metrics. I highly recommend you to test-drive this site, I think you will be impressed.&lt;/p&gt;


&lt;object type="application/x-shockwave-flash" data="http://files.akitaonrails.com/player_mp3.swf" width="200" height="20"&gt;
    &lt;param name="movie" value="http://files.akitaonrails.com/player_mp3.swf" /&gt;
    &lt;param name="bgcolor" value="#ffffff" /&gt;
    &lt;param name="FlashVars" value="mp3=http%3A//files.akitaonrails.com/Ilya_Grigorik_PostRank.com.mp3" /&gt;
&lt;/object&gt;

	&lt;p&gt;&lt;a href="http://files.akitaonrails.com/Ilya_Grigorik_PostRank.com.mp3"&gt;Download&lt;/a&gt; (21:43)&lt;/p&gt;


	&lt;p&gt;And this wraps up my series of interviews at RailsConf 2009. I wish I had more time to interview more people. There were very insightful and smart developers there, and I would have to &lt;em&gt;git clone&lt;/em&gt; myself many times to be able to talk to all of them. I hope you enjoy this set of interviews.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rREs08fptgrpxU5dbGbcVlRtlZw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rREs08fptgrpxU5dbGbcVlRtlZw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rREs08fptgrpxU5dbGbcVlRtlZw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rREs08fptgrpxU5dbGbcVlRtlZw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=-kzrOrLxCAs:rAcaIlwyw3s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=-kzrOrLxCAs:rAcaIlwyw3s:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=-kzrOrLxCAs:rAcaIlwyw3s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=-kzrOrLxCAs:rAcaIlwyw3s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=-kzrOrLxCAs:rAcaIlwyw3s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=-kzrOrLxCAs:rAcaIlwyw3s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=-kzrOrLxCAs:rAcaIlwyw3s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/-kzrOrLxCAs" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/05/08/railsconf-09-exclusive-audio-interviews</feedburner:origLink></item><item><title>RailsConf 09 - Message from Peter Cooper to Ruby Inside Brazil</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/0YPj1_6Z0Xs/railsconf-09-message-from-peter-cooper-to-ruby-inside-brazil</link><pubDate>Fri, 08 May 2009 03:11:19 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5157</guid><description>&lt;p&gt;Maybe not everybody knows it but the well known Ruby Inside website now has a &lt;a href="http://www.rubyinside.com.br"&gt;new branch in Brazil&lt;/a&gt;. It was recently released and we have a bunch of highly motivated Railers that are doing a great work posting everything that is news in the Ruby and Rails world both in Brazil and in other countries. Check it out Peter Cooper&amp;#8217;s take on this:&lt;/p&gt;


&lt;object width="500" height="375"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4540305&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=4540305&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/4540305"&gt;RailsConf 2009 &amp;#8211; Peter Cooper&lt;/a&gt; from &lt;a href="http://vimeo.com/akitaonrails"&gt;Fabio Akita&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;

	&lt;p&gt;Talvez nem todos saibam, but o bem conhecido site Ruby Inside agora tem uma &lt;a href="http://www.rubyinside.com.br"&gt;nova filial no Brasil&lt;/a&gt;. Eles iniciaram recentemente e tem uma equipe de Railers muito motivados que estão fazendo um grande trabalho publicando notícias do mundo Ruby e Rails tanto do Brasil quanto de outros países. Dêem uma olhada na opinião do Peter Cooper sobre isso.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Iv_c41FDnmUZZs17tH0eCbr1J58/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Iv_c41FDnmUZZs17tH0eCbr1J58/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Iv_c41FDnmUZZs17tH0eCbr1J58/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Iv_c41FDnmUZZs17tH0eCbr1J58/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=0YPj1_6Z0Xs:ujL3-QNqyTw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=0YPj1_6Z0Xs:ujL3-QNqyTw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=0YPj1_6Z0Xs:ujL3-QNqyTw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=0YPj1_6Z0Xs:ujL3-QNqyTw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=0YPj1_6Z0Xs:ujL3-QNqyTw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=0YPj1_6Z0Xs:ujL3-QNqyTw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=0YPj1_6Z0Xs:ujL3-QNqyTw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/0YPj1_6Z0Xs" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/05/08/railsconf-09-message-from-peter-cooper-to-ruby-inside-brazil</feedburner:origLink></item></channel></rss>
