<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Herberth Amaral &#187; Misc</title> <atom:link href="http://herberthamaral.com/category/misc/feed/" rel="self" type="application/rss+xml" /><link>http://herberthamaral.com</link> <description>Software development adventures</description> <lastBuildDate>Thu, 26 Aug 2010 13:59:42 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.1</generator> <item><title>Brincando com monkey patching</title><link>http://herberthamaral.com/2010/07/brincando-com-monkey-patching/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=brincando-com-monkey-patching</link> <comments>http://herberthamaral.com/2010/07/brincando-com-monkey-patching/#comments</comments> <pubDate>Sat, 10 Jul 2010 15:52:58 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Misc]]></category> <category><![CDATA[Python]]></category> <category><![CDATA[monkey patch]]></category> <category><![CDATA[produtividade]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=565</guid> <description><![CDATA[Segundo a Wikipedia, monkey patch é uma técnica utilizada para modificar atributos, funções e métodos em tempo de execução, ou seja, sem precisar mexer na implementação. Somente algumas linguagens dinâmicas suportam monkey patching, como Ruby, JavaScript, Smalltalk e Perl. Há linguagens dinâmicas que não tem suporte, como é o caso do PHP (apesar de ter [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F07%2Fbrincando-com-monkey-patching%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F07%2Fbrincando-com-monkey-patching%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>Segundo a Wikipedia, <em>monkey patch</em> é uma técnica utilizada para modificar atributos, funções e métodos em tempo de execução, ou seja, sem precisar mexer na implementação.</p><p>Somente algumas linguagens dinâmicas suportam monkey patching, como Ruby, JavaScript, Smalltalk e Perl. Há linguagens dinâmicas que não tem suporte, como é o caso do PHP (apesar de ter algumas formas de obter um resultado parecido).</p><p>Eis um exemplo simples de patching com Python:</p><div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">def</span> sayHiToMe<span style="color: black;">&#40;</span>me<span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Hi, '</span>+me<br /> <br /> sayHiToMe<span style="color: black;">&#40;</span><span style="color: #483d8b;">'Herberth'</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># Hi, Herberth</span><br /> <br /> <span style="color: #ff7700;font-weight:bold;">def</span> sayHello<span style="color: black;">&#40;</span>me<span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Hello, '</span>+me<br /> <br /> sayHiToMe = sayHello<br /> <br /> sayHiToMe<span style="color: black;">&#40;</span><span style="color: #483d8b;">'Herberth'</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># Hello, Herberth</span></div></div><p>Isto é possível porque o Python trata suas funções e métodos como objetos. Tanto é que você pode chamar uma função/método utilizando o método __call__:</p><div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">def</span> sayHiToMe<span style="color: black;">&#40;</span>me<span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Hi, '</span>+me<br /> <br /> sayHiToMe.<span style="color: #0000cd;">__call__</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Herberth'</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;">#Hi, Herberth</span></div></div><p>Uma coisa mais interessante é modificar métodos de classe em tempo de execução e a modificação ficar valendo para todos os objetos:</p><div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">class</span> Teste:<br /> &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> meuTeste<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Testando...'</span><br /> <br /> <span style="color: #ff7700;font-weight:bold;">def</span> meuOutroTeste<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Testando denovo...'</span><br /> <br /> primeiroTeste = Teste<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br /> primeiroTeste.<span style="color: black;">meuTeste</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;">#Testando...</span><br /> <br /> Teste.<span style="color: black;">meuTeste</span> = meuOutroTeste<br /> primeiroTeste.<span style="color: black;">meuTeste</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;">#Testando denovo...</span></div></div><p>Este é um dos motivos pelos quais você tem que passar a referência do objeto para cada método da classe <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Monkey patching pode ser muito útil quando necessitamos de um mock/stub para testar uma determinada classe/método:  você pode criar o método que vai substituir o médoto em questão sem precisar perder a referência do método original. Exemplo:</p><div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">class</span> Email:<br /> &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> sendMail<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>,<span style="color: #ff7700;font-weight:bold;">from</span>,to,subject,message<span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Enviando email...'</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">mailSent</span> = <span style="color: #008000;">True</span><br /> <br /> <span style="color: #ff7700;font-weight:bold;">def</span> Cliente:<br /> &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> cadastro<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>,nome,telefone,<span style="color: #dc143c;">email</span><span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># salva o cliente no banco de dados e no fim envia um email</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">mail</span> = Email<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">mail</span>.<span style="color: black;">send</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'admin@loja.com'</span>,<span style="color: #483d8b;">'cliente@teste.com'</span>,<span style="color: #483d8b;">'blah'</span>,<span style="color: #483d8b;">'blah blah!'</span><span style="color: black;">&#41;</span><br /> <br /> <span style="color: #808080; font-style: italic;"># não queremos que o método da classe Email apresentada acima envie um email</span><br /> <span style="color: #808080; font-style: italic;"># a cada de cadastro do cliente. Por isso, vamos fazer um patch para o método sendMail.</span><br /> <br /> <span style="color: #ff7700;font-weight:bold;">def</span> sendFakeMail<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>,<span style="color: #ff7700;font-weight:bold;">from</span>,to,subject,message<span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">mailSent</span> = <span style="color: #008000;">True</span><br /> <br /> originalMail = Email.<span style="color: black;">sendMail</span> <span style="color: #808080; font-style: italic;">#salva a referencia original de sendMail</span><br /> Email.<span style="color: black;">sendMail</span> = sendFakeMail<br /> c = Cliente<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br /> c.<span style="color: black;">cadastro</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Herberth'</span>,<span style="color: #483d8b;">'999-9999'</span>,<span style="color: #483d8b;">'meu@email.com'</span><span style="color: black;">&#41;</span><br /> <span style="color: #ff7700;font-weight:bold;">assert</span> c.<span style="color: black;">mail</span>.<span style="color: black;">mailSent</span> <span style="color: #808080; font-style: italic;">#verifica se o email foi enviado</span><br /> Email.<span style="color: black;">sendMail</span> = originalMail <span style="color: #808080; font-style: italic;"># restaura o sendMail original</span></div></div><p>Legal, não? <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2010/07/brincando-com-monkey-patching/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>O melhor modelo de curriculo para desenvolvedor que eu ja vi</title><link>http://herberthamaral.com/2010/05/o-melhor-modelo-de-curriculo-para-desenvolvedor-que-eu-ja-vi/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=o-melhor-modelo-de-curriculo-para-desenvolvedor-que-eu-ja-vi</link> <comments>http://herberthamaral.com/2010/05/o-melhor-modelo-de-curriculo-para-desenvolvedor-que-eu-ja-vi/#comments</comments> <pubDate>Fri, 21 May 2010 12:12:56 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Misc]]></category> <category><![CDATA[blog]]></category> <category><![CDATA[curriculo]]></category> <category><![CDATA[dica]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=500</guid> <description><![CDATA[No meu post anterior, eu falei sobre a importância de um desenvolvedor ter um blog e dei algumas dicas para quem quer ser um dev blogueiro. O que eu quero mostrar agora é uma forma criativa de criar um currículo para desenvolvedor. A idéia original é do railer Ilya Grigorik, que a apresentou neste Gist. [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F05%2Fo-melhor-modelo-de-curriculo-para-desenvolvedor-que-eu-ja-vi%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F05%2Fo-melhor-modelo-de-curriculo-para-desenvolvedor-que-eu-ja-vi%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>No meu <a href="http://herberthamaral.com/2010/05/motivos-e-dicas-para-desenvolvedores-terem-blogs/">post anterior</a>, eu falei sobre a importância de um desenvolvedor ter um blog e dei algumas dicas para quem quer ser um dev blogueiro. O que eu quero mostrar agora é uma forma criativa de criar um currículo para desenvolvedor. A idéia original é do railer <a href="http://igvita.com" target="_blank">Ilya Grigorik</a>, que a apresentou neste <a href="http://gist.github.com/296881" target="blank">Gist</a>.</p><p>Segue abaixo o código traduzido do Ilya:</p><div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#008000; font-style:italic;"># E ae galera.. </span><br /> <span style="color:#008000; font-style:italic;"># </span><br /> <span style="color:#008000; font-style:italic;"># Imagine você no outro lado da mesa: duas vagas de emprego, centenas de currículos,</span><br /> <span style="color:#008000; font-style:italic;"># _todos eles_ idênticos. Sim, o RH da sua MegaCorp XYZ está usando métodos</span><br /> <span style="color:#008000; font-style:italic;"># automatizados para analisar palavras-chave, e o departamento de cooperação da </span><br /> <span style="color:#008000; font-style:italic;"># sua escola está tentando fazer você seguir um &quot;modelo pré-definido&quot;.. Mas,</span><br /> <span style="color:#008000; font-style:italic;"># a menos que você esteja procurando ser um robô na MegaCorp XYZ, designado</span><br /> <span style="color:#008000; font-style:italic;"># à escrever casos de testes para códigos que nunca irão ver a luz do dia..</span><br /> <span style="color:#008000; font-style:italic;"># faça um favor a você mesmo, e _seja diferente_. Seja ousado, droga!</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;"># (Francamente, eu estou pegando no sono enquanto leio seus resumos..</span><br /> <span style="color:#008000; font-style:italic;"># Me acorde! É sério!)</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;"># =&gt; Coisas que nos importamos</span><br /> <span style="color:#008000; font-style:italic;"># </span><br /> <span style="color:#008000; font-style:italic;"># Sim, eu irei perguntar pra você sobre suas forças e fraquezas, mas na verdade,</span><br /> <span style="color:#008000; font-style:italic;"># o melhor indicador de quem você é, é o que você faz no seu tempo livre. Projetos</span><br /> <span style="color:#008000; font-style:italic;"># escolares são ótimos, assim como a experiência de trabalho. Mas se você</span><br /> <span style="color:#008000; font-style:italic;"># escreveu uma biblioteca para jQuery no final de semana, você sabe, </span><br /> <span style="color:#008000; font-style:italic;"># por diversão.. agora isso é massa. Isso diz muito, conte-me mais sobre ela.</span><br /> <span style="color:#008000; font-style:italic;"># </span><br /> <span style="color:#008000; font-style:italic;"># Você sabe o que isso mostra? Paixão. Você se importou o suficiente para </span><br /> <span style="color:#008000; font-style:italic;"># fazer isso no seu tempo livre - o que te põe em menos de 10% de toda</span><br /> <span style="color:#008000; font-style:italic;"># população de estudantes (sério).</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;"># Mostre-me seu blog, conte-me uma história. Uma entrevista é sua oportunidade de</span><br /> <span style="color:#008000; font-style:italic;"># mostrar suas coisas. Pegue meu laptop e me mostre um snippet de código que você</span><br /> <span style="color:#008000; font-style:italic;"># se orgulha de ter feito, ou me conte sobre um problema que você está tentando</span><br /> <span style="color:#008000; font-style:italic;"># resolver ultimamente.</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;"># =&gt; Coisas inúteis</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;"># Sua média escolar é provavelmente a coisa mais inútil para uma entrevista - de fato,</span><br /> <span style="color:#008000; font-style:italic;"># parece que há uma correlação inversa. Quer dizer, claro que boas notas é uma coisa</span><br /> <span style="color:#008000; font-style:italic;"># boa, mas elas não contam história, portanto não as mencione. Mesma coisa para </span><br /> <span style="color:#008000; font-style:italic;"># hobbies do tempo de colégio: mostre-me seu trabalho recente.</span><br /> <span style="color:#008000; font-style:italic;"># </span><br /> <span style="color:#008000; font-style:italic;"># Ah, e não me deixe-me iniciar em coisas de palavra-chave. Eu sei que você é bom,</span><br /> <span style="color:#008000; font-style:italic;"># mas eu duvido que você grok (http://en.wikipedia.org/wiki/Grok#In_hacker_culture)</span><br /> <span style="color:#008000; font-style:italic;"># C/C++/Java &amp; Erlang, todas ao mesmo tempo, depois de falar de CS 133. Saiba suas</span><br /> <span style="color:#008000; font-style:italic;"># forças, mostre-as. Nada me impede de lhe contratar para uma vaga de Ruby </span><br /> <span style="color:#008000; font-style:italic;"># se você sabe C++ de pé à cabeça.</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;"># =&gt; Concluindo...</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;"># Ser excepcional requer trabalho duro, mas acredite em mim, vale a pena.</span><br /> <span style="color:#008000; font-style:italic;"># Deixe os seres automatizados irem aonde eles querem ir.. Para as MegaCorps</span><br /> <span style="color:#008000; font-style:italic;"># que filtram palavras-chave e requerem currículos pré-formatados e impressos</span><br /> <span style="color:#008000; font-style:italic;"># em 95% de brilho, idéias extra, papel A4. Mas você meu amigo, você é</span><br /> <span style="color:#008000; font-style:italic;"># diferente... então seja diferente, droga!</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;"># Muito obrigado,</span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;"># Ilya Grigorik - CTO / Fundador - postrank.com</span><br /> <span style="color:#008000; font-style:italic;"># (twitter: @igrigorik, email: ilya@postrank.com, blog: igvita.com, github: github.com/igrigorik)</span><br /> <span style="color:#008000; font-style:italic;"># </span><br /> <span style="color:#008000; font-style:italic;"># P.S. Sim, nós estamos recrutando na PostRank. De fato, nós estamos sempre contratando,</span><br /> <span style="color:#008000; font-style:italic;"># então se você acha que tem o que precisamos, mande-me uma mensagem, ou melhor,</span><br /> <span style="color:#008000; font-style:italic;"># me mande algum código. Ficarei feliz em conversar. </span><br /> <span style="color:#008000; font-style:italic;">#</span><br /> <span style="color:#008000; font-style:italic;"># P.P.S. Eu levei 15 minutos para rascunhar um tipo _diferente_ de currículo. Você sabe,</span><br /> <span style="color:#008000; font-style:italic;"># um que pode garantir uma entrevista. &quot;Fork it&quot;, modifique-o, use-o, faça o que quiser.</span><br /> <span style="color:#008000; font-style:italic;"># A idéia é: faça algo diferente.</span><br /> <br /> <span style="color:#9966CC; font-weight:bold;">class</span> Estudante <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveRecord::Base</span><br /> &nbsp; has_one &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:paixao</span>, &nbsp;<span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;project.type = 'web'&quot;</span><br /> &nbsp; has_many &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:habilidades</span>, &nbsp; <span style="color:#ff3333; font-weight:bold;">:through</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:practice</span><br /> <br /> &nbsp; has_many &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:cursos_relevantes</span>, <span style="color:#ff3333; font-weight:bold;">:through</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:universidade</span>, <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :<span style="color:#9966CC; font-weight:bold;">include</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:trabalho_em_grupo</span><br /> <br /> &nbsp; has_and_belongs_to_many &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:projetos</span>, <span style="color:#ff3333; font-weight:bold;">:through</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:github</span>, <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:foreign_key</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;github.com/username&quot;</span><br /> <br /> &nbsp; validates_presence_of <span style="color:#ff3333; font-weight:bold;">:time_agil</span><br /> &nbsp; validates_presence_of <span style="color:#ff3333; font-weight:bold;">:inovacao</span><br /> &nbsp; validates_presence_of <span style="color:#ff3333; font-weight:bold;">:oportunidades_de_aprendizado</span><br /> <br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">objetivo</span><br /> &nbsp; &nbsp; <span style="color:#996600;">&quot;Aprender &amp; melhorar minhas habilidades num ambiente que me possibilite &quot;</span> \<br /> &nbsp; &nbsp; <span style="color:#996600;">&quot;aprender novas coisas enquanto eu me divirto e contribuo com projetos que&quot;</span> \<br /> &nbsp; &nbsp; <span style="color:#996600;">&quot;terão impacto no usuário final&quot;</span><br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br /> <br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">toolkit</span><br /> &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><br /> &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:forte</span> &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">%</span>w<span style="color:#006600; font-weight:bold;">&#40;</span>Ruby Rails JQuery CSS<span style="color:#006600; font-weight:bold;">&#41;</span>,<br /> &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:familiar</span> &nbsp; <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">%</span>w<span style="color:#006600; font-weight:bold;">&#40;</span>C<span style="color:#006600; font-weight:bold;">++</span> Java Erlang Flex Flash SQL<span style="color:#006600; font-weight:bold;">&#41;</span>,<br /> &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:quero_aprender</span> &nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">%</span>w<span style="color:#006600; font-weight:bold;">&#40;</span>MacRuby JRuby<span style="color:#006600; font-weight:bold;">&#41;</span><br /> &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br /> <br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">experiencia</span><br /> &nbsp; &nbsp; past = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span><br /> &nbsp; &nbsp; past.<span style="color:#9900CC;">push</span> <span style="color:#006600; font-weight:bold;">&#123;</span>:empresa <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;XYZ&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:title</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Ruby Wrangler&quot;</span>,<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:data</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">1</span>.<span style="color:#9900CC;">year</span>.<span style="color:#9900CC;">ago</span> .. <span style="color:#006666;">6</span>.<span style="color:#9900CC;">months</span>.<span style="color:#9900CC;">ago</span><span style="color:#006600; font-weight:bold;">&#41;</span>,<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:descricao</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Construí A por causa de B, responsável por X&quot;</span>,<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:reference</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;John Smith &lt;john @smith.com&gt;&quot;</span>,<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:url</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;http://awesome-rails-app.com&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><br /> <br /> &nbsp; &nbsp; past.<span style="color:#9900CC;">push</span> <span style="color:#006600; font-weight:bold;">&#123;</span>:company <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;CDF&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:title</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Server Admin&quot;</span>,<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:data</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">6</span>.<span style="color:#9900CC;">months</span>.<span style="color:#9900CC;">ago</span> .. <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span><span style="color:#006600; font-weight:bold;">&#41;</span>,<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:descricao</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Migrei X para a plataforma de cloud Y&quot;</span>,<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:reference</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Bob Smith &lt;bob @smith.com&gt;&quot;</span>,<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#ff3333; font-weight:bold;">:url</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;http://more-awesome-rails.com&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><br /> <br /> &nbsp; &nbsp; past<br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br /> <br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">educacao</span><br /> &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><br /> &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:universidade</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Waterloo&quot;</span>,<br /> &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:nivel</span> &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;2A&quot;</span>,<br /> &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:grau</span> &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Bacharel em Ciência da Computação&quot;</span>,<br /> &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:notas</span> &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Disponíveis sob requisição, dê uma olhada nos meus projetos.&quot;</span><br /> &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br /> <br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">contact</span><br /> &nbsp; &nbsp; contacts = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span><br /> &nbsp; &nbsp; contacts.<span style="color:#9900CC;">push</span> <span style="color:#006600; font-weight:bold;">&#123;</span>:email &nbsp; <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;name@me.com&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><br /> &nbsp; &nbsp; contacts.<span style="color:#9900CC;">push</span> <span style="color:#006600; font-weight:bold;">&#123;</span>:twitter <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;username&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><br /> &nbsp; &nbsp; contacts.<span style="color:#9900CC;">push</span> <span style="color:#006600; font-weight:bold;">&#123;</span>:phone &nbsp; <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;519-000-0000&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:time</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;10am - 6pm&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><br /> &nbsp; &nbsp; contacts<br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br /> <br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> method_missing<span style="color:#006600; font-weight:bold;">&#40;</span>method, <span style="color:#006600; font-weight:bold;">*</span>args, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span><br /> &nbsp; &nbsp; <span style="color:#996600;">&quot;Ficaria contente em responder qualquer questão sobre&quot;</span>\<br /> &nbsp; &nbsp; <span style="color:#996600;">&quot; #{method}(#{args.join(',')})&quot;</span> \<br /> &nbsp; &nbsp; <span style="color:#996600;">&quot;por favor, entre em contato para futuras discussões.&quot;</span> \<br /> &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br /> <span style="color:#9966CC; font-weight:bold;">end</span><br /> <span style="color:#006600; font-weight:bold;">&lt;/</span>bob<span style="color:#006600; font-weight:bold;">&gt;&lt;/</span>john<span style="color:#006600; font-weight:bold;">&gt;</span></div></div><p>Depois dessa, o título deste post (principalmente a parte que fala de &#8220;modelo&#8221;) é irônica <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><strong>UPDATE:</strong></p><p>Eu não estou incentivando ninguém a mandar <strong>este currículo</strong> para qualquer companhia, seja grande ou pequena. Eu achei a idéia de ser diferente legal e resolvi postar no blog. O que eu quis salientar aqui é que você deve <strong>ser diferente</strong> e confiar nos seus insights. Se você acha que garantiria uma entrevista com um currículo assim, vá em frente. Faça.</p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2010/05/o-melhor-modelo-de-curriculo-para-desenvolvedor-que-eu-ja-vi/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Motivos e dicas para desenvolvedores terem blogs</title><link>http://herberthamaral.com/2010/05/motivos-e-dicas-para-desenvolvedores-terem-blogs/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=motivos-e-dicas-para-desenvolvedores-terem-blogs</link> <comments>http://herberthamaral.com/2010/05/motivos-e-dicas-para-desenvolvedores-terem-blogs/#comments</comments> <pubDate>Wed, 19 May 2010 15:16:15 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Misc]]></category> <category><![CDATA[blogs]]></category> <category><![CDATA[dica]]></category> <category><![CDATA[dojomoc]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=491</guid> <description><![CDATA[Você que é desenvolvedor, não importa a linguagem ou plataforma, tem muitos problemas e dúvidas enquanto trabalha. A solução adotada pela esmagadora maioria é recorrer ao Google que pode te levar à vários lugares onde é possível que você sane sua dúvida ou problema. Muitas vezes (no meu caso, mais de 90%) esses lugares são [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F05%2Fmotivos-e-dicas-para-desenvolvedores-terem-blogs%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F05%2Fmotivos-e-dicas-para-desenvolvedores-terem-blogs%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>Você que é desenvolvedor, não importa a linguagem ou plataforma, tem muitos problemas e dúvidas enquanto trabalha. A solução adotada pela esmagadora maioria é recorrer ao Google que pode te levar à vários lugares onde é possível que você sane sua dúvida ou problema. Muitas vezes (no meu caso, mais de 90%) esses lugares são blogs de desenvolvedores.</p><p>Nesse post eu vou falar um pouco sobre a experiência de ter um blog, o porquê de um bom desenvolvedor ter um, qual engine de blog ter e quais funcionalidades seu blog deve possuir.</p><h4>Os &#8220;porquês&#8221;</h4><p>Os principais motivos que me levaram a ter um blog foi compartilhar informações e ter mais &#8220;visibilidade&#8221; no mercado.</p><p>As informações que você consegue em blogs foram de pessoas que tiveram a boa vontade de escrever sobre o assunto esperando pouco ou nada em troca, além de reconhecimento e alguns comentários.Ter um blog ajuda muito se você quiser ter reconhecimento. É nele que você pode mostrar pro mundo o quão você é bom e saber se o mundo lhe acha bom também.</p><p>Quem é que gosta de currículos? Aquele pedaço de papel que tem seus dados pessoais, experiências profissionais que você olha e fala &#8220;putz, poderia ter muito mais coisa aqui, eu sou muito mais que isso&#8230;&#8221;. Aí que entram os blogs: você fala do que você entende (bem, na maioria das vezes =), do que você gosta, do que você está trabalhando, no que você está engajado e muito mais que pode ser dito/escrito num blog. Não parece bem mais expressivo e informativo que um mero currículo?</p><p>Hoje, muitas empresas buscam profissionais com iniciativa, profissionais que amam o que fazem. Você pode passar horas do seu tempo livre codificando, pesquisando e descobrindo coisas novas, mas pouca gente saberá da sua paixão se você não publicar em isso em algum lugar. Blogs e ferramentas de micro blogging podem ser úteis nisso.</p><p>Ter um blog é quase como ter um filho e cada post é quase um parto. Você tem que pesquisar, ir atrás, testar, procurar fontes, ajeitar tudo antes de publicar alguma coisa. É um trabalho grande que só quem tem um reconhece os esforços para se manter um blog.</p><h4>Os &#8220;comos&#8221;</h4><p>Você pode criar um blog no <a href="http://wordpress.com/" target="_blank">WordPress</a>, no <a href="https://www.blogger.com/start" target="_blank">Blogger</a> ou no <a href="http://www.typepad.com/" target="_blank">TypePad</a> há mais plataformas, mas essas são as que eu mais ouço falar), mas eu preferi registrar um domínio (com um nome nada criativo e super megalomaníaco), pagar uma hospedagem e instalar o WordPress. Sinceramente, o WordPress pra mim não tem concorrentes: possui uma comunidade gigantesca, é usado por grandes blogs do mundo, tem um mundo de temas e plugins. Enfim, estou bem satisfeito com o WP.<br /> <a href="http://herberthamaral.com/wp-content/uploads/2010/05/WordPress-Logo.png"><img class="aligncenter size-medium wp-image-495" title="WordPress-Logo" src="http://herberthamaral.com/wp-content/uploads/2010/05/WordPress-Logo-300x186.png" alt="WordPress-Logo" width="300" height="186" /></a></p><p>Há alguns plugins que eu utilizo no WordPress pra facilitar minha vida de desenvolvedor blogueiro:</p><ul><li><a href="http://akismet.com/" target="_blank">Akismet</a> &#8211; Excelente filtro de Spam. Provavelmente você não passará por isso no incício, mas depois de uns 2 ou 3 meses os spammers começam a incomodar bastante.</li><li><a href="http://wordpress.org/extend/plugins/codecolorer">CodeColorer</a> &#8211; Sintax Highlighting do código que você posta. Eu preferi o CodeColorer por fazer a &#8220;colorização&#8221; no servidor (pra não depender de JavaScript pra faze isso) e os feeds ficarem coloridos também. Além disso, ele não é obstrusivo e bugado como outros que se vê por aí.</li><li><a href="http://intensedebate.com" target="_blank">IntenseDebate</a> &#8211; Interessante para facilitar os comentários e facilitar sua vida de gerenciador de blog. Outro muito bom também é o Disqus.</li></ul><h4>Os &#8220;o que&#8221; e os &#8220;quando&#8221;</h4><p>Eu admito que ainda não estou bom nisso. Eu prefiro publicar alguma coisa que eu não tenha visto no Google ou que o que eu vi não me agradou. Acho que é um bom filtro, mas você deixa de falar muita coisa que você está trabalhando (por exemplo, meu blog não tem nenhum post sobre .NET e eu trabalho com a tecnologia há quase um ano) ao troco de um pouquinho de exclusividade <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Eu prefiro manter o ritmo de pelo menos um post a cada semana e pretendo aumentar isso, pois eu vejo mais de uma coisa interessante por semana que valham publicação. Só lembrando: blog útil e bom é blog constantemente atualizado. Se for pra não atualiza-lo sempre, é preferível nem ter (ou você quer deixar a prova do seu desleixo pra todo mundo ver? =).</p><h4>O que fazer depois?</h4><p>Um blog é somente uma plataforma para demonstração do que você é. Se você for comprometido com seu blog, você buscará bons conteúdos para ele e, de uma forma ou de outra, te levará a ter uma comunidade com a qual você deve se preocupar. Ter um blog me levou, mesmo que indiretamente, a fundar o primeiro <a href="http://dojomoc.wordpress.com" target="_blank">CodingDojo</a> (by the way: o coding dojo está em latência&#8230; estamos preparando algo grande pra comunidade de devs de Montes Claros. Aguardem!) de Montes Claros e com certeza influenciará outras iniciativas minhas.</p><p>Precisa de mais inpiração? Dê uma olhada:</p><p>- <a href="http://queroterumblog.com/11-motivos-para-ter-um-blog-de-uma-vez-por-todas/" target="_blank">11 motivos para se ter um blog de uma vez por todas</a></p><p>- <a href="http://disqus.com/" target="_blank">28 tipos de posts para abastecer seu blog infinitamente</a></p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2010/05/motivos-e-dicas-para-desenvolvedores-terem-blogs/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>Dicas simples para melhorar o carregamento do WordPress e obter um melhor rank no Google</title><link>http://herberthamaral.com/2010/05/dicas-simples-para-melhorar-o-carregamento-do-wordpress-e-obter-um-melhor-rank-no-google/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=dicas-simples-para-melhorar-o-carregamento-do-wordpress-e-obter-um-melhor-rank-no-google</link> <comments>http://herberthamaral.com/2010/05/dicas-simples-para-melhorar-o-carregamento-do-wordpress-e-obter-um-melhor-rank-no-google/#comments</comments> <pubDate>Mon, 03 May 2010 10:49:21 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Misc]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[wordpress]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=396</guid> <description><![CDATA[Blogs são famosos por demorarem carregar. Tem alguns que passam de alguns megabytes na página inicial. Felizmente, o Google percebeu que um dos fatores de satisfação do usuário é o baixo tempo de carregamento de uma página e resolveu adotar o tempo de carregamento fator de rankeamento. Nest post eu dou algumas dicas de como [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F05%2Fdicas-simples-para-melhorar-o-carregamento-do-wordpress-e-obter-um-melhor-rank-no-google%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F05%2Fdicas-simples-para-melhorar-o-carregamento-do-wordpress-e-obter-um-melhor-rank-no-google%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>Blogs são famosos por demorarem carregar. Tem alguns que passam de alguns megabytes na página inicial. Felizmente, o Google percebeu que um dos fatores de satisfação do usuário é o baixo tempo de carregamento de uma página e <a href="http://readwriteweb.com.br/2010/04/09/e-oficial-agora-o-google-leva-em-consideracao-a-velocidade-dos-sites-como-fator-de-rankeamento/" target="_blank">resolveu adotar o tempo de carregamento fator de rankeamento</a>.</p><p>Nest post eu dou algumas dicas de como  melhorar a performance do WordPress, tanto no servidor quanto no cliente. Com alguns outros plugins e alguma observação básica, é possível diminuir o número de requisições, compactar documentos de texto (html, css e js) e conseqüentemente diminuir o tempo de carregamento.</p><h4>Dica #1: Instale o <a href="http://developer.yahoo.com/yslow/" target="_blank">YSlow </a>e saiba onde seu blog peca na performance.</h4><p>O YSlow é um plugin do Firefox que mostra alguns pontos em que seu blog (ou site) pode ser otimizado.</p><p><a href="http://herberthamaral.com/wp-content/uploads/2010/05/YSlow1.png"><img class="aligncenter size-full wp-image-399" title="YSlow" src="http://herberthamaral.com/wp-content/uploads/2010/05/YSlow1.png" alt="" width="274" height="280" /></a>Pra blogs, é normal ter o &#8220;Make fewer HTTP requests&#8221; no vermelho. O uso indiscriminado de plugins é a causa disso. Um exemplo: há vários plugins que usam jQuery, mas se há o risco de você estar incluindo o jQuery duas vezes na sua página. São duas requisições a mais de ~24KB, na melhor das hipóteses.</p><h4>Dica #2 &#8211; Desabilite plugins desnecessários ou substitua-os</h4><p>Alguns plugins podem ser bacanas e tal, mas pense se eles são realmente necessários. E se forem, se tem o seu conteúdo otimizado. O AddToAny, por exemplo, é um plugin legal para compartilhamento do seu conteúdo em N redes sociais, mas ele tem todos os ícones das redes em arquivos separados (até a versão 0.9.9.5.1. Na versão mais nova consertaram isso). Isso quer dizer várias requisições à mais no seu blog.</p><p>Há plugins também que inserem outros arquivos JavaScript que estão fora do seu controle. Por exemplo, o <a href="http://intensedebate.com/" target="_blank">IntenseDebate</a> é triste com isso (não tenho muitas informações com relação ao <a href="http://disqus.com">Disqus</a>): além de algumas requisições pro domínio deles (em que o conteúdo não é servido) o plugin inclui um script de terceiros (<a href="http://quantserve.com/" target="_blank">Quantserve</a>) sem sua autorização. Eu ainda não mexi no código dele, mas acredito ser possível servir tais scripts de forma estática.</p><h4>Dica #3 &#8211; Instale o <a href="http://wordpress.org/extend/plugins/autoptimize/" target="_blank">AutoOptimize</a></h4><p>O AutoOptimize é um plugin muito fácil de usar e que ajuda a diminuir drasticamente o número de requisições fazendo com que seu CSS e JavaScript seja concatenado e servido em uma única requisição. Uma coisa interessante que eu notei é que alguns plugins colocam JS indiscrinadamente no topo da página e o AutoOptimize corrige (mesmo que parcialmente) estes problemas colocando-os no final.</p><h4>Dica #4 &#8211; Tempo de carregamento também tem a ver com seu servidor também &#8211; Use o <a href="http://wordpress.org/extend/plugins/wp-super-cache/" target="_blank"> WP Super Cache</a>.</h4><p>O carregamento da interface consome a maior parte do tempo de carregamento de uma página, mas o WordPress é uma engine pra blogs bem grande e isso quer dizer que ele pode ser lento se mal configurado.</p><p>O WP Super Cache ajuda na performance fazendo que o WordPress não precise renderizar todo o conteúdo toda vez que um usuário acessa a página. Além disso, ele comprime seu conteúdo com gzip, fazendo com que o tamanho do conteúdo de tezto seja diminuído em cerca de 70% e com isso o tempo de carregamento da página diminui.</p><p>Apesar do WP-Supercache fazer um excelente trabalho, ele não faz todo. Há algumas configurações, como as ETags que podem ser feitas para melhorar o desempenho do seu blog e algumas outras configurações como servir conteúdo estático sem cookies (lembrem-se: cookies aumentam o tamanho do header HTTP fazendo com que talvez seja necessário mais de um pacote IP para enviar a requisição e assim diminuindo o desempenho).  Essas e outras configurações dependem do seu serviço de hospedagem e pode ser complicado fazer com que eles mudem alguma coisa no servidor que hospeda o seu blog.</p><h4>Dica #5 &#8211; Tente colocar o máximo de conteúdo externo dentro do seu domínio.</h4><p>Esta dica visa principalmente diminuir o número de consultas DNS que seu browser faz.</p><p>Isso só não serve para arquivos que são estáticos e são largamente utilizados, como o jQuery: pra este caso, uma fonte externa (CDN &#8211; Content Delivery Network) é recomendada.</p><p>Referências:<br /> <a href="http://escalabilidade.com/2010/04/22/o-google-quer-seu-site-seja-rapido-saiba-como-otimizar-o-carregamento-das-suas-paginas/" target="_blank">O Google quer seu site seja rápido: Saiba como otimizar o carregamento das suas páginas</a><br /> <a href="http://www.mnot.net/cache_docs/" target="_blank">Caching tutorial</a></p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2010/05/dicas-simples-para-melhorar-o-carregamento-do-wordpress-e-obter-um-melhor-rank-no-google/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Boas Festas!</title><link>http://herberthamaral.com/2009/12/boas-festas/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=boas-festas</link> <comments>http://herberthamaral.com/2009/12/boas-festas/#comments</comments> <pubDate>Fri, 25 Dec 2009 09:53:45 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Misc]]></category> <category><![CDATA[ano novo]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=136</guid> <description><![CDATA[Galera, aí vai meu voto de boas festas: Brincadeiras a parte, espero que todos nós tenhamos um 2010 melhor que o 2009. Boas festas Sem posts relacionados.]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Fboas-festas%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Fboas-festas%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>Galera, aí vai meu voto de boas festas:</p><div id="attachment_137" class="wp-caption aligncenter" style="width: 510px"><a href="http://herberthamaral.com/wp-content/uploads/2009/12/boas-festas.jpg"><img class="size-full wp-image-137" title="boas-festas" src="http://herberthamaral.com/wp-content/uploads/2009/12/boas-festas.jpg" alt="" width="500" height="372" /></a><p class="wp-caption-text">lol</p></div><p>Brincadeiras a parte, espero que todos nós tenhamos um 2010 melhor que o 2009. Boas festas <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2009/12/boas-festas/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Foco e produtividade &#8211; A tecnica do Pomodoro.</title><link>http://herberthamaral.com/2009/12/foco-e-produtividade-a-tecnica-do-pomodoro/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=foco-e-produtividade-a-tecnica-do-pomodoro</link> <comments>http://herberthamaral.com/2009/12/foco-e-produtividade-a-tecnica-do-pomodoro/#comments</comments> <pubDate>Tue, 22 Dec 2009 01:07:15 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Misc]]></category> <category><![CDATA[agile]]></category> <category><![CDATA[nerdson]]></category> <category><![CDATA[pomodoro]]></category> <category><![CDATA[produtividade]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=120</guid> <description><![CDATA[Quem nunca passou por uma situação parecida com essa aí de cima que jogue a primeira pedra! 1 &#8211; O problema Esse tipo de situação acontece com muitos profissionais todos os dias. E, no meu ver, o principal problema é a liberdade. Digo, não a liberdade em si, mas o seu mau aproveitamento. Muitos de [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Ffoco-e-produtividade-a-tecnica-do-pomodoro%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Ffoco-e-produtividade-a-tecnica-do-pomodoro%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p style="text-align: center;"><p style="text-align: center;"><em> </em></p><div id="attachment_121" class="wp-caption aligncenter" style="width: 610px"><a href="http://nerdson.com/blog/deficit/"><img class="size-full wp-image-121" title="Foco" src="http://herberthamaral.com/wp-content/uploads/2009/12/nerdson200.png" alt="" width="600" height="250" /></a><p class="wp-caption-text">O que?! Vai dizer que você caiu nessa denovo?</p></div><p style="text-align: center;"><p style="text-align: left;">Quem nunca passou por uma situação parecida com essa aí de cima que jogue a primeira pedra!</p><h4>1 &#8211; O problema</h4><p style="text-align: left;">Esse tipo de situação acontece com muitos profissionais todos os dias. E, no meu ver, o principal problema é a liberdade. Digo, não a liberdade em si, mas o seu mau aproveitamento. Muitos de nós, profissionais de TI, não somos questionados sobre o que estamos acessando e que horas estamos acessando, desde que entreguemos tudo no prazo. Daí você já viu: hora extra, noites sem dormir e finais de semana em casa para cumprir com aquele prazo&#8230;</p><p style="text-align: left;">Várias metodologias foram criadas para sanar o problema da procrastinação. Uma delas é o famoso <a href="http://en.wikipedia.org/wiki/Getting_Things_Done" target="_blank">Getting Things Done (GTD) </a>ou no seu título em português: <em>A arte de fazer acontecer. </em>O GTD tem seus pontos fortes e fracos. Dos pontos fortes, o principal é que ele fornece um &#8220;framework&#8221; para organização de vários níveis de tempo: desde de como vai ser cada hora do seu dia até planos para daqui dez anos. O ponto fraco é quase o mesmo que dá o ponto forte, pois, por ser um &#8220;framework&#8221;, ele é genérico. A maioria das coisas que eu li nele são simplesmente frutos do bom senso comum.</p><h4>2 &#8211; A Técnica do Pomodoro</h4><p style="text-align: left;">A técnica do pomodoro é um pouco diferente. Ela é simplesmente prática, vai direto ao ponto e é bem simples: você trabalha 25 minutos, pausa 5, trabalha mais 25 e pausa mais 5 e assim por diante. Cada 25 minutos corresponde a um <em>Pomodoro. </em>Depois de 4 pomodoros, você pode fazer uma pausa maior (25 minutos).</p><p style="text-align: left;">Cada <em>Pomodoro </em>é<em> </em>indivisível, ou seja, você não olha seu Twitter, email, chat ou responde à sua mãe quando ela pede uma sugestão pro almoço durante estes 25 minutos. Totalmente focado no trabalho. A mágica da técnica do <em>Pomodoro</em> é que você sabe que você terá seus 5 minutinhos de descanso pra olhar seu Twitter, seu email, zuar o colega do lado e talvez até beber uma água (e esse tempo geralmente dá pra fazer isso tudo! Experiência própria.)</p><p style="text-align: left;">Essa explanação foi bem básica. Você pode conferir mais detalhes <a href="http://www.pomodorotechnique.com" target="_blank">no livro disponível gratuitamente em PDF.</a></p><h4>3 &#8211; Um pouco de história</h4><p style="text-align: left;">A técnica foi criada por um sujeito italiano chamado <a href="http://cirillosscrapbook.wordpress.com/" target="_blank">Francesco Cirillo</a>. O Francesco estava passando por maus bocados com os estudos pois ele não conseguia se concentrar nos estudos. Foi aí que ele olhou pra cima de sua geladeira, viu um <em>Pomodoro </em>(aqueles timers em forma de tomate que são usados na cozinha) e pensou consigo mesmo: &#8220;Será se eu consigo me concentrar só nisso durante 10 minutos?&#8221;. Dito e feito. O sujeito pegou o timer, ajustou pra 10 minutos e desceu a lenha no livro. Wow! E ele conseguiu se concentrar por 10 minutos.</p><p style="text-align: left;"><div id="attachment_132" class="wp-caption aligncenter" style="width: 293px"><a href="http://herberthamaral.com/wp-content/uploads/2009/12/pomodoro.png"><img class="size-full wp-image-132" title="pomodoro" src="http://herberthamaral.com/wp-content/uploads/2009/12/pomodoro.png" alt="" width="283" height="241" /></a><p class="wp-caption-text">Vai um tomatinho aí?</p></div><p style="text-align: left;">O episódio descrito acima aconteceu em meados da década de 1980. De lá pra cá, ele vem experimentando diferentes <em>timeboxes</em> (diferentes tempos para o <em>Pomodoro</em>), também vem ministrando palestras e organizando workshops e chegou na conclusão que 25 minutos é o tempo que funciona bem para maioria das pessoas. Mas isso é somente um conselho, você pode colocar um <em>timebox</em> mais curto ou mais longo, dependendo da sua necessidade.</p><h4>4 &#8211; Mãos à massa! Já!</h4><p style="text-align: left;">Com o GTD você tem N desculpas para procrastinar. Com o Pomodoro não. São apenas 25 minutos, o que é que lhe custa? Teste por uma ou duas horas e veja qual foi o resultado.</p><p style="text-align: left;">Há pessoas que tem dificuldade (ou preguiça) de fazer a lista de tarefas e ainda sim utilizam a técnica do Pomodoro. Elas conseguem sucesso porque conseguem eliminar a <strong>ansiedade</strong>. Elas sabem que terão os 5 minutinhos pra fazer o que está em segundo plano e sabem que isso irá faze-las render no trabalho.</p><h4>5 &#8211; Minha experiência</h4><p style="text-align: left;">No início é cansativo. Os 25 minutos não parecem passar nunca e os 5 minutos são simplesmente muito curtos. Dá vontade de desistir. &#8220;Po, isso não é humano&#8221;, pensei eu. Mas depois de dois dias de trabalho utilizando a técnica eu já consegui me acostumar.</p><p style="text-align: left;">Hoje eu tenho 4 meses de <em>Pomodoro. </em>Cinco minutos é tempo suficiente pra fazer muita coisa. De fato, 5 minutos hoje parecem mais suficiente para muita coisa. Eu tenho um nível de produtividade que eu invejável pelo Herberth de 4 ou 5 meses atrás, não sofro mais da ansiedade do email não lido ou do tweet não respondido, não tenho medo de ignorar o Google Talk (tem uma parte do livro que fala como lidar com interrupções, é bem interessante) e meu serviço rende bem mais.</p><p style="text-align: left;">O mais legal de tudo é quando as pessoas começam a sincronizar pomodoros. Além de divertido, essa forma de fazer as coisas ajuda para que você não desista.</p><h4>6 &#8211; Timers para o Pomodoro</h4><p style="text-align: left;">Bem, eu imagino que a maioria das pessoas que estão lendo esse post não tem um timer de cozinha. Então, há alguns programinhas legais para ajudar você a praticar a técnica do Pomodoro. Segue a lista de alguns deles:</p><ul><li><a href="http://code.google.com/p/pomodairo/" target="_blank">Pomodairo</a></li><li><a href="http://pomodo.areacriacoes.com.br/" target="_blank">Pomodo</a></li><li><a href="http://www.focusboosterapp.com/live.cfm" target="_blank">Focus booster</a></li></ul><p>(Essa lista pode aumentar. Comente esse post se você achar um que não está listado aqui).</p><p>Galera, acho que é isso. Bom Pomodoro pra vocês também!</p><p><em>P.S: Esse post foi escrito com 2 pomodoros e duas interrupções. Nesse meio tempo eu tive 14 tweets não lidos (thank you, <a href="https://chrome.google.com/extensions/detail/encaiiljifbdbjlphpgpiimidegddhic" target="_blank">ChromedBird</a></em><em>), 4 emails a mais na minha caixa de entrada, duas conversas não respondidas no Google Talk e minha mãe realmente pediu uma sugestão para a janta <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2009/12/foco-e-produtividade-a-tecnica-do-pomodoro/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>Ano novo, coisas novas pra aprender.</title><link>http://herberthamaral.com/2009/12/ano-novo-coisas-novas-pra-aprender/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ano-novo-coisas-novas-pra-aprender</link> <comments>http://herberthamaral.com/2009/12/ano-novo-coisas-novas-pra-aprender/#comments</comments> <pubDate>Sat, 19 Dec 2009 11:43:19 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Misc]]></category> <category><![CDATA[News]]></category> <category><![CDATA[ano novo]]></category> <category><![CDATA[coding dojo]]></category> <category><![CDATA[dojomoc]]></category> <category><![CDATA[lua]]></category> <category><![CDATA[opensource]]></category> <category><![CDATA[ruby]]></category> <category><![CDATA[scala]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=104</guid> <description><![CDATA[Esse ano foi o melhor da minha vida em questões profissionais e de conhecimento. Desses 6 anos que eu me interesso por TI, esse foi o que eu mais aprendi e o que mais me agregou experiência. Vou começar com uma retrospectiva antes de passar para o planejamento: 1 &#8211; Retrospectiva A Infobits, juntamente com [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Fano-novo-coisas-novas-pra-aprender%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Fano-novo-coisas-novas-pra-aprender%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>Esse ano foi o melhor da minha vida em questões profissionais e de conhecimento. Desses 6 anos que eu me interesso por TI, esse foi o que eu mais aprendi e o que mais me agregou experiência. Vou começar com uma retrospectiva antes de passar para o planejamento:</p><h4>1 &#8211; Retrospectiva</h4><p>A <a href="http://www.infobitsunimontes.com.br" target="_blank">Infobits</a>, juntamente com seu<a href="http://gwibbers.wordpress.com" target="_blank"> Grupo de Web</a>, me deu experiência mais gerencial, mesmo coordenando poucas pessoas. Eu era e ainda sou um cara muito técnico e participar de um projeto como esse, em que eu tinha que coordenar e orientar pessoas, me ajudou a ver o outro lado da moeda. Sair do nível técnico para o gerencial é complicado. Ainda bem que eu tenho uma equipe pequena agora: menos gente, menos preocupação, mais comunicação, mais ágil.</p><p>Ter sido demitido foi uma das experiências mais marcantes que tive. Mexeu com meu ego (que por sinal não é pequeno) e eu me focei a ver o que eu tinha feito de tão errado pra ter merecido isso, já que boa parte da justificativa do meu ex-chefe não fazia sentido pra mim. A retrospectiva de um ano de empresa  foi uma coisa tão <em>foderosa</em>, que eu atribuo mais de 80% do meu conhecimento adquirido neste ano às coisas que eu aprendi nesse processo. Até brinquei com um amigo esses dias, dizendo que se eu soubesse o quanto isso te faz evoluir, eu procuraria ser demitido mais vezes. Por exemplo, eu não teria tido o interesse ou a iniciativa de ter ajudado a iniciar o nosso <a href="http://dojomoc.wordpress.com" target="_blank">Coding Dojo</a> se não tivesse sido demitido.</p><p>Vendo pelo lado acadêmico, esse ano também foi o mais produtivo: eu apresentei e publiquei 6 trabalhos e pretendo seguir o ritmo no ano que vem, mas mais voltado pra minha linha de pesquisa (Recuperação de Informação).</p><p>Quase ia me esquecendo do <a href="http://dojomoc.wordpress.com" target="_blank">Coding Dojo</a>: apesar de termos somente duas reuniões até agora, eu tou colocando muita fé nele.</p><h4>2 &#8211; Para o próximo ano</h4><p>Enfim, foi um ano cheio e eu estou prevendo que o próximo ano não será muito diferente, pois será o ano que eu irei me graduar. Daí vocês já tiram: monografia &#8220;comendo solta&#8221; o ano inteiro <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Seguindo o conselho dos <a href="http://pragprog.com/" target="_blank">Pragmatic Programmers</a> de aprender ao menos uma linguagem por ano, eu vou escolher as minhas aqui agora:</p><p style="text-align: center;"><img class="aligncenter" style="border: 0px initial initial;" title="Lua" src="http://herberthamaral.com/wp-content/uploads/2009/12/Lua.gif" alt="Lua" width="256" height="255" /></p><p style="text-align: left;">Lua é uma linguagem de programação brasileira que tem atraído muita gente no exterior, mas é pouco conhecida/valorizada aqui no Brasil. Pelo que eu pude ver, Lua é uma linguagem de altíssimo nível, bonita, elegante e que pode me ensinar alguma coisa valiosa. Outro motivo por escolher Lua é minha vontade de aprender mais sobre programação funcional. Isso me passa para a próxima linguagem:</p><p style="text-align: center;"><img class="size-full wp-image-106 aligncenter" title="200px-Scala_logo" src="http://herberthamaral.com/wp-content/uploads/2009/12/200px-Scala_logo.png" alt="200px-Scala_logo" width="200" height="57" /></p><p style="text-align: left;">Pra mim, Scala começou a ganhar atenção quando o Twitter começou a <a href="http://www.technologyreview.com/blog/editors/23282/?nlid=1908&amp;a=f" target="_blank">substituir Ruby por Scala</a> no seu backend. Mas não é somente por isso que eu escolhi Scala em detrimento de Haskell, Erlang, Scheme ou Lisp. Eu realmente queria aprender todas elas, mas <em>acho </em>que Scala pode ser um bom começo. O objetivo é aprender programação funcional, certo? <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><p style="text-align: left;"><p style="text-align: center;"><img class="size-thumbnail wp-image-107 aligncenter" title="ruby" src="http://herberthamaral.com/wp-content/uploads/2009/12/ruby-150x150.png" alt="ruby" width="150" height="150" /></p><p style="text-align: left;">Esse ano eu comecei a aprender Ruby para apresentar um trabalho. A linguagem é legal, mas eu ainda estou longe de ser um cara competente em Ruby. Por isso, Ruby vai ser uma das linguagens que irei aprender no próximo ano. Ruby é bastante usada em alguns Coding Dojos do mundo todo e por isso vai ser legal usar Ruby no <a href="http://dojomoc.wordpress.com">DojoMoc</a>.</p><h4>3 &#8211; Além de programação</h4><p style="text-align: left;">Eu ainda pretendo continuar com meus estudos sobre desenvolvimento ágil, voltado principalmente para técnicas de desenvolvimento (pair programming e TDD, principalmente), automatização de tarefas de produção de software, produtividade e arquitetura de software.</p><p style="text-align: left;">No meio acadêmico, eu pretendo procurar aplicar tudo isso aí em cima no processo de desenvolvimento do produto que será minha monografia (fazer um crawler de pequena/média escala não é tarefa fácil&#8230;). Pretendo também continuar publicando pra ver se em 2011 eu já entre em algum programa de mestrado, mesmo como aluno especial.</p><p style="text-align: left;">Ultimamente eu tenho pensado muito em desenvolvimento OpenSource. Ontem mesmo eu fiz um hack para a lib de autocomplete do jQuery para substituir a YUI numa página que eu estou mexendo no trabalho e pretendo <span style="text-decoration: line-through;">tirar as gambiarras</span> melhora-lo para disponibilizar pra galera. É coisa pequena, mas é um começo <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p style="text-align: left;">Agora é esperar 2011 chegar e ver se eu consigo cumprir pelo menos a metade disso aí <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /></p><h4>4 &#8211; Livros</h4><p style="text-align: left;">Ganhei alguns livros no meu aniversário e tenho outros encostados. São eles:</p><ol><li>O Silmarillion &#8211; J.R.R Tolkien</li><li>O Caçador de Andróides &#8211; Philip Dick</li><li>As Crônicas de Nárnia &#8211; C.S Lewis</li><li>Eragon &#8211; Christopher Paolini</li></ol><p>Há alguns outros que eu não tenho que eu quero ler:</p><ol><li>Blue Ocean Strategy, <a href="http://twitter.com/AkitaOnRails/status/6447763243" target="_blank">uma sugestão</a> do <a href="http://www.akitaonrails.com" target="_blank">Fábio Akita</a>.</li><li>The art of Unit Testing &#8211; Osherove Roy</li><li>Clean Code: A Handbook of Agile Software Craftsmanship &#8211; Uncle Bob.</li><li>The Art of Agile Development &#8211; James Shore</li><li>Agile Estimating and Planning &#8211; Mike Cohn</li></ol><p>Esses são os maiores títulos. Não sei se consigo dar conta de ler todos eles com uma monografia a fazer, mas não custa tentar <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p style="text-align: left;">Até mais!</p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2009/12/ano-novo-coisas-novas-pra-aprender/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>&#8220;A gente nao quer so codigo&#8230; a gente quer codigo, controle de versao e bug track&#8221;</title><link>http://herberthamaral.com/2009/12/a-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track</link> <comments>http://herberthamaral.com/2009/12/a-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track/#comments</comments> <pubDate>Thu, 10 Dec 2009 09:18:42 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Misc]]></category> <category><![CDATA[agile]]></category> <category><![CDATA[controle de versão]]></category> <category><![CDATA[pdca]]></category> <category><![CDATA[scrum]]></category> <category><![CDATA[tdd]]></category> <category><![CDATA[unimontes]]></category> <category><![CDATA[xp]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=46</guid> <description><![CDATA[Tá certo. A paródia da música dos Titãs não ficou boa. Mas acho que já deu pra sacar do que este post trata. Enfrentar as matérias de programação na faculdade para quem já trabalha com desenvolvimento deve ser um saco para muita gente. Os professores geralmente não trabalham na área, não sacam nada além da linguagem e [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Fa-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Fa-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>Tá certo. A paródia da música dos Titãs não ficou boa. Mas acho que já deu pra sacar do que este post trata.</p><p>Enfrentar as matérias de programação na faculdade para quem já trabalha com desenvolvimento deve ser um saco para muita gente. Os professores geralmente não trabalham na área, não sacam nada além da linguagem e ainda tem coragem de nos fazer de trouxa, explicando como é a sintaxe da linguagem, como fazer algumas coisas básicas (leia-se CRUD) e acham que está tudo ok. Não está. Óbvio que não. Então, eu tenho algumas coisas a dizer para tais professores (e para os alunos também).</p><h3>1 &#8211; Ensinar algumas coisas sobre a sintaxe e mostrar um CRUD <em>não </em>é o suficiente.</h3><p>Precisamos mais além disso para desenvolver um trabalho final decente. Nós, alunos, precisamos aprender a nos virar, mas precisamos saber com <strong>o que</strong> devemos nos virar. Coisas básicas como indentação de código deveria ser cobrada. <em><a href="http://en.wikipedia.org/wiki/Separation_of_concerns" target="_blank">Separation of Concerns</a></em> deveria ser incentivado e cobrado desde o início, por exemplo.</p><p>Não serei injusto. Algumas coisas como &#8220;comente seu código para documenta-lo&#8221; nos é ensinada. Isso é importante para quem está começando, pois saber se orientar dentro do próprio código é uma boa. Mas é algo insuficiente. Eles não ensinam como código pode ser autodocumentado, como bons nomes de variáveis podem ajudar nisso, como codificar &#8220;de cima para baixo&#8221; e outras coisas relacionadas a codificação.</p><h3>2 &#8211; Nos passar trabalhos em grupo não necessariamente nos ensina a trabalhar como uma equipe.</h3><p>Há vários trabalhos finais para fazermos e a forma mais fácil de fazer isso é deixar um para cada um. Dá pra eliminar vários problemas de comunicação e sincronização de código assim. Acho que já deu pra perceber que não aprendemos muito sobre ferramentas para desenvolvimento em equipe&#8230;</p><p>Quem for tentar desenvolver em equipe, provavelmente o fará enviando código por email, trocando pen-drives ou enviando via compartilhamento de arquivos, se tiver na mesma rede (impressionante, mas <strong>já vi </strong>&#8220;profissionais&#8221; trabalhando assim) e notarão o trabalho que isso dá. Obviamente, dá pra notar que não tivemos uma aula sobre <a href="http://pt.wikipedia.org/wiki/Sistema_de_controle_de_vers" target="_blank">controles de versão</a>&#8230;</p><h3>3 &#8211; O trabalho não acaba com a entrega&#8230;</h3><p>Quem trabalha com desenvolvimento de software há um tempo sabe do que eu estou falando. De acordo com <a href="http://users.jyu.fi/~koskinen/smcosts.htm" target="_blank">esse paper</a>, mais de 90% dos custos de um software estão na sua manutenção. Vendo por esse lado, não estamos fazendo nem 10% do trabalho que deveríamos fazer.</p><p>Várias práticas de programação importantes são feitas durante a manutenção. Uma delas é a adição/mudança de recursos. Se fizéssemos isso, perceberíamos que coisas como refatoração e testes unitários são importantes.</p><h3>4 &#8211; Metodologias são sempre bem vindas</h3><p>Uma das dúvidas de quem começa a desenvolver é: como devo proceder, qual metodologia adotar. Um professor tem que ser um guia para um aluno escolher um método de trabalho. <a href="http://pt.wikipedia.org/wiki/Praxis_(engenharia_de_software)" target="_blank">Praxis</a>? <a href="http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_Extrema" target="_blank">XP</a>? <a href="http://pt.wikipedia.org/wiki/Scrum" target="_blank">Scrum</a>? <a href="http://pt.wikipedia.org/wiki/PDCA" target="_blank">PDCA</a>? Sair fazendo na doida não é das melhores escolhas <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Na matéria de Engenharia de Software, nós temos uma visão teórica de cada uma dessas metodologias. Uma matéria de programação com um projeto pra entregar poderia ser um cenário perfeito para coloca-las em prática.</p><h3>5 &#8211; Conclusão</h3><p>Matérias como essa são muito desperdiçadas na nossa universidade. E eu imagino que seja em outras também. Se você é professor, comece a pensar nisso e pense em como você pode ajudar a mudar o quadro aqui exposto. Se você é aluno, cobre isso do seu professor. Ou pelo menos tenha a boa vontade de estudar sozinho <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2009/12/a-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> </channel> </rss>