<?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: N&#227;o existe canivete su&#237;&#231;o em computa&#231;&#227;o !</title>
    <link>http://blog.improveit.com.br/articles/2007/03/10/canivete-suico</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>N&#227;o existe canivete su&#237;&#231;o em computa&#231;&#227;o !</title>
      <description>&lt;p&gt;&lt;img src="http://blog.improveit.com.br/files/canivete.gif" alt="Canivete Su&#237;&#231;o" title="Canivete Su&#237;&#231;o"/&gt;&lt;/p&gt;

&lt;p&gt;Acho que n&#227;o &#233; novidade para ningu&#233;m que a Improve it est&#225; apostando em &lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt;, mas especificamente no &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;, e que eu abracei essa aposta e cada dia estou mais feliz de trabalhar nessa linguagem e com esse framework. Cada vez que comento sobre o &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt; com meus amigos, ou qualquer outra pessoa, sempre escuto a mesma pergunta, "&#201; t&#227;o poderosa quanto o Java?". Engra&#231;ado que depois que eu discuto por alguns minutos sobre essa pergunta sempre vem a mesma pergunta, "d&#225; para usar para tudo ?".&lt;/p&gt;

&lt;p&gt;Eu sempre explico que n&#227;o acredito que em computa&#231;&#227;o exista um canivete su&#237;&#231;o e que faz parte de um bom profissional saber diferenciar onde se aplicar uma linguagem (ou uma tecnologia) em detrimento a outra. Posso estar enganado, mas o que eu vejo pelo mercado &#233; que as pessoas procuram se enraizar em alguma linguagem achando que todos os seus problemas est&#227;o resolvidos e se esquecem que as vezes podem estar resolvendo um problema mas passando por v&#225;rios outros, ou gastando demais com excesso de complexidade.&lt;/p&gt;

&lt;p&gt;Hoje eu li um &lt;a href="http://thiagoarrais.wordpress.com/2007/03/10/gambiarras-com-nomes/"&gt;post&lt;/a&gt; do &lt;a href="http://thiagoarrais.wordpress.com"&gt;Thiago Arrais&lt;/a&gt; e pelo visto n&#227;o sou o &#250;nico que acha que cada linguagem tem um objetivo e uma aplicabilidade. Gostei muito desse &lt;a href="http://thiagoarrais.wordpress.com/2007/03/10/gambiarras-com-nomes/"&gt;post&lt;/a&gt; pois al&#233;m dele tratar essa forma de pensar ele discute sobre &lt;a href="http://en.wikipedia.org/wiki/Design_pattern_" title="computer_science"&gt;Design Patterns&lt;/a&gt; com uma abordagem super interessante mostrando o qu&#234; realmente s&#227;o os &lt;a href="http://pt.wikipedia.org/wiki/Padr%C3%B5es_de_projeto_de_software"&gt;padr&#245;es de projeto&lt;/a&gt; e como eles acabam se incorporando as novas linguagens.&lt;/p&gt;

&lt;p&gt;A forma como a maioria das pessoas encaram os &lt;a href="http://en.wikipedia.org/wiki/Design_pattern_" title="computer_science"&gt;Design Patterns&lt;/a&gt; &#233; uma coisa que me incomoda profundamente. Frequentemente eu vejo as pessoas escreverem c&#243;digos para usar os &lt;a href="http://en.wikipedia.org/wiki/Design_pattern_" title="computer_science"&gt;Design Patterns&lt;/a&gt; ao inv&#233;s de identificarem no seu c&#243;digo semelhan&#231;as com os padr&#245;es conhecidos e ent&#227;o aplica-los. Pela minha experi&#234;ncia essa pratica, na maioria dos casos, introduz uma complexidade desnecess&#225;ria ao software e tenho certeza que toda complexidade desnecess&#225;ria al&#233;m de ser um desperd&#237;cio &#233; mais c&#243;digo e que mais c&#243;digo implica em mais chances de bugs.&lt;/p&gt;

&lt;p&gt;N&#227;o estou querendo dizer que os padr&#245;es s&#227;o ruins, apenas que devemos usa-los da forma correta e quando forem necess&#225;rios. Participo de v&#225;rias listas e sempre que vejo algu&#233;m perguntar sobre material para aprender uma linguagem v&#225;rias pessoas indicam livros, artigos e sites sobre &lt;a href="http://en.wikipedia.org/wiki/Design_pattern_" title="computer_science"&gt;Design Patterns&lt;/a&gt; e me questiono se a pessoa precisa saber padr&#245;es para poder usar uma linguagem. Ser&#225; que n&#227;o seria mais proveitoso ela descobrir um problema, entender as limita&#231;&#245;es da linguagem e s&#243; ent&#227;o come&#231;ar a aplicar essas gambiarras ?&lt;/p&gt;

&lt;p&gt;Sim, padr&#245;es s&#227;o gambiarras ! Gambiarras com nomes bonitos !&lt;/p&gt;

&lt;p&gt;Comecei a tentar explicar essas minhas afirma&#231;&#245;es e vi que n&#227;o consegui falar nada diferente do que o &lt;a href="http://thiagoarrais.wordpress.com"&gt;Thiago Arrais&lt;/a&gt; falou em seu &lt;a href="http://thiagoarrais.wordpress.com/2007/03/10/gambiarras-com-nomes/"&gt;post&lt;/a&gt; e por isso mesmo vou citar um paragrafo desse post dele.&lt;/p&gt;

&lt;p&gt;"Um padr&#227;o n&#227;o &#233; nada mais que uma gambiarra para contornar fraquezas de algumas linguagens. Estas fraquezas s&#227;o completamente naturais. N&#227;o se espera que toda linguagem consiga dar suporte a todo tipo de constru&#231;&#227;o, mas que seja boa naquilo a que se prop&#245;e. J&#225; que n&#227;o h&#225; como ter suporte direto a tudo que se possa pensar, as pessoas come&#231;am a criar constru&#231;&#245;es padronizadas para cada tipo de trabalho. Estas constru&#231;&#245;es s&#227;o os padr&#245;es."&lt;/p&gt;

&lt;p&gt;O que eu quero explicar para todos que se questionam sobre qual linguagem &#233; melhor do que a outra &#233; que isso n&#227;o existe e que cada linguagem tem seu objetivo e provavelmente surgiu dentro de um contexto diferente das outras. Indo um pouco al&#233;m, que n&#227;o existe linguagem perfeita, isto &#233;, um canivete su&#237;&#231;o.&lt;/p&gt;</description>
      <pubDate>Sat, 10 Mar 2007 20:38:00 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:e0e50553-1e64-4e30-a0c5-9f41e5ec6cf8</guid>
      <author>Marcos Tapaj&#243;s</author>
      <link>http://blog.improveit.com.br/articles/2007/03/10/canivete-suico</link>
      <category>ruby</category>
      <category>rails</category>
      <category>java</category>
    </item>
    <item>
      <title>"N&#227;o existe canivete su&#237;&#231;o em computa&#231;&#227;o !" by Eleudson Queiroz</title>
      <description>&lt;p&gt;Acho que o principal &#233; n&#227;o confundir padr&#227;o com um modelo imut&#225;vel. Estou lendo o Padr&#245;es de Arquitetura... onde o pr&#243;prio Fowler insiste que padr&#245;es s&#227;o para serem adaptados &#224; realidade de cada um e, claro, &#224; sua ferramenta de trabalho, al&#233;m de ter como caracter&#237;stica a origem em casos pr&#225;ticos. Fico feliz em ver no livro algo que utilizamos em sistemas desde 1991, com o velho e bom Clipper.&lt;/p&gt;

&lt;p&gt;Conhecer os padr&#245;es &#233; bom para ser DRY com a l&#243;gica de programa&#231;&#227;o, de modo que n&#227;o fiquemos reinventando a roda, construindo algor&#237;timos ou modelagens que j&#225; est&#227;o validadas, e tamb&#233;m, como enfoca muito o Fowler e o GoF, melhorar a comunica&#231;&#227;o na equipe.&lt;/p&gt;</description>
      <pubDate>Tue, 03 Jun 2008 12:38:51 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:f0cd7239-432c-4efd-a991-1002fa7e114b</guid>
      <link>http://blog.improveit.com.br/articles/2007/03/10/canivete-suico#comment-1206</link>
    </item>
    <item>
      <title>"N&#227;o existe canivete su&#237;&#231;o em computa&#231;&#227;o !" by Marcelo Alvim</title>
      <description>&lt;p&gt;Concordo plenamente com o que voc&#234; disse sobre o efeito dos nomes no inconsciente.&lt;/p&gt;

&lt;p&gt;E no caso dos design patterns, isso &#233; um problema ainda maior em portugu&#234;s. Em ingl&#234;s, "pattern" e "standard" s&#227;o duas palavras completamente diferentes e dissociadas, enquanto em portugu&#234;s as duas s&#227;o traduzidas para "padr&#227;o"!&lt;/p&gt;

&lt;p&gt;Na minha opini&#227;o, isso &#233; mais um dos fatores que contribu&#237;ram para o uso errado deles na nossa ind&#250;stria. N&#227;o que eles n&#227;o sejam usados erradamente nos pa&#237;ses de l&#237;ngua inglesa, claro...&lt;/p&gt;

&lt;p&gt;Eu sempre fui a favor de usar os termos em portugu&#234;s quando eles existem e comunicam a mesma coisa. Por&#233;m, neste caso, acho que a tradu&#231;&#227;o mais atrapalhou do que ajudou.&lt;/p&gt;</description>
      <pubDate>Wed, 14 Mar 2007 16:26:06 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:c878b374-2515-4893-8a5e-a0c853da3342</guid>
      <link>http://blog.improveit.com.br/articles/2007/03/10/canivete-suico#comment-282</link>
    </item>
    <item>
      <title>"N&#227;o existe canivete su&#237;&#231;o em computa&#231;&#227;o !" by Walter Cruz</title>
      <description>&lt;p&gt;Esse texto do Thiago anda dando o que falar :)&lt;/p&gt;

&lt;p&gt;O fato &#233; que dar nome a uma coisa tem um poder imenso sobre o inconsciente do homem. Comecei a aprender os Design Patterns a pouco tempo, mas estou procurando inverter essa corrida de come&#231;ar pelo design pattern e acabar com ele no meu projeto para come&#231;ar pelo meu projeto, e SE aplic&#225;vel, usar um pattern.&lt;/p&gt;

&lt;p&gt;Ali&#225;s, o pr&#243;prio nome pattern j&#225; d&#225; uma id&#233;ia de 'padr&#227;o', e que se voc&#234; n&#227;o utiliz&#225;-lo estar&#225;, digamos fora do padr&#227;o. Praticamente o mesmo estratagema da Microfost de nomear seu banco de dados de 'SQL Server' (h&#227;, existe outro al&#233;m desse.. eu n&#227;o sabia!) ou 'Office' (Open o qu&#234;?). A mente nos trapaceia quando menos esperamos, e nos vemos presos em emaranhados de palavras !&lt;/p&gt;</description>
      <pubDate>Wed, 14 Mar 2007 15:56:51 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:2ef11c4f-58fb-47cf-9341-6d65947eaf33</guid>
      <link>http://blog.improveit.com.br/articles/2007/03/10/canivete-suico#comment-281</link>
    </item>
  </channel>
</rss>
