<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
  <title>Objetiva Software</title>
  <id>http://objetiva.co</id>
  <updated>2008-06-25T00:00:00Z</updated>
  <author>
    <name />
  </author>
  <feedburner:info uri="_objetiva" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by/2.0/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/AreaCriaes-WebEDesign-Home" /><feedburner:info uri="areacriaes-webedesign-home" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>AreaCriaes-WebEDesign-Home</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
    <title>Nasce Objetiva Software</title>
    <link href="http://feedproxy.google.com/~r/AreaCriaes-WebEDesign-Home/~3/XoLdm73WVf4/" rel="alternate" />
    <id>http://objetiva.co/blog/2011/04/07/nasce-objetiva-software/</id>
    <published>2011-04-07T00:00:00Z</published>
    <updated>2011-04-07T00:00:00Z</updated>
    <author>
      <name />
    </author>
    <summary type="html">&lt;p&gt;No começo de 2007 eu (Daniel) fiz a escolha de trabalhar por conta própria ao invés de continuar na estabilidade de um emprego. Desde o inicio, minha intenção era poder experimentar mercados diferentes, conhecer novas tecnologias, aprendizado e também retornos financeiros&amp;hellip;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;No começo de 2007 eu (Daniel) fiz a escolha de trabalhar por conta própria ao invés de continuar na estabilidade de um emprego. Desde o inicio, minha intenção era poder experimentar mercados diferentes, conhecer novas tecnologias, aprendizado e também retornos financeiros.&lt;/p&gt;

&lt;p&gt;Assim comecei a Área Criações em sociedade com a Designer Tânia Azze. A empresa correu muito bem durante os anos que trabalhamos juntos e sempre fizemos desenvolvimento de sotware em paralelo com design em geral.&lt;/p&gt;

&lt;p&gt;No entanto, apesar de também trabalhar como designer em nossos projetos o meu maior interesse sempre foi a área digital e no campo de design de interface com foco em desenvolvimento de software.&lt;/p&gt;

&lt;p&gt;Tenho me especializado o máximo possível nessas áreas nos últimos anos e por essa razão, eu e minha antiga sócia, optamos por interromper as atividades da Área Criações e cada um voltar suas atenções para seus campos de maior interesse.&lt;/p&gt;

&lt;h3&gt;Objetiva Software&lt;/h3&gt;

&lt;p&gt;Eu ainda contínuo com os mesmos objetivos de 2007 e ainda não pretendo trabalhar como contratado em um futuro próximo.&lt;/p&gt;

&lt;p&gt;Em 2010 tive a oportunidade de trabalhar novamente com o meu amigo Jeffry Degrande. Um excelente desenvolvedor com bastante experiência em Agile e Ruby, com quem eu já tínhamos trabalhado em projetos no passado e em 2010 fizemos parte da mesma equipe do Rails Rumble.&lt;/p&gt;

&lt;p&gt;A partir dos bons resultados dos nossos trabalhos em equipe e dos interesses semelhantes, eu e Jeffry, resolvemos juntar nossa vontade em criar software de qualidade e fundamos uma nova empresa chamada Objetiva Software.&lt;/p&gt;

&lt;p&gt;Nosso foco é unir a experiência que temos em desenvolvimento de software e design de interfaces para criar produtos que possuam alta qualidade em todos os aspectos, desde o código, testes, infra-estrutura até o posicionamento dos elementos na tela e aparência do sistema.&lt;/p&gt;

&lt;p&gt;Seja através da criações de produtos para startup, coaching, treinamento ou desenvolvimento de projetos já existentes, o nosso objetivo é sempre manter os princípios que acreditamos na indústria de software e fazer o melhor trabalho possível.&lt;/p&gt;

&lt;p&gt;A parte boa de tudo isso que apesar de apenas alguns meses de vida, nosso novo negócio tem corrido muito bem e já estamos alocados para vários projetos nos próximos meses, então aguardem algumas novidades em pouco tempo.&lt;/p&gt;

&lt;h3&gt;Nosso blog&lt;/h3&gt;

&lt;p&gt;No antigo site da Área Criações, eu era o responsável pelo blog, que movimentei com assuntos técnicos desde 2007. Muito do material que escrevi ainda é válido, principalmente os posts relacionados a Ruby e desenvolvimento em geral.&lt;/p&gt;

&lt;p&gt;Por essa razão nós resolvemos importar alguns dos posts que condizem mais com as atividade da Objetiva e evitar a perda de todo esse material que ainda possui bastante utilidade. Nos próximos dias o site da Área Criações sairá do ar mas grande parte do material já está importado para o novo blog da Objetiva.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=fsuyinmmEjA:bmiIHfJ4y8M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=fsuyinmmEjA:bmiIHfJ4y8M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/_objetiva/~4/fsuyinmmEjA" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=XoLdm73WVf4:fsuyinmmEjA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=XoLdm73WVf4:fsuyinmmEjA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=XoLdm73WVf4:fsuyinmmEjA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=XoLdm73WVf4:fsuyinmmEjA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=XoLdm73WVf4:fsuyinmmEjA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=XoLdm73WVf4:fsuyinmmEjA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=XoLdm73WVf4:fsuyinmmEjA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=XoLdm73WVf4:fsuyinmmEjA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://objetiva.co/blog/2011/04/07/nasce-objetiva-software/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/_objetiva/~3/fsuyinmmEjA/</feedburner:origLink></entry>
  <entry>
    <title>Novos cursos na Egenial</title>
    <link href="http://feedproxy.google.com/~r/AreaCriaes-WebEDesign-Home/~3/eSjUlHYlSYw/" rel="alternate" />
    <id>http://objetiva.co/blog/2011/03/10/novos-cursos-na-egenial/</id>
    <published>2011-03-10T00:00:00Z</published>
    <updated>2011-03-10T00:00:00Z</updated>
    <author>
      <name />
    </author>
    <summary type="html">&lt;p&gt;No ano passado nossa parceria com a Egenial se estreitou um pouco mais já que a empresa está voltando suas atenções em massa para a comunidade de software Brasileira. Eu (Daniel) acabei sendo convidado para dar uma mão nessa empreitada.&lt;/p&gt;

</summary>
    <content type="html">&lt;p&gt;No ano passado nossa parceria com a Egenial se estreitou um pouco mais já que a empresa está voltando suas atenções em massa para a comunidade de software Brasileira. Eu (Daniel) acabei sendo convidado para dar uma mão nessa empreitada.&lt;/p&gt;




&lt;p&gt;Nos últimos dias tivemos o mega sucesso que foi o RubyMasters, com mais de 270 inscritos e com 12horas de palestra (que também teremos um post a parte). Agora a novidade é que na semana que vem teremos 3 cursos iniciando e as matrículas ainda estão abertas.&lt;/p&gt;




&lt;h3&gt;Ruby on Rails&lt;/h3&gt;




&lt;p&gt;&lt;a href="http://www.egenial.com.br/cursorails"&gt;Ruby on Rails do Básico ao Avançado&lt;/a&gt; comigo como instrutor. Essa é a minha 12 turma na Egenial e a minha 8 só em Ruby/Rails. Ao longo dos últimos anos fui refinando os exemplos deste curso e acho que chegamos no ponto perfeito. São 22 horas de aula onde passamos desde o básico de Ruby e vamos construindo uma aplicativo real em Rails. O aplicativo é tão próximo de um projeto real que eu mesmo uso como referência várias vezes no meu desenvolvimento diário em Rails 3.0.&lt;/p&gt;




&lt;p&gt;Neste curso eu tento cobrir tudo que é fundamental para o cotidiano de um Railer. Veja a grade detalhada no site: &lt;a href="http://www.egenial.com.br/cursorails"&gt;http://www.egenial.com.br/cursorails&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;&lt;span class="caps"&gt;GIT&lt;/span&gt;&lt;/h3&gt;




&lt;p&gt;Git revolucionou o mercado de desenvolvimento opensource e comercial. Chega a ser impossível pensar como era o desenvolvimento com equipe remota ou em projetos opensource antes do &lt;span class="caps"&gt;GIT&lt;/span&gt;. É o tipo de ferramenta que é praticamente impossível contestar seu valor mesmo trabalhando sozinho e sem equipe nenhuma.&lt;/p&gt;




&lt;p&gt;Uma das coisas que mais me motiva em continuar envolvido com a comunidade Rails é que é um local onde as coisas novas sempre acontecem muito rápido e isso foi bem marcante com &lt;span class="caps"&gt;GIT&lt;/span&gt;. Boas práticas surgem e se tornam leis na comunidade Rails e &lt;span class="caps"&gt;GIT&lt;/span&gt; é uma dessas leis.&lt;/p&gt;




&lt;p&gt;Sem exceção, todos os projetos opensource são versionados com &lt;span class="caps"&gt;GIT&lt;/span&gt; e a grande maioria dos projetos privados também. Isso ocorre por uma única razão: &lt;span class="caps"&gt;GIT&lt;/span&gt; é fantástico.&lt;/p&gt;




&lt;p&gt;Uma tecnologia com dezenas de benefícios como sua organização descentralizada incrível para trabalho em equipes, um modelo de armazenamento que reduz drasticamente o tamanho dos repositórios e sua simplicidade que o torna acessível para qualquer pessoa.&lt;/p&gt;




&lt;p&gt;Por essas razão a Egenial tem tentado levantar um curso de &lt;span class="caps"&gt;GIT&lt;/span&gt; realmente prático e aprofundado tem bastante tempo. Finalmente conseguimos. Em Março, Arthur Zapparoli vai ministrar um curso de 16h ensinando desde o básico da ferramenta até os detalhes mais profundos como Cherry Pick, Rebase, Object Model, Bisect, Gitosis e muito mais.&lt;/p&gt;




&lt;p&gt;Essa é a sua chance de dominar o &lt;span class="caps"&gt;GIT&lt;/span&gt;: &lt;a href="http://www.egenial.com.br/git"&gt;http://www.egenial.com.br/git&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;FlashPlataform &amp;#8211; Flex4&lt;/h3&gt;




&lt;p&gt;Outro curso que também começa na semana que vem é o FlashPlataform Flex4. Um curso totalmente reformulado para cobrir as novas ferramentas criadas pela Adobe e o mais legal que o instrutor será Fábio Vedovelli. Figurinha carimbada do mundo Flex e com uma excelente didática.&lt;/p&gt;




&lt;p&gt;Ultimamente tenho participado muito pouco da comunidade Flex o que não indica que ainda não utilizo e utilizarei estas ferramentas se for necessário. É preciso ser pragmático e para muito objetivos Flash/Flex ainda são imbatíveis e são as melhores soluções do mercado.&lt;/p&gt;




&lt;p&gt;Soluções como o próprio TreinaTom ainda são impossíveis de serem implementadas da forma correta sem essas tecnologias. Jogos, interatividade que envolve gráficos 2D/3D de forma compatível com todos os browsers, multimídia, compatibilidade com &lt;span class="caps"&gt;API&lt;/span&gt; de escrita e leitura de arquivos pelo browser, desenvolvimento desktop usando o mesmo código web e muitas outras vantagens que só a Plataforma Flash consegue atender hoje em dia.&lt;/p&gt;




&lt;p&gt;Se você precisa dessas soluções então esse curso é o que faltava para complementar o seu toolkit.&lt;/p&gt;




&lt;p&gt;Não perca tempo e conheça: &lt;a href="http://www.egenial.com.br/flashplatformweb"&gt;http://www.egenial.com.br/flashplatformweb&lt;/a&gt;&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=KcxapuHICzU:Gw5cQ8T-ZAI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=KcxapuHICzU:Gw5cQ8T-ZAI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/_objetiva/~4/KcxapuHICzU" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=eSjUlHYlSYw:KcxapuHICzU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=eSjUlHYlSYw:KcxapuHICzU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=eSjUlHYlSYw:KcxapuHICzU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=eSjUlHYlSYw:KcxapuHICzU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=eSjUlHYlSYw:KcxapuHICzU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=eSjUlHYlSYw:KcxapuHICzU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=eSjUlHYlSYw:KcxapuHICzU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=eSjUlHYlSYw:KcxapuHICzU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://objetiva.co/blog/2011/03/10/novos-cursos-na-egenial/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/_objetiva/~3/KcxapuHICzU/</feedburner:origLink></entry>
  <entry>
    <title>Rubymasters</title>
    <link href="http://feedproxy.google.com/~r/AreaCriaes-WebEDesign-Home/~3/HyTTPFQ0IJ8/" rel="alternate" />
    <id>http://objetiva.co/blog/2011/01/07/rubymasters/</id>
    <published>2011-01-07T00:00:00Z</published>
    <updated>2011-01-07T00:00:00Z</updated>
    <author>
      <name />
    </author>
    <summary type="html">&lt;p&gt;Talvez algumas pessoas não saibam mas no fim ano passado eu assumi uma parceria com a &lt;a href="http://egenial.com.br/"&gt;eGenial&lt;/a&gt; para colaborar mais na parte de cursos da empresa e principalmente ajudar em iniciativas para as comunidades de software (não apenas em Ruby).&lt;/p&gt;

</summary>
    <content type="html">&lt;p&gt;Talvez algumas pessoas não saibam mas no fim ano passado eu assumi uma parceria com a &lt;a href="http://egenial.com.br/"&gt;eGenial&lt;/a&gt; para colaborar mais na parte de cursos da empresa e principalmente ajudar em iniciativas para as comunidades de software (não apenas em Ruby).&lt;/p&gt;


&lt;p&gt;E em 2011 teremos um primeiro semestre bem agitado, abrindo o ano com um evento de alto nível. A &lt;a href="http://egenial.com.br/"&gt;eGenial&lt;/a&gt; está promovendo o &lt;a href="http://rubymastersconf.com/"&gt;RubyMasters&lt;/a&gt; nos dias 25 e 26 através do &lt;a href="http://www.treinatom.com.br/"&gt;Treinatom&lt;/a&gt; (a mesma plataforma usada para os cursos).&lt;/p&gt;


&lt;p&gt;A idéia do evento surgiu a partir dos eventos beneficentes que a empresa realiza todos os anos. Nos eventos Rails For Kids e Flex For Kids toda a renda levantada é repassada para instituições de caridade, o que sempre deu muito certo e vamos continuar realizando estes evento em 2011. Mas também achamos que já é hora de agradecer, de forma simbólica, projetos da comunidade Ruby que são mantidos com tanto profissionalismo e que tornam nosso dia-a-dia bem mais divertido.&lt;/p&gt;


&lt;p&gt;Assim criamos o RubyMasters com o objetivo de compartilhar conhecimento de alto nível e ainda repassar toda a renda levantada com inscrições e apoios para projetos OpenSource da comunidade Ruby.&lt;/p&gt;


&lt;p&gt;Escolhemos dois projetos que são muito importantes para todos: &lt;a href="http://rubyinstaller.org/"&gt;RubyInstaller&lt;/a&gt; e &lt;a href="http://www.modrails.com/"&gt;Phusion Passenger&lt;/a&gt;. Ambos os projetos aceitam doações como forma de incentivo.&lt;/p&gt;


&lt;p&gt;Nós não conseguiríamos fazer com que toda a audiência do evento escrevesse código, documentação e contribuísse ativamente mas conseguimos levantar fundos através das doações como um forma de agradecimento ao trabalho fantástico que essas pessoas fizeram. Então, toda a renda levantada será repassada para os responsáveis pelos projetos, ajudando a custear as necessidades que os projetos venham a ter.&lt;/p&gt;


&lt;p&gt;Os participantes podem escolher quanto querem pagar para assistir as palestras (entre R$35,00 e R$55,00) e após o evento terão acesso as gravações além de concorrer a bolsas de estudo da eGenial e outros brindes do Peepcode e PragProg.&lt;/p&gt;


&lt;p&gt;O evento será executado em dois dias começando as 9:00 e terminando por volta das 16:00 com 12 palestrantes falando dos temas mais atuais do mundo Ruby. Você pode conferir a grade palestras no &lt;a href="http://rubymastersconf.com/"&gt;site do evento&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Estamos contando com a sua participação e também com seu apoio na divulgação. Nesta página do evento você encontra como pode &lt;a href="http://rubymastersconf.com/disclose"&gt;ajudar na divulgação&lt;/a&gt;.&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=6NQQPp7EAfE:g_2IQFqicJI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=6NQQPp7EAfE:g_2IQFqicJI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/_objetiva/~4/6NQQPp7EAfE" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=HyTTPFQ0IJ8:6NQQPp7EAfE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=HyTTPFQ0IJ8:6NQQPp7EAfE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=HyTTPFQ0IJ8:6NQQPp7EAfE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=HyTTPFQ0IJ8:6NQQPp7EAfE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=HyTTPFQ0IJ8:6NQQPp7EAfE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=HyTTPFQ0IJ8:6NQQPp7EAfE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=HyTTPFQ0IJ8:6NQQPp7EAfE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=HyTTPFQ0IJ8:6NQQPp7EAfE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://objetiva.co/blog/2011/01/07/rubymasters/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/_objetiva/~3/6NQQPp7EAfE/</feedburner:origLink></entry>
  <entry>
    <title>Pomodoro Certfied</title>
    <link href="http://feedproxy.google.com/~r/AreaCriaes-WebEDesign-Home/~3/4TWyilf90hw/" rel="alternate" />
    <id>http://objetiva.co/blog/2010/11/18/pomodoro-certfied/</id>
    <published>2010-11-18T00:00:00Z</published>
    <updated>2010-11-18T00:00:00Z</updated>
    <author>
      <name />
    </author>
    <summary type="html">&lt;p&gt;Começou um certo barulho na comunidade de desenvolvedores brasileiro em volta do plano de certificação Pomodoro. Isso não é novidade mas só agora crio um certo barulho&amp;hellip;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;Começou um certo barulho na comunidade de desenvolvedores brasileiro em volta do plano de certificação Pomodoro. Isso não é novidade mas só agora crio um certo barulho.&lt;/p&gt;

&lt;p&gt;Já há a bastante tempo venho usando a metodologia e em todos os casos que uso por completo o benefício é gigante.&lt;/p&gt;

&lt;p&gt;O benefício real do pomodoro não está na idéia ridícula de ter um timer de 25 minutos. O intervalo na verdade pode ser qualquer tempo, contando que você consiga passar esse tempo todo sem distração.&lt;/p&gt;

&lt;p&gt;A grande vantagem está no planejamento e revisão dos seus resultados. A medida que vai trabalhando com Pomodoro, começa a conhecer com mais precisão quantos pontos consegue fazer por semana. Outra vantagem é poder analisar seus resultados e ver porque na semana X você foi mais lento que na semana Y.&lt;/p&gt;

&lt;p&gt;Estas análises tem me ajudado a perceber que trabalho melhor sem música, na parte da manhã e com skype/ichat fechados. Também passei a abrir o email apenas 3 vezes ao dia com base no que aprendi com os meus Pomodoros.&lt;/p&gt;

&lt;p&gt;Na prática, eu não vejo diferença nenhuma de Pomodoro e métodos ágeis. Ou seja, releases menores, feedback, review, foco e etc. No meu ponto de vista as únicas diferenças são que o Pomodoro é aplicável em qualquer coisa, é individual e mais antigos que Agile.&lt;/p&gt;

&lt;p&gt;De fato coisa é bem mais complicada que um timer bobo. Se você trabalha em um escritório com 10 pessoas, como deve proceder para a metodologia continuar tendo benefícios? Como você evita distrações em escritórios? Se você não usou um dia será quer perdeu suas métricas da semana toda? E se um cliente te liga para explicar uma funcionalidade, isso quebra o Pomodoro?&lt;/p&gt;

&lt;p&gt;Essas perguntas só tem boas respostas quando respondidas por quem já usa há bastante tempo. Razão pela qual sempre achei interessante os cursos e material sobre Pomodoro do Francesco Cirillo.&lt;/p&gt;

&lt;p&gt;Na prática eu vejo a aplicação do Pomodoro algo tão discutível como emprego de métodos como Scrum e principalmente Kanban. A diferença é que o foco é no indivíduo.&lt;/p&gt;

&lt;p&gt;Também é importante lembrar que não adianta nenhum método ágil se o membro da equipe, sozinho, não for ágil o bastante para administrar o seu dia e cumprir suas tarefas.&lt;/p&gt;

&lt;p&gt;Quanto a cerfiticação, é claro que sou contra. Mas sou contra por motivos diferentes do que as pessoas tem falado.&lt;/p&gt;

&lt;p&gt;Percebi pessoas dizendo que isso é ridiculo mas no sentido da técnica ser simples de mais para caber algo como uma certificação. Se o raciocínio é este então eu descordo completamente e acho que  faltou bastante pesquisa antes de formar uma opinião qualquer.&lt;/p&gt;

&lt;p&gt;A razão pela qual sou contra a certificação é a mesma que me faz ser contra certificações Scrum, Ruby ou quem sabe, um dia, Kanban. Pelo simples motivo de não garantir nada e de que para ser produtivo uma pessoa pode usar vários métodos, Pomodoro é um deles.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=wP-Zr7HFhug:-XbZJAjuILc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=wP-Zr7HFhug:-XbZJAjuILc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/_objetiva/~4/wP-Zr7HFhug" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=4TWyilf90hw:wP-Zr7HFhug:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=4TWyilf90hw:wP-Zr7HFhug:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=4TWyilf90hw:wP-Zr7HFhug:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=4TWyilf90hw:wP-Zr7HFhug:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=4TWyilf90hw:wP-Zr7HFhug:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=4TWyilf90hw:wP-Zr7HFhug:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=4TWyilf90hw:wP-Zr7HFhug:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=4TWyilf90hw:wP-Zr7HFhug:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://objetiva.co/blog/2010/11/18/pomodoro-certfied/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/_objetiva/~3/wP-Zr7HFhug/</feedburner:origLink></entry>
  <entry>
    <title>Curso online de Imersão Sys Deploy</title>
    <link href="http://feedproxy.google.com/~r/AreaCriaes-WebEDesign-Home/~3/7LIbdEqgP7A/" rel="alternate" />
    <id>http://objetiva.co/blog/2010/11/10/curso-online-de-imerso-sys-deploy/</id>
    <published>2010-11-10T00:00:00Z</published>
    <updated>2010-11-10T00:00:00Z</updated>
    <author>
      <name />
    </author>
    <summary type="html">&lt;p&gt;Desenvolver software e aplicações web é mais do que apenas escrever código. Por isso, a &lt;strong&gt;Locaweb&lt;/strong&gt; e a &lt;strong&gt;e-Genial&lt;/strong&gt; fecharam uma parceria para que você possa aprimorar suas qualificações profissionais.&lt;/p&gt;

</summary>
    <content type="html">&lt;p&gt;Desenvolver software e aplicações web é mais do que apenas escrever código. Por isso, a &lt;strong&gt;Locaweb&lt;/strong&gt; e a &lt;strong&gt;e-Genial&lt;/strong&gt; fecharam uma parceria para que você possa aprimorar suas qualificações profissionais.&lt;/p&gt;




&lt;p&gt;&lt;img src="http://blog.locaweb.com.br/wp-content/uploads/2010/11/egenial_curso_sysdeploy_blog1.png" alt="" /&gt;&lt;/p&gt;


&lt;p&gt;Em mais uma edição do curso Imersão Sys Deploy, você vai aprender o que precisa para se tornar um sys admin: desde configurar um servidor web do zero até colocar uma aplicação Ruby on Rails em produção. Tudo isso através de exemplos práticos, aplicados em um Cloud Server Pro exclusivo por aluno.&lt;/p&gt;

&lt;p&gt;O curso é 100% online. Você aprende e pratica em tempo real, sem sair de casa ou da empresa, em uma sala de aula virtual, que permite total interatividade entre o instrutor e os alunos exatamente como um treinamento presencial.&lt;/p&gt;

&lt;p&gt;Ficou interessado e quer participar? Confira mais detalhes sobre o curso no &lt;a href="http://egenial.com.br/imersaosysdeploy"&gt;site da e-Genial&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Aproveite para seguir a @egenial e a @locaweb no Twitter – você pode ganhar uma inscrição para este curso! Fique ligado nas promoções desta semana.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=vy5fDi7QXAQ:lGbaQqwYEUk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=vy5fDi7QXAQ:lGbaQqwYEUk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/_objetiva/~4/vy5fDi7QXAQ" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=7LIbdEqgP7A:vy5fDi7QXAQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=7LIbdEqgP7A:vy5fDi7QXAQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=7LIbdEqgP7A:vy5fDi7QXAQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=7LIbdEqgP7A:vy5fDi7QXAQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=7LIbdEqgP7A:vy5fDi7QXAQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=7LIbdEqgP7A:vy5fDi7QXAQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=7LIbdEqgP7A:vy5fDi7QXAQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=7LIbdEqgP7A:vy5fDi7QXAQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://objetiva.co/blog/2010/11/10/curso-online-de-imerso-sys-deploy/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/_objetiva/~3/vy5fDi7QXAQ/</feedburner:origLink></entry>
  <entry>
    <title>Dicas para palestras</title>
    <link href="http://feedproxy.google.com/~r/AreaCriaes-WebEDesign-Home/~3/vUGwgWurV14/" rel="alternate" />
    <id>http://objetiva.co/blog/2010/10/31/dicas-para-palestras/</id>
    <published>2010-10-31T00:00:00Z</published>
    <updated>2010-10-31T00:00:00Z</updated>
    <author>
      <name />
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/dicas-para-palestras/1.jpg" alt="" /&gt;&lt;/p&gt;


&lt;p&gt;Nesta semana que passou estive na RubyConf Brasil. Um excelente evento, não tenho nada para reclamar, só tenho elogios para o Fábio Akita e a Locaweb (na verdade 2 palestras me incomodaram mas isso não tem relação com a organização)&amp;hellip;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/dicas-para-palestras/1.jpg" alt="" /&gt;&lt;/p&gt;


&lt;p&gt;Nesta semana que passou estive na RubyConf Brasil. Um excelente evento, não tenho nada para reclamar, só tenho elogios para o Fábio Akita e a Locaweb (na verdade 2 palestras me incomodaram mas isso não tem relação com a organização).&lt;/p&gt;

&lt;p&gt;Apesar do evento ter sido fantástico sempre existem reclamações. E este ano ficaram em dois pontos, wifi e projetores.&lt;/p&gt;

&lt;h3&gt;Reclamando do &lt;span class="caps"&gt;WIFI&lt;/span&gt;&lt;/h3&gt;


&lt;p&gt;A primeira reclamação eu acho totalmente sem sentido já que o único motivo para  ir aos eventos é assistir palestras e conversar com as pessoas. Internet tenho no escritório e para urgências o 3G do meu iPhone atende perfeitamente.&lt;/p&gt;

&lt;p&gt;Não consigo prestar atenção em duas coisas ao mesmo tempo e notebook/ipad durante as palestras me distrai. Por isso já nem levo notebook mais. Então não dou a mínima para internet e sinceramente acho que os eventos já deveriam anunciar que não vai ter internet, assim ninguém reclama.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/dicas-para-palestras/1.jpg" alt="" /&gt;&lt;/p&gt;




&lt;h3&gt;Reclamando dos Projetores&lt;/h3&gt;


&lt;p&gt;Os palestrantes reclamarem dos projetores acho que faz um pouco de sentido, mas só um pouco.&lt;/p&gt;

&lt;p&gt;Seria muito legal a organização deixar tudo regulado, mas qualquer palestrante sabe que organizar um evento é um trabalho colossal e se você quer que sua palestra corra bem não é bom depender de pontas que a organização pode ter deixado passar (isso é totalmente aceitável e esperado).&lt;/p&gt;

&lt;p&gt;Mais uma vez: não culpe a organização pelo projetor, culpe você mesmo. Em um evento o mais importante é ter gente na platéia (quanto mais melhor) e o projetor é uma coisa mínima. Você se propôs a palestrar, então deve ter um plano de contingência para essas situações.&lt;/p&gt;

&lt;p&gt;Acho que nos últimos 3 anos acumulei algumas horas de palestras e também umas 300 horas de aula. O legal (ou nem tanto) é que deu tempo para muita coisa dar errado e algumas darem certo.&lt;/p&gt;

&lt;p&gt;Meu amigo Carlos Eduardo da &lt;a href="http://www.egenial.com.br/"&gt;e-Genial&lt;/a&gt; sabe como a minha primeira aula de Flex em 2007 foi ridícula, um fiasco total (obrigado por não ter me demitido de imediato :).&lt;/p&gt;


&lt;p&gt;Então aprendi algumas coisas que tento seguir em meus cursos/palestras e talvez isso possa ser útil para você também.&lt;/p&gt;

&lt;h3&gt;Palestras/Aulas Online&lt;/h3&gt;


&lt;p&gt;Uma palestra presencial é completamente diferente de uma palestra online.&lt;/p&gt;

&lt;p&gt;Online você tem mais controle do seu ambiente e não depende de microfone e projetor. Assim você pode usar qualquer cor nos seus slides e tudo vai aparecer perfeito (isso se a ferramenta for boa como o &lt;a href="http://treinatom.com.br/"&gt;Treinatom&lt;/a&gt;).&lt;/p&gt;


&lt;p&gt;Por outro lado, em eventos on-line, você tem que falar bem mais e com muito menos pausa que presencialmente, do contrário as pessoas começam a ficar cansadas (nesse caso, é melhor você ficar cansado do que a platéia).&lt;/p&gt;

&lt;p&gt;Não cometa erros online. Um erro online tem uma proporção muito maior e sua credibilidade vai pelo espaço muito mais rápido. Cinco minutos encontrando um bug ao vivo não parece nada, online é uma eternidade.&lt;/p&gt;

&lt;h3&gt;Palestras Presenciais em Eventos&lt;/h3&gt;


&lt;p&gt;Presencial as coisas são bem diferentes e como não é possível ter controle nenhum do ambiente sempre tomo alguns cuidados.&lt;/p&gt;

&lt;p&gt;A primeira coisa é a resolução, raramente encontro projetores com resolução de 1024 ou superior então sempre uso 800x600 nos slides.&lt;/p&gt;

&lt;p&gt;A segunda coisa é a calibragem do monitor. Sempre que plugo meu Mac no projetor vou em System Preferences/Displays/Color escolho o sugerido pelo S.O. (as vezes ajusto manualmente o perfil também).&lt;/p&gt;

&lt;p&gt;A terceira coisa é em relação ao contraste dos slides. Como você não tem controle da iluminação é bom criar seus slides com bastante contraste entre o conteúdo e o fundo.&lt;/p&gt;

&lt;p&gt;Não precisa tirar os efeitos e usar slide branco com texto preto, basta cuidar do contraste. Sempre uso dezenas de transições, efeitos e as vezes desenho meus próprios ícones mas fico atento para que o conteúdo contraste bastante do fundo.&lt;/p&gt;

&lt;p&gt;A quarta coisa que sempre tomo cuidado é com centralização. Nunca espero que o projetor esteja alinhado (nunca está), então coloco tudo centralizado. Se vai ter código coloque-o em um box mais para o centro do slide. A mesma coisa para vídeos, deixe-os centralizados.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/dicas-para-palestras/2.png" alt="" /&gt;&lt;/p&gt;




&lt;p&gt;Use fontes grandes no seu código, com fundo branco e texto com muito contraste. Eu também uso o &lt;a href="http://github.com/drnic/copy-as-rtf-tmbundle"&gt;Copy as &lt;span class="caps"&gt;RTF&lt;/span&gt;&lt;/a&gt; no Textmate para colar código no &lt;a href="http://www.apple.com/iwork/keynote/"&gt;Keynote&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Outra coisa é que não importa o que aconteça, em um evento grande eu não passo do tempo de forma alguma. Acho uma falta de respeito um palestrante atrasar o evento todo porque não preparou sua palestra direito (a final de contas foi você aceitou o convite ou enviou uma proposta).&lt;/p&gt;

&lt;p&gt;Para evitar problemas com tempo eu sempre uso o &amp;ldquo;Presenter Display&amp;rdquo; do Keynote do Mac. Nele você vai ver o próximo slide e o tempo gasto (acho isso fundamental).&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/dicas-para-palestras/3.png" alt="" /&gt;&lt;/p&gt;


&lt;p&gt;Caso você plug seu Mac e não apareça &amp;ldquo;Presenter Display&amp;rdquo; basta ir em System Preferences/Displays e &amp;ldquo;des-espelhar&amp;rdquo; os monitores. Se os monitores ficarem trocados bastar arrastar o menu para o que você deseja como primário (como abaixo).&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/dicas-para-palestras/4.png" alt="" /&gt;&lt;/p&gt;




&lt;h3&gt;Live Coding&lt;/h3&gt;


&lt;p&gt;Live Coding é um caso a parte pois é uma fonte gigante de problemas. Parta do princípio que você vai errar tudo ao vivo, mesmo que seja o criador do Rails você vai errar uma demo com ele!&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/dicas-para-palestras/5.jpg" alt="" /&gt;&lt;/p&gt;


&lt;p&gt;Nas aulas online eu sempre tenho um guia para seguir. Em aulas presenciais normalmente levo um papel e coloco em cima da mesa, não tem nada de errado em levar uma cola. Mas não escreva uma bíblia na cola pois você se &amp;ldquo;ferrar&amp;rdquo; da mesma forma, a cola é para saber a ordem do que fazer e não para aprender as coisas ao vivo.&lt;/p&gt;

&lt;p&gt;Abaixo a minha cola para o curso de 6h do Fisl:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/dicas-para-palestras/6.png" alt="" /&gt;&lt;/p&gt;


&lt;p&gt;Se for uma palestra de 50 minutos então não faça live-coding, prefira um vídeo. Você não vai querer atrasar o resto da sua palestra se demorar em algum ponto do código.&lt;/p&gt;

&lt;p&gt;Para gravar os vídeos eu uso o &lt;a href="http://www.telestream.net/screen-flow/overview.htm"&gt;ScreenFlow&lt;/a&gt; e gravo com voz. Depois removo a voz e refaço o vídeo algumas vezes, dessa forma vou saber exatamente a ordem das coisas no vídeo.&lt;/p&gt;


&lt;p&gt;Caso você não tenha como gravar um vídeo então treine o que será mostrado várias vezes. Não tem nada mais frustrante do que cometer um erro para um auditório que não te conhece.&lt;/p&gt;

&lt;p&gt;Palestras são diferentes de aulas e a por padrão a platéia é totalmente cética com você e com o seu tema. Você precisa ser convincente, se passar um bug e não conseguir resolver (rápido) vai pairar aquele pensamento de &amp;ldquo;hehehe, se F***eu&amp;rdquo; ou &amp;ldquo;iiih, isso não é lá grandes coisas&amp;rdquo;.&lt;/p&gt;

&lt;p&gt;Outra coisa que é muito importante em live-coding é o tema do seu editor, como eu já disse anteriormente. Use sempre fundo branco mas caso você tenha feito um vídeo e mesmo com fundo branco e fonte grande não tiver dado certo tente inverter as cores ao vivo usando Ctrl+Option+Command+8.&lt;/p&gt;

&lt;h3&gt;Síndrome da Faculdade&lt;/h3&gt;


&lt;p&gt;Em computação não tem nada mais comum do que pessoas tendo se mostrar inteligentes.&lt;/p&gt;

&lt;p&gt;Ninguém vai assistir uma palestra querendo saber como você é inteligente e esperto. Ninguém quer saber se você sabe 20 linguagens ou sabe &amp;ldquo;zilhões&amp;rdquo; de termos técnicos. Você não tem que se mostrar inteligente para um professor para ganhar nota 10.&lt;/p&gt;

&lt;p&gt;O que é mais agradável e convincente?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nosso MP3 Player vem com 2gb de RAM e sincroniza com seu computador via USB&lt;/li&gt;
&lt;li&gt;&amp;ldquo;O mais legal do iPod é que sua playlist inteira cabe em seu bolso.&amp;rdquo; &amp;ndash; Steve Jobs 2001&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Não digite &amp;ldquo;zilhões&amp;rdquo; de coisas rápido de mais, não faça scroll do código para cima e para baixo, não grite ou fale correndo de mais. Se vai digitar algo ao vivo explique cada coisa que está digitando e com bastante calma, a final de contas você sabe o que está fazendo mas as pessoas não.&lt;/p&gt;

&lt;p&gt;Pessoas assistem uma palestra para aprender algo e não estão nem aí para o que você é. Então foque em ensinar alguma coisa.&lt;/p&gt;

&lt;p&gt;Nessa última RubyConf a palestra do &lt;a href="http://twitter.com/compay"&gt;Norman Clarke&lt;/a&gt; me deixou de queixo caído como ele conseguiu explicar um tema complexo como encoding como se fosse um &amp;#8220;Hello World&amp;#8221;. Parecia que ele tinha conseguido abrir a minha cabeça e colocar as palavras no local correto. Uma aula de como priorizar os ensinamentos.&lt;/p&gt;




&lt;h3&gt;Treine Antes&lt;/h3&gt;


&lt;p&gt;Não importa o quanto você domina o tema, pratique antes. Normalmente ensaio uma palestra de 50 min umas três vezes. Essa é a única forma de saber quanto tempo você gasta com esses slides e como pode enxugar as coisas para ajustar o tempo ao vivo, caso seja necessário.&lt;/p&gt;

&lt;p&gt;Não me venha com o papo de que treinar não dá certo para você. Se Steve Jobs treina seus Keynotes exaustivamente e Michael Jackson ensaiava suas próprias músicas centenas de vezes não caia no erro de achar que você não precisa ensaiar.&lt;/p&gt;

&lt;h3&gt;Conclusão&lt;/h3&gt;


&lt;p&gt;Meu checklist:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Não confie no projetor&lt;/li&gt;
    &lt;li&gt;Não confie na iluminação&lt;/li&gt;
    &lt;li&gt;Não confie em mic&amp;#8217;s (as vezes vai ter que ser no gogó mesmo)&lt;/li&gt;
    &lt;li&gt;Leve sua própria garrafa d&amp;#8217;água (as vezes não tem)&lt;/li&gt;
    &lt;li&gt;Centralize o conteúdo dos slides&lt;/li&gt;
    &lt;li&gt;Use conteúdo bem contrastado do fundo&lt;/li&gt;
    &lt;li&gt;Ajuste o perfil do projetor&lt;/li&gt;
    &lt;li&gt;Use código com fundo branco e fonte grande&lt;/li&gt;
    &lt;li&gt;Prefira vídeos ao invés de live-coding&lt;/li&gt;
    &lt;li&gt;Em cursos, faça muito live-coding mas tenha um rascunho&lt;/li&gt;
    &lt;li&gt;Ensaie várias vezes antes&lt;/li&gt;
    &lt;li&gt;Use o &amp;#8220;Presenter Display&amp;#8221; do Keynote&lt;/li&gt;
    &lt;li&gt;Explique as coisas com calma e fale devagar se forem coisas técnicas&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Eu não sou nenhum expert mas essas coisas tem me ajudado a fazer minhas palestras e aulas não serem um completo fiasco. Talvez possam te ajudar também.&lt;/p&gt;

&lt;p&gt;E da próxima vez não reclame da organização, esteja preparado para tudo dar errado. Se estiver tudo perfeito, ótimo.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=NKc3mDUxV64:FRb6Gy7gOIQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=NKc3mDUxV64:FRb6Gy7gOIQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/_objetiva/~4/NKc3mDUxV64" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=vUGwgWurV14:NKc3mDUxV64:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=vUGwgWurV14:NKc3mDUxV64:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=vUGwgWurV14:NKc3mDUxV64:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=vUGwgWurV14:NKc3mDUxV64:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=vUGwgWurV14:NKc3mDUxV64:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=vUGwgWurV14:NKc3mDUxV64:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=vUGwgWurV14:NKc3mDUxV64:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=vUGwgWurV14:NKc3mDUxV64:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://objetiva.co/blog/2010/10/31/dicas-para-palestras/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/_objetiva/~3/NKc3mDUxV64/</feedburner:origLink></entry>
  <entry>
    <title>Continously Integrating Awesomeness</title>
    <link href="http://feedproxy.google.com/~r/AreaCriaes-WebEDesign-Home/~3/M2eDuPU7A0k/" rel="alternate" />
    <id>http://objetiva.co/blog/2010/10/22/continously-integrating-awesomeness/</id>
    <published>2010-10-22T00:00:00Z</published>
    <updated>2010-10-22T00:00:00Z</updated>
    <author>
      <name />
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="https://dl.dropbox.com/u/2383388/blog/continously-integrating-awesomeness/1.png"/&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Jeffry Degrande&lt;/strong&gt;, my partner in Objetiva and one of my mate&amp;rsquo;s in the Rails Rumble team, wrote a blog post about our experience with continuous integration and automated building&amp;hellip;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;&lt;img src="https://dl.dropbox.com/u/2383388/blog/continously-integrating-awesomeness/1.png"/&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Jeffry Degrande&lt;/strong&gt;, my partner in Objetiva and one of my mate&amp;rsquo;s in the Rails Rumble team, wrote a blog post about our experience with continuous integration and automated building.&lt;/p&gt;

&lt;p&gt;Read it below:&lt;/p&gt;

&lt;h3&gt;Continously Integrating Awesomeness&lt;/h3&gt;

&lt;p&gt;Very early on, during our initial conversations in preparation of 2010&amp;rsquo;s Rails
Rumble our team decided we would use a build system and continuous integration.
I ended up beign the one who was going to set it all up and take care of it
during the competition.&lt;/p&gt;

&lt;p&gt;Initially I was going to use Hudson on a real box. Since we didn&amp;rsquo;t actually
have one available, plan B was to run it in a virtual machine on my mac. That
turned out to slow my mac down too much. Additionally configuring a new project
too longer, even after practicing it a few times than I wanted to spend on it.
So we settled on the excellent CI Joe by Chris Wanstrath.&lt;/p&gt;

&lt;p&gt;CI Joe is beautifully simple: clone the repo, configure cijoe.runner to run &amp;lsquo;rake spec&amp;rsquo;
and point a github web hook to post to your mac. Use tunnlr.com if you&amp;rsquo;re stuck behind
a firewall.&lt;/p&gt;

&lt;p&gt;We also had it posting to campfire which we were running in a browser on a
laptop connected to a huge plasma TV.&lt;/p&gt;

&lt;h3&gt;some stats&lt;/h3&gt;

&lt;p&gt;Just for fun, here are some stats:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I counted 134 builds in the campfire logs&lt;/li&gt;
&lt;li&gt;88 builds were successful; the highest number of builds we went without breaking it was 21&lt;/li&gt;
&lt;li&gt;About halfway through the rumble we went on for a while without fixing the build but we
really broke it about 12 times&lt;/li&gt;
&lt;li&gt;The ssh tunnel kept disconnecting so not all commits triggered a build&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Why fixing the build is your number 1 priority&lt;/h3&gt;

&lt;p&gt;I want to close with a small anecdote.&lt;/p&gt;

&lt;p&gt;My first hours of the rumble were spent adding test coverage to everything
involving users while Daniel was working on the design for the app.  In order
to make those tests pass doing the absolutely simplest thing that could work, I
added something like this to the layout:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;% if user_signed_in? %&amp;gt;
  Welcome back dude
&amp;lt;% end %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That was all I need to make my integration tests pass, knowing that they would break as
soon as Daniel started working on implementing the designs. So I refactored those tests
to remove duplication and moved on.&lt;/p&gt;

&lt;p&gt;Fast forward a couple of hours: Daniel had finished the design and had started work on
the layout. The tests started failing as expected. Yet, I continued work on other things.
We all ignored the build for about 2 hours, adding functionality while 9 specs were failing.&lt;/p&gt;

&lt;p&gt;When I finally sat down and updated the tests to reflect the now implemented layout, the
specs were still failing. In fact, no matter what I tried I couldn&amp;rsquo;t get them to pass. &lt;br/&gt;
The flash message I was expecting and testing for was not even there.  What happened
was that we had introduced a bug at some point and it was hiding behind a hand full of
tests we temporarily allowed to fail.  Had we waited until close to the end to fix
those tests; we probably would not have been able to find &amp;amp; fix that bug.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When the build breaks, fix it immediately&lt;/strong&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=6pQc6OHXxQg:SlhnnFp0Pyo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=6pQc6OHXxQg:SlhnnFp0Pyo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/_objetiva/~4/6pQc6OHXxQg" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=M2eDuPU7A0k:6pQc6OHXxQg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=M2eDuPU7A0k:6pQc6OHXxQg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=M2eDuPU7A0k:6pQc6OHXxQg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=M2eDuPU7A0k:6pQc6OHXxQg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=M2eDuPU7A0k:6pQc6OHXxQg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=M2eDuPU7A0k:6pQc6OHXxQg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=M2eDuPU7A0k:6pQc6OHXxQg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=M2eDuPU7A0k:6pQc6OHXxQg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://objetiva.co/blog/2010/10/22/continously-integrating-awesomeness/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/_objetiva/~3/6pQc6OHXxQg/</feedburner:origLink></entry>
  <entry>
    <title>Retrospectiva Rails Rumble</title>
    <link href="http://feedproxy.google.com/~r/AreaCriaes-WebEDesign-Home/~3/sIuoGsG1iYc/" rel="alternate" />
    <id>http://objetiva.co/blog/2010/10/20/retrospectiva-rails-rumble/</id>
    <published>2010-10-20T00:00:00Z</published>
    <updated>2010-10-20T00:00:00Z</updated>
    <author>
      <name />
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/retrospectiva-rails-rumble/1.png" alt="" /&gt;&lt;/p&gt;


&lt;p&gt;Os envolvidos com Rails já sabem que no domingo passado terminou o Rails Rumble. Uma competição onde equipes de até 4 pessoas criam aplicações&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/retrospectiva-rails-rumble/1.png" alt="" /&gt;&lt;/p&gt;


&lt;p&gt;Os envolvidos com Rails já sabem que no domingo passado terminou o Rails Rumble. Uma competição onde equipes de até 4 pessoas criam aplicações
dentro de um período de de 48h.&lt;/p&gt;

&lt;p&gt;As aplicações são julgadas nos critérios de Inovação, Aparência, Utilidade e Acabamento. E neste ano 300 equipes estão competindo nestes pontos e concorrendo a vários prêmios legais.&lt;/p&gt;

&lt;p&gt;Neste ano eu tive o imenso prazer de participar da competição e vou contar um pouquinho como foi essa experiência.&lt;/p&gt;

&lt;h3&gt;Preparação&lt;/h3&gt;

&lt;p&gt;Montamos nossa equipe bem antes do evento, formada por: &lt;a href="http://daniellopes.me" title="Daniel"&gt;eu&lt;/a&gt;, &lt;a href="http://superfolio.net/joaovitor"&gt;João Vitor&lt;/a&gt;, &lt;a href="http://superfolio.net/jeffrydegrande"&gt;Jeffry Degrande&lt;/a&gt;, &lt;a href="http://superfolio.net/bruno"&gt;Bruno Alves&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/retrospectiva-rails-rumble/2.jpg" alt="" /&gt;&lt;/p&gt;


&lt;p&gt;Logo que todos toparam encarar essa maratona a tarefa foi decidir o que ser feito.&lt;/p&gt;

&lt;p&gt;Como todo a equipe está em Belo Horizonte decidimos que a melhor forma de colocar as coisas na mesa seria através de reuniões presenciais. A primeira delas foi para a decisão do tema.&lt;/p&gt;

&lt;p&gt;Antes da reunião cada pessoa levantou uma série de idéias e no dia fomos descartando o que era complexo de mais ou que não tinha interesse. Ficamos com 3 idéias principais mas no final o que escolhemos foi a idéia do &lt;a href="http://superfolio.net/"&gt;Superfolio&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;A idéia&lt;/h3&gt;


&lt;p&gt;Basicamente a ferramenta é uma forma de resolver a criação de site profissionais. Como assim? Toda pessoa precisa de um curriculum, no entanto eles são trabalhosos de serem feitos, ficam desatualizados e para várias profissões não significam muito (ex.: para um desenvolvedor Ruby seu github pode fazer mais diferença que seu CV).&lt;/p&gt;

&lt;p&gt;Por outro lado todo profissional precisa de um site na internet com informações bem parecidas com a de um CV, no entanto um site abre um mar de possibilidades. Possibilidades como facilidade de atualizações, anexar imagens e principalmente links para redes que possam interessar seus contratantes e clientes (ex.: um desenvolvedor Ruby pode linkar seu Github e seu Blog). Outro ponto que conta muito em qualquer contratação são sua recomendações, este também é um ponto que um site pode resolver e um CV não.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/retrospectiva-rails-rumble/1.png" alt="" /&gt;&lt;/p&gt;


&lt;p&gt;A idéia é bem simples, permitir que qualquer profissional interessado em criar seu site possa acessar um painel administrativo e definir sua biografia, experiências, fotos de projetos, links externos e aceitar recomendações.&lt;/p&gt;

&lt;p&gt;Como a ferramenta é para criação de um site de verdade também é necessário que exista a possibilidade da customização completa do layout, ter um domínio próprio e poder monitorar os acessos (via Google Analytics).&lt;/p&gt;

&lt;p&gt;Ficou curioso? Acesse o meu superfolio e veja tudo que pode ser feito: &lt;a href="http://daniellopes.me/"&gt;http://daniellopes.me/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/retrospectiva-rails-rumble/5.png" alt="" /&gt;&lt;/p&gt;




&lt;h3&gt;Planejando a execução&lt;/h3&gt;


&lt;p&gt;Com a idéia levantada começamos a fazer encontros semanais na &amp;ldquo;Dito Internet&amp;rdquo;:http://www.dito.com.br/.&lt;/p&gt;

&lt;p&gt;Diferente de um projeto de software convencional, desta vez nós sabíamos todas as features e não tínhamos a opção de ir criando o sistema e recebendo feeback. Por essa razão a opção de várias reuniões longas foi tomada ao invés do modelo Agile de reuniões.&lt;/p&gt;

&lt;p&gt;Eu fiquei responsável pela interface, então antes mesmo do evento eu fiz todos os mockups necessários para termos a visão completa da aplicação. Com os mockups detalhamos algumas dezenas de tickets no Pivotal Tracker.&lt;/p&gt;

&lt;h3&gt;Dividindo tarefas&lt;/h3&gt;


&lt;p&gt;Alguns pontos precisavam ser estudados antes do evento já que no dia não poderíamos aprender nada, apenas executar.&lt;/p&gt;

&lt;p&gt;Como dito anteriormente, eu fui o designer então além de todos os mockups também fiz uma grande pesquisa de referência para o layout, pois não haveria tempo para &amp;ldquo;inspiração&amp;rdquo;. Com base nos mockups também foi possível identificar quais pontos do HTML seriam complexos então achei solução para estes pontos e também bibliotecas de JS que deveriam ser usadas (jQuery, facebox, jquery-tools e etc).&lt;/p&gt;

&lt;p&gt;Bruno ficou responsável por configuração dos servers então ele montou uma receita do que precisaria ser seguido no dia do evento. Também contratou uma &lt;span class="caps"&gt;VPS&lt;/span&gt; para os testes e estudou o &lt;a href="http://github.com/danielvlopes/base_app"&gt;Base-App&lt;/a&gt;, que automatiza o deploy.&lt;/p&gt;




&lt;p&gt;Jeffry ficou com a parte de customização do layout e temas, ele optou pelo &lt;a href="http://www.liquidmarkup.org/"&gt;Liquid&lt;/a&gt; e se especializou neste ponto. Também cuidou de estudar a melhor alternativa para integração contínua (escolhido foi o &lt;a href="http://github.com/defunkt/cijoe"&gt;CI Joe&lt;/a&gt;).&lt;/p&gt;




&lt;p&gt;No site também temos uma busca complexa na home que pesquisa por qualquer termo no site dos usuários. Para isso João Vitor ficou a cargo das pesquisas e por final usamos o &lt;a href="http://lucene.apache.org/solr/"&gt;Solr&lt;/a&gt;.&lt;/p&gt;




&lt;h3&gt;Logística&lt;/h3&gt;


&lt;p&gt;Antes do evento também fizemos a organização do que precisaríamos no dia e quais tipos de refeições deveriam ser feitas para evitar o cansaço.&lt;/p&gt;

&lt;p&gt;Para o local do evento o Bruno cedeu o escritório da Dito que conta com uma infra-estrutura muito boa e cercado de restaurantes.&lt;/p&gt;

&lt;p&gt;Foi decidido que as principais refeições seriam feitas nesses restaurantes e ali faríamos as reuniões de retrospectiva dos mini-sprints.&lt;/p&gt;

&lt;p&gt;Tudo foi muito bem planejado e a único complicador foi a falta de um chuveiro na Dito :)&lt;/p&gt;

&lt;h3&gt;Execução&lt;/h3&gt;


&lt;p&gt;Uma coisa já era fato. O prazo é curto mas todos os membros da equipe são profissionais e nós não sacrificaríamos as boas práticas por causa do tempo.&lt;/p&gt;

&lt;p&gt;Ficou definido que usaríamos métodos ágeis, pair pogramming quando necessário, deploy contínuo, integração contínua e principalmente Test Driven Development.&lt;/p&gt;

&lt;p&gt;Jeffry montou um server de integração contínua com CI Joe que ficava ligado ao televisão de 42 polegadas da Dito. Todos os pushs para o github do projeto e builds ficavam visíveis e com um som diferente tocando para cada fato. Assim sabíamos ao certo quando os testes paravam de funcionar.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dl.dropbox.com/u/2383388/blog/retrospectiva-rails-rumble/3.jpg" alt="" /&gt;&lt;/p&gt;




&lt;p&gt;Para deploy usamos o famoso Capistrano. Mas antes do evento fizemos um tunning do meu template de app Rails, o &lt;a href="http://github.com/danielvlopes/base_app"&gt;Base-&lt;span class="caps"&gt;APP&lt;/span&gt;&lt;/a&gt;. Com ele o Capistrano já fica muito bem configurado além de várias outras coisas que melhoramos nele mas que são comuns para qualquer app (o projeto é open-source e &lt;span class="caps"&gt;MIT&lt;/span&gt;). Também foi usado o Hoptoad para monitoração de exceptions em produção.&lt;/p&gt;


&lt;p&gt;Pair programming foi essêncial para achar os erros mas não para planejamento pois tudo já havia sido planejado antes. Também usamos pair programming para evitar o sono.&lt;/p&gt;

&lt;p&gt;Para TDD decidimos pelo Rspec com Steak. Uma boa cobertura é essencial, principalmente em um ambiente tão apertado como o Rumble e testes de aceitação fizeram toda a diferença.&lt;/p&gt;

&lt;h3&gt;Tendência ao amadorismo&lt;/h3&gt;


&lt;p&gt;Nós, seres humanos, gostamos de colocar a culpa do nosso amadorismo em vários fatos mas nunca em nós mesmo. No Rumble a maior desculpa para a &amp;ldquo;tosqueira&amp;rdquo; é o tempo.&lt;/p&gt;

&lt;p&gt;Já fui questionado várias vezes se deve ser feito TDD quando o tempo é apertado e vou compartilhar um pouco dessa experiência no caso mais extremo: Rails Rumble.&lt;/p&gt;

&lt;p&gt;Não seguimos TDD a risca no projeto mas seguimos desenvolvimento com testes o tempo todo.&lt;/p&gt;

&lt;p&gt;Na madrugrada de domingo, já extremamente cansados, estávamos fazendo vários push&amp;rsquo;s para o Github simultaneamente e em um certo momento alguns testes começaram a quebrar.&lt;/p&gt;

&lt;p&gt;Não corrigimos isso na hora e ficamos com 9 testes quebrando. E nesse momento eu estava no HTML e o Bruno e Jeffry implementando novas features não relacionadas aos tests quebrados. Até que o Jeffry largou tudo para consertar os tests. Mas o Jeffry era o único da equipe com conhecimento do Liquid então o Bruno resolveu assumir o &amp;ldquo;pepino&amp;rdquo;.&lt;/p&gt;

&lt;p&gt;Alguns dos testes foram corrigidos com meu HTML mas o mais complicado era um teste que estava falhando por algum motivo estranho que não era simples de achar. No fim, Bruno descobriu uma falha grave no nosso algoritmo de redirecionamentos que permite a usuário ter seu próprio domínio (daniellopes.me ao invés de de superfolio.net/daniel).&lt;/p&gt;

&lt;p&gt;O resumo é que se não tivéssemos testes não teríamos conseguido achar esse bug e se a equipe tivesse deixado o caos tomar conta o sistema teria ido para o ar com este bug grave. Atualmente o sistema está rodando bem e sem notificar nenhuma exception.&lt;/p&gt;

&lt;h3&gt;Lições aprendidas&lt;/h3&gt;


&lt;p&gt;O Rumble serviu para colocar a prova todos os nossos conhecimentos de Ruby e desenvolvimento de software. Eu, pessoalmente, pude tirar várias lições (e acho que meu amigos de equipe vão concordar).&lt;/p&gt;

&lt;h4&gt;Amadorismo&lt;/h4&gt;


&lt;p&gt;Primeiro, o tópico anterior: Falta de tempo não é desculpa para amadorismo.&lt;/p&gt;

&lt;h4&gt;Equipe&lt;/h4&gt;


&lt;p&gt;Outro fator marcante foi a importância da equipe. Mais do que em qualquer projeto, no Rumble, pessoas são mais que processos e manter a comunicação, a amizade e pensamentos na mesma linha em 48h, sem descanso, é um mega desafio.&lt;/p&gt;

&lt;p&gt;No nosso caso a equipe se deu muito bem, como eu nunca tinha visto antes. Apesar de nunca termos trabalhado todos juntos houve uma coesão muito grande.&lt;/p&gt;

&lt;p&gt;Todos os membros trabalharam como loucos e suaram a camisa pelo projeto. Foi a melhor definição de uma equipe auto-gerenciável que já vi (kudos para o Jeffry, Bruno, João e eu mesmo :D ).&lt;/p&gt;

&lt;h4&gt;Descanso&lt;/h4&gt;




&lt;p&gt;Outra lição é que sempre é preciso haver descanso, não importa o quão apertado é o deadline você não pode entrar no modo &amp;#8220;Hero&amp;#8221; (como dito no &lt;a href="http://37signals.com/rework/"&gt;Rework&lt;/a&gt;). O estado onde resolver o problema se torna questão de honra, não importando mais nada.&lt;/p&gt;


&lt;p&gt;Se você fica muito tempo olhando um problema você nunca vai resolve-lo se não descansar um pouco ou pedir ajuda. Toda vez que a coisa agarrava compartilhávamos o problema com a pessoa mais próxima e um olhar externo resolvia rapidamente.&lt;/p&gt;

&lt;h4&gt;Design&lt;/h4&gt;


&lt;p&gt;Outro ponto que ajudou muito foi ter uma equipe de Railer&amp;rsquo;s experts junto com um designer com conhecimento de Git, HTML, JS e testes. Ou seja, alguém focado no frontend mas com visão geral das tarefas. (depois farei outro post sobre o verdadeiro papel do Design em Software)&lt;/p&gt;

&lt;p&gt;Em vários momentos quando eu passava do photoshop para o html nossos testes de aceitação quebravam no protótipo já existente. Conseguir resolver essas coisas sem precisar chamar outro desenvolvedor ajudou muito.&lt;/p&gt;

&lt;p&gt;Também foi importante o designer conseguir &amp;ldquo;baixar&amp;rdquo; e trabalhar corretamente com o código usando o Git, então o fluxo e forma de compartilhamento era igual entre toda a equipe e eficiente.&lt;/p&gt;

&lt;p&gt;A parte do design também guiou as funcionalidades, fazendo que conseguíssemos identificar problemas graves antes de implementarmos.&lt;/p&gt;

&lt;h4&gt;Refactoring&lt;/h4&gt;


&lt;p&gt;Ficou bem claro que o mais importante é colocar funcionando e que depois haverá tempo para ajustes. Pensando dessa forma é muito importante manter um bom suite de testes para que você possa voltar e refatorar depois e manter a confiança do funcionamento.&lt;/p&gt;

&lt;p&gt;O sistema possui vários pontos que podem ser melhor arquitetados mas o que importa é que ele está online e com nosso suite de testes podemos fazer essa refatoração nos pontos que importam.&lt;/p&gt;

&lt;h4&gt;Conclusão final&lt;/h4&gt;


&lt;p&gt;Apesar do cansaço (e da falta de banho :) eu saí do evento extremamente motivado e satisfeito com o resultado. A equipe foi extraordinária e a competição uma experiência que não tem preço.&lt;/p&gt;

&lt;p&gt;Não importa o resultado (bem&amp;hellip; importa um pouco :) a verdade é que conseguimos entregar em 2 dias um CMS relativamente complexo e mantendo a qualidade do trabalho.&lt;/p&gt;

&lt;p&gt;Agora é conseguir os usuários que vão fazer uso do sistema de fato. Passando o efeito que chamo de &amp;#8220;Onda de Sapos&amp;#8221; (usuários curiosos que só entram no sistema para sapear e não para usar mesmo :) acredito que o sistema poderá evoluir para algo bem funcional. O exemplo é o meu próprio site em &lt;a href="http://daniellopes.me/"&gt;daniellopes.me&lt;/a&gt; .&lt;/p&gt;




&lt;p&gt;Também decidimos manter a equipe e fazer encontros frequentes para melhorar o &lt;a href="http://superfolio.net/"&gt;Superfolio&lt;/a&gt; como um time.&lt;/p&gt;


&lt;p&gt;Com certeza ano que vem participarei novamente.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=HhtoCrgMBoY:TwE6yTCpmh4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=HhtoCrgMBoY:TwE6yTCpmh4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/_objetiva/~4/HhtoCrgMBoY" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=sIuoGsG1iYc:HhtoCrgMBoY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=sIuoGsG1iYc:HhtoCrgMBoY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=sIuoGsG1iYc:HhtoCrgMBoY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=sIuoGsG1iYc:HhtoCrgMBoY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=sIuoGsG1iYc:HhtoCrgMBoY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=sIuoGsG1iYc:HhtoCrgMBoY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=sIuoGsG1iYc:HhtoCrgMBoY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=sIuoGsG1iYc:HhtoCrgMBoY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://objetiva.co/blog/2010/10/20/retrospectiva-rails-rumble/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/_objetiva/~3/HhtoCrgMBoY/</feedburner:origLink></entry>
  <entry>
    <title>Pesquisa sobre evento de Ruby</title>
    <link href="http://feedproxy.google.com/~r/AreaCriaes-WebEDesign-Home/~3/ToiWLn4LopM/" rel="alternate" />
    <id>http://objetiva.co/blog/2010/10/12/pesquisa-sobre-evento-de-ruby/</id>
    <published>2010-10-12T00:00:00Z</published>
    <updated>2010-10-12T00:00:00Z</updated>
    <author>
      <name />
    </author>
    <summary type="html">&lt;p&gt;A &lt;a href="http://www.egenial.com.br/"&gt;e-Genial&lt;/a&gt; está movimentando mais um evento on-line, será um mega evento de Ruby e desta vez eu também estou ajudando a dar uma mão na organização.&lt;/p&gt;

</summary>
    <content type="html">&lt;p&gt;A &lt;a href="http://www.egenial.com.br/"&gt;e-Genial&lt;/a&gt; está movimentando mais um evento on-line, será um mega evento de Ruby e desta vez eu também estou ajudando a dar uma mão na organização.&lt;/p&gt;


&lt;p&gt;Para nós acertarmos o máximo possível e agradar o maior número de interessados precisamos da sua ajuda. Por favor respondam o rápido questionário abaixo, os resultados nos ajudaram a definir a grade, horário e etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bit.ly/eventoruby"&gt;http://bit.ly/eventoruby&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;E ajudem a divulgar para o máximo de pessoas também. Obrigado ;&amp;ndash;)&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=B8VB3rQ4h8s:PhpysXTmGXU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=B8VB3rQ4h8s:PhpysXTmGXU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/_objetiva/~4/B8VB3rQ4h8s" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=ToiWLn4LopM:B8VB3rQ4h8s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=ToiWLn4LopM:B8VB3rQ4h8s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=ToiWLn4LopM:B8VB3rQ4h8s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=ToiWLn4LopM:B8VB3rQ4h8s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=ToiWLn4LopM:B8VB3rQ4h8s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=ToiWLn4LopM:B8VB3rQ4h8s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=ToiWLn4LopM:B8VB3rQ4h8s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=ToiWLn4LopM:B8VB3rQ4h8s:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://objetiva.co/blog/2010/10/12/pesquisa-sobre-evento-de-ruby/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/_objetiva/~3/B8VB3rQ4h8s/</feedburner:origLink></entry>
  <entry>
    <title>Agilizando seus testes</title>
    <link href="http://feedproxy.google.com/~r/AreaCriaes-WebEDesign-Home/~3/MnYEz50HqSg/" rel="alternate" />
    <id>http://objetiva.co/blog/2010/09/27/agilizando-seus-testes/</id>
    <published>2010-09-27T00:00:00Z</published>
    <updated>2010-09-27T00:00:00Z</updated>
    <author>
      <name />
    </author>
    <summary type="html">&lt;p&gt;Neste post vou compartilhar um pouco dos meus experimentos para tornar o suite de testes do &lt;a href="cifrascash.com"&gt;Cifras&lt;/a&gt; (meu projeto paralelo)mais rápido.&lt;/p&gt;

&lt;p&gt;No atual estado do serviço eu tenho por volta de 800 testes automatizados usando Rspec 1.3 e Rails 2.3.9.&lt;/p&gt;

&lt;p&gt;Estes testes cobrem o sistema praticamente todo e a são única forma ter a confiança necessária para trabalhar em novos recursos, correções de bugs e etc&amp;hellip;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;Neste post vou compartilhar um pouco dos meus experimentos para tornar o suite de testes do &lt;a href="cifrascash.com"&gt;Cifras&lt;/a&gt; (meu projeto paralelo)mais rápido.&lt;/p&gt;

&lt;p&gt;No atual estado do serviço eu tenho por volta de 800 testes automatizados usando Rspec 1.3 e Rails 2.3.9.&lt;/p&gt;

&lt;p&gt;Estes testes cobrem o sistema praticamente todo e a são única forma ter a confiança necessária para trabalhar em novos recursos, correções de bugs e etc.&lt;/p&gt;

&lt;p&gt;Este número de tests tem crescido consideravelmente desde que comecei a utilizar o Steak para testes de aceitação.&lt;/p&gt;

&lt;p&gt;Testes de aceitação possuem um papel muito importante em certificar que a funcionalidade é aceitável para o cliente pois faz os testes em um nível mais alto.&lt;/p&gt;

&lt;p&gt;No entanto eu me vi em uma situação que já era perceptível mas começou a se tornar insuportável. Meu suite de testes (ainda com 800) estava demorando por volta de 4.5 minutos para ser executado.&lt;/p&gt;

&lt;p&gt;O mais estranho é que 800 testes é muito pouco para poder demorar tanto.&lt;/p&gt;

&lt;h3&gt;Arquitetura de um Saas&lt;/h3&gt;


&lt;p&gt;Cifras é um Saas que envolve pagamentos e múltiplos usuários dentro de um conta. Eu já trabalhei em outros Saas&amp;rsquo;s e todos que envolvem algum tipo de assinatura e vários usuários acabam tendo uma arquitetura muito parecida nos models.&lt;/p&gt;

&lt;p&gt;Normalmente você possui os seguintes models: conta, usuário, assinatura, plano de uso, preferências e o uma associação para proprietário da conta. Além destes 5 models também existe um processo que insere alguns dados iniciais como categorias assim que uma conta é criada.&lt;/p&gt;

&lt;p&gt;Fica claro que qualquer signup vai disparar uma criação em cadeia de uma conta com uma assinatura que possui um proprietário (que é um usuário) e depois preencher as categorias e etc.&lt;/p&gt;

&lt;p&gt;Este processamento é bem rápido mas multiplicado por 800 (ou mais) acaba sendo um problema.&lt;/p&gt;

&lt;p&gt;Eu não quero reduzir o número de models reunindo tudo no model de conta pois acredito que seria uma arquitetura bagunçada. Além do mais, uma alteração que envolve tanto o banco de dados é perigosa.&lt;/p&gt;

&lt;p&gt;Eu não queria tocar em nada do código da aplicação apenas para fazer os testes se tornarem mais rápidos. Do contrário acredito que estaria ocorrendo um inversão das responsabilidades, fazendo os testes guiarem o desenvolvimento mas de uma forma errada.&lt;/p&gt;

&lt;h3&gt;1º passo: Logger&lt;/h3&gt;




&lt;p&gt;Comecei o trabalho de otimização analisando o log de test. Para ter uma visão melhor das queries, adicionei um plugin chamado &lt;a href="http://github.com/ntalbott/query_trace"&gt;query_trace&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;É um plugin bastante antigo mas ainda funciona muito bem. Assim que instalei, fiz algumas anotações de todas as queries que ocorriam com frequência e de onde elas vinham.&lt;/p&gt;

&lt;p&gt;Um fato interessante é que ao instalar o plugin a performance dos meus testes caiu drasticamente. A única razão para isto é que o plugin escrevia toneladas de textos no meu log, ou seja, operações que envolvem IO.&lt;/p&gt;

&lt;p&gt;O que fiz foi anotar as coisas que me interessavam e remover o plugin, no entanto uma otimização que já poderia ser feita era alterar a estratégia de log do ambiente de testes para :info ao invés do padrão.&lt;/p&gt;

&lt;p&gt;Apenas esta alteração tornou meu suite de testes quase 50 segundos mais rápido.&lt;/p&gt;

&lt;p&gt;No arquivo config/environment/test.rb:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  config.log_level = :info
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;2º passo: Evitando consultas&lt;/h3&gt;


&lt;p&gt;Analisando o resultado do query_trace não havia nenhuma consulta extremamente lenta que ocorresse com frequência. Como eu já utilizava bibliotecas como SlimScrooge, Oink e NewRelic eu já tinha encontrado estas queries e resolvido a mais tempo.&lt;/p&gt;

&lt;p&gt;No entanto, uma coisa que muitas vezes não nos lembramos é que qualquer validação de unicidade e associação do Rails vai disparar um consulta. Sim, uma micro consulta que normalmente gasta 0.3 ms e não incomoda em nada em ambiente de produção. Mas nos tests isso pode significar muito.&lt;/p&gt;

&lt;p&gt;Como eu utilizava apenas factories (com FactoryGirl) cada spec acabava precisando de um before ou um let do Rspec que fazia uma chamada a Factory account que consequentemente criava todas outras factories associadas e ainda executava as validações.&lt;/p&gt;

&lt;p&gt;As criações associadas não me incomodavam ainda pois eu estava atacando apenas as validações. A melhor alternativa que encontrei para remover os 0.3ms de cada validação foi usar fixtures.&lt;/p&gt;

&lt;p&gt;Fixtures são carregadas apenas uma vez e não passam pelas validação, então em todos os momentos que eu precisava dos dados base como conta e usuário para fazer os outros testes eu passei a usar fixtures.&lt;/p&gt;

&lt;p&gt;Por exemplo, nos testes de categorias eu precisava criar uma conta antes para associar uma categoria a ela. Este processo rodava em um before o que tornava os testes bem mais lentos, a partir de agora tudo é previamente carregado por fixtures.&lt;/p&gt;

&lt;p&gt;No final, terminei com uma fixture para cada model base e criei helpers para o Rspec. Algo assim:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;def account
  accounts(:apple)
end

def subscription
  subscriptions(:apple)
end

def user
  users(:sjobs)
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;E meus specs passaram a ficar assim:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;let :bank_account do
  Factory :bank_account, :account =&amp;gt; account
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A desvantagem é que novos desenvolvedores terão que entender que o account é um helper já que ele é incluído pelo spec_helper.&lt;/p&gt;

&lt;p&gt;Outra coisa que fiz foi incluir as fixtures base como globais para evitar ter que carrega-las manualmente nos specs.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Spec::Runner.configure do |config|
  config.global_fixtures = :users, :plans, :accounts, :settings ...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Em vários casos o uso de fixtures para a base do sistema eu tive ganhos de mais de 100% em velocidade. Então a partir disso toda a base do sistema (5 models) utilizam fixtures nos models associados e factories em seus próprios models.&lt;/p&gt;

&lt;p&gt;Por exemplo, no model User eu faço os specs usando a Factory user mas a sua conta é trazida de uma fixture e vice versa com os outros models base. No caso de Transações eu carrego usuário, conta, plano, assinatura e preferência através das fixtures enquanto as transações são criadas com factories.&lt;/p&gt;

&lt;h3&gt;3º passo: Evitando chamadas remótas&lt;/h3&gt;


&lt;p&gt;Uma coisa irritante da comunidade Rails são as modinhas. Por um lado é bom, pois as coisas se atualizam MUITO rápido por outro lado fixtures se tornaram diabólicas de um dia para o outro, também ocorreu com attachment_fu por exemplo e etc. O mesmo vale para mocks.&lt;/p&gt;

&lt;p&gt;Se você vai fazer uma integração com uma API, você DEVE usar um mock para não fazer o request, essa é a regra. Eu simplesmente descordo!&lt;/p&gt;

&lt;p&gt;Se sua aplicação depende da API para existir, eu considero totalmente errado fazer um mock disso pois você nunca saberá se por algum motivo a API mudou ou parou de funcionar, ou mudou de endereço.&lt;/p&gt;

&lt;p&gt;Apesar de óbvio que uma API deve ter versões e não mudar dessa forma, nem sempre isso ocorre, principalmente as API&amp;rsquo;s brasileiras.&lt;/p&gt;

&lt;p&gt;Por esta razão os testes do Cifras executavam requests para o sandbox do MOIP, o que fazia eu ter a segurança que o meu código continuava funcionando com a API deles. Eu NÃO iria fazer um mock dessa parte e ponto final.&lt;/p&gt;

&lt;p&gt;Isso causava uma demora de mais ou menos 1 min nos testes. Mas era um preço que eu preferia pagar.&lt;/p&gt;

&lt;p&gt;Com uma dica do &lt;a href="http://twitter.com/jeffrydegrande"&gt;Jeffry Degrande&lt;/a&gt; conheci uma ferramenta que resolve isso. O &lt;a href="https://rubygems.org/gems/ephemeral_response"&gt;ephemeral_response&lt;/a&gt; faz o request para a &lt;span class="caps"&gt;API&lt;/span&gt; e armazena um cache com o retorno por um prazo pré-determinado. Defini que este prazo no Cifras seria de um dia.&lt;/p&gt;


&lt;p&gt;Com este passo reduzi mais um minuto do meu suite.&lt;/p&gt;

&lt;h3&gt;4º passo: Trabalho de formiga&lt;/h3&gt;


&lt;p&gt;O último passo seria de fato passar spec por spec e olhar o que poderia ser otimizado. Em alguns pontos stubs faziam mais sentido, outros apenas um Factory.build ao invés de create tornava o teste mais rápido.&lt;/p&gt;

&lt;p&gt;Outras duas técnicas muito boas é utilizar Factory.attributes_for :meu_model e Factory.stub :meu_model.&lt;/p&gt;

&lt;p&gt;Este passo não reduziu muito o tempo pois eu já utilizava desta forma, mas em alguns pontos eu tinha deixado passar então tive uma pequena melhoria.&lt;/p&gt;

&lt;h3&gt;Conclusão&lt;/h3&gt;




&lt;p&gt;O resultado final foi que de 5min eu consegui reduzir para 1.5 min. Ainda existe espaço para otimizações, mas por enquanto isso deixou de ser prioridade e será melhorado aos poucos seguindo &lt;a href="http://www.informit.com/articles/article.aspx?p=1235624&amp;amp;seqNum=6"&gt;The Boy Scout Rule&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;A minha conclusão é que fixtures são excelente para alguns casos e factories também, então não existe nenhum motivo para este ódio contra fixtures. Você pode usar tanto fixtures quanto factories no mesmo projeto e tirar o melhor dos dois mundos.&lt;/p&gt;

&lt;p&gt;Outra dica é quanto ao log e o ephemeral_response e sempre ficar atento para usar Factory.build e Factory.stub quando possível.&lt;/p&gt;

&lt;p&gt;Se você tiver alguma outra dica, compartilhe nos comentários.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=n0rKw5od6L0:67iA8V_eXU8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/_objetiva?a=n0rKw5od6L0:67iA8V_eXU8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/_objetiva?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/_objetiva/~4/n0rKw5od6L0" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=MnYEz50HqSg:n0rKw5od6L0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=MnYEz50HqSg:n0rKw5od6L0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=MnYEz50HqSg:n0rKw5od6L0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=MnYEz50HqSg:n0rKw5od6L0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?i=MnYEz50HqSg:n0rKw5od6L0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=MnYEz50HqSg:n0rKw5od6L0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=MnYEz50HqSg:n0rKw5od6L0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?a=MnYEz50HqSg:n0rKw5od6L0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AreaCriaes-WebEDesign-Home?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://objetiva.co/blog/2010/09/27/agilizando-seus-testes/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/_objetiva/~3/n0rKw5od6L0/</feedburner:origLink></entry>
</feed>

