<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Desenvolvimento &#193;gil - Blog da Improve It: O desenvolvimento do Just-remind.us</title>
    <link>http://blog.improveit.com.br/articles/2008/04/17/o-desenvolvimento-do-just-remind-us</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>O desenvolvimento do Just-remind.us</title>
      <description>&lt;p&gt;Enquanto estou de castigo aqui em S&#227;o Paulo, aguardando o v&#244;o de conex&#227;o que me levar&#225; ao FISL, achei que seria uma boa comentar um pouco sobre o desenvolvimento do &lt;a href="http://just-remind.us"&gt;Just-remind.us&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A id&#233;ia original era fazer um "projetinho" de uma semana. Mas, um "projetinho" nunca &#233; um projetinho, est&#227;o, acabamos gastando tr&#234;s semanas. A equipe de desenvolvimento era composta por tr&#234;s pessoas: &lt;a href="http://www.improveit.com.br/tapajos"&gt;Tapaj&#243;s&lt;/a&gt; e &lt;a href="http://www.improveit.com.br/vinicius"&gt;eu&lt;/a&gt; na programa&#231;&#227;o, e o &lt;a href="http://www.improveit.com.br/leandro"&gt;Leandro&lt;/a&gt; no design. &lt;a href="http://www.improveit.com.br/vinicius"&gt;Eu&lt;/a&gt; e o &lt;a href="http://www.improveit.com.br/leandro"&gt;Leandro&lt;/a&gt; trabalhamos full-time, quatro dias por semana, enquanto o &lt;a href="http://www.improveit.com.br/tapajos"&gt;Tapa&lt;/a&gt; foi part-time.&lt;/p&gt;

&lt;p&gt;O prot&#243;tipo b&#225;sico da aplica&#231;&#227;o, com a tela dos cart&#245;es e o formul&#225;rio de edi&#231;&#227;o, ficou funcional ao final do primeiro dia. Afinal, o sistema n&#227;o poderia ser mais simples. Ent&#227;o, com um pouquinho mais de trabalho, poder&#237;amos ter colocado o sistema no ar em dois ou tr&#234;s dias certo? Depende. Quer&#237;amos passar um temp&#227;o corrigindo bugs ap&#243;s o deploy, ou a id&#233;ia seria terminar este projeto e come&#231;ar outro sem se preocupar com bugs no &lt;a href="http://just-remind.us"&gt;Just-remind.us&lt;/a&gt;? Definitivamente a gente prefere a segunda op&#231;&#227;o.&lt;/p&gt;

&lt;p&gt;Odeio corrigir bugs e morro de vergonha quando encontram um bug em algo que eu fiz. Ent&#227;o, s&#243; h&#225; uma op&#231;&#227;o, &#243;bvia por sinal: testar freneticamente. Mas, parece que tudo que &#233; &#243;bvio tem uma tend&#234;ncia incorrig&#237;vel de ser negligenciado. Mas, n&#227;o aqui.&lt;/p&gt;

&lt;p&gt;N&#243;s fizemos muitos testes no &lt;a href="http://just-remind.us"&gt;Just-remind.us&lt;/a&gt;. Para come&#231;ar a explic&#225;-los, vejam a imagem abaixo:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://blog.improveit.com.br/files/2008-04-17_stats_do_justremindus.gif" alt="Stats do Justremindus"/&gt;&lt;/p&gt;

&lt;p&gt;A primeira parte da imagem mostra o resultado de um rake stats no projeto. Como se pode ver, s&#227;o 548 linhas de c&#243;digo Ruby, contra 1419 linhas de c&#243;digo de Specs, ou seja, 2.6 vezes mais linhas de Specs que linhas de c&#243;digo da aplica&#231;&#227;o. Nos Specs, n&#243;s temos 223 exemplos que cobrem 100% das linhas de c&#243;digo do projeto (segundo o RCov).&lt;/p&gt;

&lt;p&gt;A segunda parte da imagem mostra a execu&#231;&#227;o de um rake stats_with_selenium. Mais, hein? Pois &#233;, n&#243;s usamos o &lt;a href="http://selenium.openqa.org/"&gt;Selenium&lt;/a&gt; exaustivamente para fazer testes funcionais. Na boa, n&#227;o d&#225; para fazer uma aplica&#231;&#227;o web sem usar algo assim. S&#233;rio, n&#227;o d&#225;! Se voc&#234; acha que d&#225;, me desculpe, mas voc&#234; &#233; um fanfarr&#227;o! :p &lt;/p&gt;

&lt;p&gt;Uma coisa que sempre me incomodou no rake stats &#233; que ele n&#227;o diz nada sobre os HTMLs e o &lt;a href="http://selenium.openqa.org/"&gt;Selenium&lt;/a&gt;. Mas, eles tamb&#233;m representam uma parte significativa do projeto. Ent&#227;o, pedi ao &lt;a href="http://www.improveit.com.br/tapajos"&gt;Tapa&lt;/a&gt; que fizesse uma nova vers&#227;o rake stats que contabilizasse tamb&#233;m o &lt;a href="http://selenium.openqa.org/"&gt;Selenium&lt;/a&gt; e isso &#233; justamente o que est&#225; na segunda parte da figura.&lt;/p&gt;

&lt;p&gt;Note que s&#243; de &lt;a href="http://selenium.openqa.org/"&gt;Selenium&lt;/a&gt; n&#243;s temos 1311 linhas de c&#243;digo. A contagem total agora considera 865 linhas de c&#243;digo da aplica&#231;&#227;o e 2730 linhas de c&#243;digo de teste. Agora, s&#227;o 3.2 vezes mais c&#243;digo de teste que da aplica&#231;&#227;o. Nada mal! O &lt;a href="http://selenium.openqa.org/"&gt;Selenium&lt;/a&gt; executa 1243 valida&#231;&#245;es atrav&#233;s de 58 cen&#225;rios de teste.&lt;/p&gt;

&lt;p&gt;Agora vem a pergunta: faz sentido todo este esfor&#231;o para uma aplica&#231;&#227;o t&#227;o pequena? Essa pergunta est&#225; incorreta, para ser honesto. a pergunta certa &#233;: faz sentido n&#227;o fazer este esfor&#231;o? Minha resposta para esta &#250;ltima &#233;, definitivamente, n&#227;o. &lt;/p&gt;

&lt;p&gt;A quantidade de problemas que n&#243;s detectamos com estes testes e, sobretudo, a gravidade destes problemas, &#233; surpreendente. Mesmo em uma aplica&#231;&#227;o ridiculamente pequena como esta, a quantidade de detalhes &#233; inacredit&#225;vel. Um aspecto que nos preocupou muito era a seguran&#231;a dos dados dos usu&#225;rios. Descobrimos v&#225;rios problemas de seguran&#231;a fazendo os testes. Obviamente corrigimos todos bem antes de colocar o sistema em produ&#231;&#227;o. Agora eu pergunto: e se n&#243;s n&#227;o tiv&#233;ssemos feito os testes? Voc&#234; ficaria feliz de saber que seus dados est&#227;o registrados em um sistema que mais parece um queijo su&#237;&#231;o, de tanto furo de seguran&#231;a que tem?&lt;/p&gt;

&lt;p&gt;Bem, o sistema est&#225; no ar h&#225; dois dias. At&#233; aqui, tivenos, no total, 839 visitantes &#250;nicos, 1044 visitas e 5069 page views. N&#227;o &#233; muito. Mas, &#233; interessante notar que ainda n&#227;o houve nenhum bug reportado. Provavelmente deve existir algum problema ainda, porque a quantidade de detalhes realmente &#233; grande. Mas, at&#233; agora est&#225; tudo bem. Exatamente o que n&#243;s quer&#237;amos que acontecesse. A &#250;nica bobeira que n&#243;s demos (e j&#225; sabemos) foi de design. Ontem &#224; tarde n&#243;s colocamos uma nova vers&#227;o no ar, que tinha um errinho de CCS, bem vis&#237;vel na primeira p&#225;gina. Mas, isso foi corrigido pouco tempo depois. A prop&#243;sito, se voc&#234;s detectarem algum problema, por favor, nos avisem.&lt;/p&gt;

&lt;p&gt;Desenvolver software sem testes n&#227;o &#233; apenas coisa de fanfarr&#227;o. &#201; coisa de irrespons&#225;vel. &#201; imposs&#237;vel uma atividade t&#227;o complexa quanto desenvolver software ser conduzida sem testes automatizados, em uma quantidade absurda. Quer dizer, poss&#237;vel &#233;, mas n&#227;o &#233; aceit&#225;vel. Nem mesmo para um sistema simples como esse. &lt;/p&gt;

&lt;p&gt;Todo mundo diz que n&#227;o tem tempo para testar. Mas, isso &#233; a maior mentira do mundo. Todo mundo acha isso porque conta o tempo errado. O que importa em desenvolvimento de software n&#227;o &#233; o tempo de desenvolvimento, mas sim o tempo de vida da aplica&#231;&#227;o. Ou seja, ao longo do tempo de vida da aplica&#231;&#227;o, quanto tempo voc&#234; vai ter que dedicar a ela? O desenvolvimento original da mesma &#233; apenas uma parcela do problema. Normalmente a parcela maior vem depois, durante todo o restante do tempo de vida do aplicativo. Voc&#234; vai ficar corrigindo bugs nele todo dia, ou vai estar liberado para desenvolver outra coisa?&lt;/p&gt;

&lt;p&gt;A vis&#227;o tradicional de que n&#227;o d&#225; tempo &#233; m&#237;ope. N&#227;o enxerga a grande verdade: o tempo de desenvolvimento &#233; o menor dos problemas!&lt;/p&gt;

&lt;p&gt;Semana que vem, vida nova. Vamos tocar nosso primeiro aplicativo comercial, aquele outro segredo que ainda vai levar um tempo para ser revelado. ;-)&lt;/p&gt;</description>
      <pubDate>Thu, 17 Apr 2008 12:05:13 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:479e75b5-3719-46b5-8f96-8095396ab088</guid>
      <author>Vinicius Manh&#227;es Teles</author>
      <link>http://blog.improveit.com.br/articles/2008/04/17/o-desenvolvimento-do-just-remind-us</link>
      <category>produto</category>
    </item>
    <item>
      <title>"O desenvolvimento do Just-remind.us" by Guilherme Garnier</title>
      <description>&lt;p&gt;Como voc&#234;s fizeram o rake stats&lt;em&gt;with&lt;/em&gt;selenium? Estou tentando fazer algo parecido, mas n&#227;o est&#225; funcionando&lt;/p&gt;</description>
      <pubDate>Tue, 06 May 2008 15:51:40 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:5eb313ae-2a6a-48f1-a86a-7712ce64d407</guid>
      <link>http://blog.improveit.com.br/articles/2008/04/17/o-desenvolvimento-do-just-remind-us#comment-1132</link>
    </item>
    <item>
      <title>"O desenvolvimento do Just-remind.us" by Tiago Albineli Motta</title>
      <description>&lt;p&gt;&#201; bom tamb&#233;m salientar que o benef&#237;cio de se manter testes automatizados &#233; a maior seguran&#231;a que futuras altera&#231;&#245;es n&#227;o quebrar&#227;o antigas funcionalidades. Sempre &#233; bom lembrar que a premissa b&#225;sica dos sistemas &#233; que eles crescem.&lt;/p&gt;</description>
      <pubDate>Tue, 29 Apr 2008 13:45:01 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:fc15ea8a-241c-4586-a329-d2307cb1cdab</guid>
      <link>http://blog.improveit.com.br/articles/2008/04/17/o-desenvolvimento-do-just-remind-us#comment-1082</link>
    </item>
    <item>
      <title>"O desenvolvimento do Just-remind.us" by Thiago Bohn</title>
      <description>&lt;p&gt;Me arrepiei no par&#225;grafo: "Todo mundo diz que n&#227;o tem tempo para testar. Mas, isso &#233; a maior mentira do mundo. Todo mundo acha isso porque conta o tempo errado." muito bom!&lt;/p&gt;</description>
      <pubDate>Fri, 18 Apr 2008 09:00:44 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:1464245f-d3b2-4e7c-b272-b1b5fbb1cc5c</guid>
      <link>http://blog.improveit.com.br/articles/2008/04/17/o-desenvolvimento-do-just-remind-us#comment-1058</link>
    </item>
    <item>
      <title>"O desenvolvimento do Just-remind.us" by Leandro</title>
      <description>&lt;p&gt;Alguma chance de voc&#234;s liberarem o c&#243;digo fonte?&lt;/p&gt;</description>
      <pubDate>Thu, 17 Apr 2008 20:42:03 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:08294c6f-2397-4e56-8d03-6a36c072ec02</guid>
      <link>http://blog.improveit.com.br/articles/2008/04/17/o-desenvolvimento-do-just-remind-us#comment-1056</link>
    </item>
    <item>
      <title>"O desenvolvimento do Just-remind.us" by Carlos Augusto</title>
      <description>&lt;p&gt;Ah, seria bom se os grupos tivessem duas senhas (como se fosse um algoritmo de criptografia assimetrica mesmo) onde o dono colocaria a senha do grupo e a senha compartilhada que ele disponibilizaria para os amigos...&lt;/p&gt;</description>
      <pubDate>Thu, 17 Apr 2008 14:52:28 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:2dc7f309-0931-4a63-9b9b-892c39170e05</guid>
      <link>http://blog.improveit.com.br/articles/2008/04/17/o-desenvolvimento-do-just-remind-us#comment-1055</link>
    </item>
    <item>
      <title>"O desenvolvimento do Just-remind.us" by Carlos Augusto</title>
      <description>&lt;p&gt;Fala Vinicius blz?
Um errinho de CSS est&#225; escondendo (talvez 1 px) do logotipo.&lt;/p&gt;

&lt;p&gt;&#233; s&#243; mudar o c&#243;digo abaixo e aumentar 0.1pt. :)
foi o Afonso que detectou logo quando abriu a p&#225;gina hehe :) isso ai&lt;/p&gt;

header h1 img {all.css (line 79)

&lt;p&gt;width:7.8em;
}&lt;/p&gt;</description>
      <pubDate>Thu, 17 Apr 2008 14:19:00 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:1c04ef0d-1522-45b4-b14f-d94857887c5e</guid>
      <link>http://blog.improveit.com.br/articles/2008/04/17/o-desenvolvimento-do-just-remind-us#comment-1054</link>
    </item>
    <item>
      <title>"O desenvolvimento do Just-remind.us" by Rafael S. Souza</title>
      <description>&lt;p&gt;Simplesmente perfeito! Grande artigo, parab&#233;ns!&lt;/p&gt;</description>
      <pubDate>Thu, 17 Apr 2008 13:08:27 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:12a1fc52-9d31-4124-bb16-22cb7efe2650</guid>
      <link>http://blog.improveit.com.br/articles/2008/04/17/o-desenvolvimento-do-just-remind-us#comment-1053</link>
    </item>
  </channel>
</rss>
