<?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>codificando.com &#187; design</title>
	<atom:link href="http://codificando.com/category/design/feed/" rel="self" type="application/rss+xml" />
	<link>http://codificando.com</link>
	<description>Desenvolvimento de Software com qualidade</description>
	<lastBuildDate>Mon, 19 Jul 2010 21:28:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Rails Summit 2009 &#8211; Resumo</title>
		<link>http://codificando.com/2009/10/rails-summit-2009-resumo/</link>
		<comments>http://codificando.com/2009/10/rails-summit-2009-resumo/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 23:57:17 +0000</pubDate>
		<dc:creator>Emerson Macedo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[engenharia]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testes]]></category>
		<category><![CDATA[evento]]></category>

		<guid isPermaLink="false">http://codificando.com/?p=238</guid>
		<description><![CDATA[O Rails Summit terminou. Foi um evento bem legal, com ótimas palestras e a galera de sempre, que já conhecemos. Vou fazer um resumo das palestras que assisti. Chad Fowler &#8211; http://chadfowler.com A palestra do Chad foi como sempre focada &#8230; <a href="http://codificando.com/2009/10/rails-summit-2009-resumo/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O Rails Summit terminou. Foi um evento bem legal, com ótimas palestras e a galera de sempre, que já conhecemos.</p>
<p>Vou fazer um resumo das palestras que assisti.</p>
<p><strong>Chad Fowler &#8211; <a href="http://chadfowler.com">http://chadfowler.com</a><br />
</strong></p>
<p>A palestra do Chad foi como sempre focada em carrreia. Ele advertiu os desenvolvedores que produzem porcaria todo dia sem peso algum na consciência. Ele pensa (e eu também) que nós não devemos investir tempo desnvolvendo coisas que já sabemos que são porcaria. E isso não é pessimismo, simplesmente é não perder tempo.</p>
<p>Chad falou também sobre os FUDs que sempre usam contra Ruby/Rails. Isso não foi nenhuma novidade mas ele abordou de forma bem divertida e valeu muto a pena.</p>
<p>Uma das partes mais legais foi a estatística mostrando que Ruby só faz parte de 6% da requisição do usuário. Na verdade não só ruby, mas outra tecnologia também. Isso bom para refletirmos sobre as discussões sobre performance e escalabilidade das aplicações web.</p>
<p><strong>Gregg Pollack &#8211; <a href="http://envlabs.com">http://envlabs.com</a><br />
</strong></p>
<p>O foco da palestra do gregg foi sobre como atacar alguns pontos para o otimizar sua aplicação Rails. Dentre as formas, ele apresentou algumas gems/plugins que ajudam a identificar alguns pontos para melhoria de performance em uma aplicação. Vou destacar algumas:</p>
<ul>
<li>Bullet &#8211; Ajuda a identificar queries com alguns problemas. Ex: N + 1</li>
<li>Rails Indexes &#8211; Identifica colunas onde deveriam ter índices. Se baseia nas buscas do sistema.</li>
<li>Scrooge &#8211; Faz com que o ActiveRecord passe a buscar somente os campos que estão sendo usados, ao invés de buscar todos os campos. Ex: em um find(:all), após a primeira execução, o scrooge identifica quais campos foram usados e ná próxima vez modifica a query para não buscar os campos desnecessários.</li>
<li>Rack Bug &#8211; É uma Monitor para aplicações Rack. Fornece basicamente todas as informações. Sessões, CPU, Memória, etc. Bem útil</li>
<li>oink &#8211; Mostra detalhes dos requests de cada controller. Ex: consumo de memória.</li>
<li>Cloud Crowd &#8211; Servidor para rodar tarefas em background. Feito em sinatra.</li>
</ul>
<p><strong>Ilya Grigorik &#8211; <a href="http://www.igvita.com/about/">http://www.igvita.com/about/</a><br />
</strong></p>
<p>Ilya falou sobre integração/comunicação de aplicações baseadas em web, utilizando-se de tecnologias como XMPP, AMQP, Webhooks, PubsubHubbub. Foi bem interessante, pois a maioria do auditório conhecia pouco sobre o assunto.</p>
<p><strong>Fabio Akita &#8211; <a href="http://akitaonrails.com">http://akitaonrails.com</a><br />
</strong></p>
<p>A palestra do akita foi sobre agile. Ele falou bastante sobre a teoria do caos, sistemas complexos e a evolução das coisas. No fim, o recado maior foi alertar que agile não é o último estágio no desenvolvimento de software, deixando claro que temos (e vamos) que evoluir ainda mais.</p>
<p><strong>Glenn Vanderburg &#8211; <a href="http://blog.thinkrelevance.com">http://blog.thinkrelevance.com</a><br />
</strong></p>
<p>Palestra sobre o framework Tarantula, que tem por objetivo fazer testes de ataques XSS, SQL Injection, entre outros. Achei bem interessante, pois é possível automatizar esse passo, que geralmente fazemos manualmente. Glenn inclusive sugeriu que faça parte do build antes de lançar um release.</p>
<p><strong>Fabio Kung &#8211; <a href="http://fabiokung.com/">http://fabiokung.com/</a><br />
</strong></p>
<p>Fabio fez uma ótima palestra sobre DSLs (Domain Specific Languages) internas usando Ruby. Ao invés de apresentar exemplos simples ele apresentou um exemplo real de uma necessidade de uma aplicação que trata de instâncias de máquinas na cloud da Locaweb.</p>
<p><strong>Carlos Vilella <a href="http://lixo.org">http://lixo.org</a><br />
</strong></p>
<p>Carlos fez uma palestra bem curta, falando sobre o uso de Ruby na Thoughtworks. Falou sobre os poucos projetos que falharam e deixou o restante do tempo para perguntas.</p>
<p><strong>Tapajós &#8211; <a href="http://tapajos.me/">http://tapajos.me/</a><br />
</strong></p>
<p>A palestra do Tapajós foi sobre bancos de dados não relacionais. Focado bastante em CouchDB e Rails, ele explorou algumas features chaves na utilização dessa abordagem de banco de dados, também fazendo uma curta palestra e deixando boa parte do tempo para perguntas.</p>
<p><strong>Bruno Miranda &#8211; Rails não escala</strong></p>
<p>Eu gostei muto da palestra do Bruno, apesar de achar que o que ele falou é básico para qualquer Arquiteto de Software experiente.  Bruno falou bastante sobre filas, sharding, Cache, Proxy reverso, otimização de queries e sobre rodar processos em background. Acho que a palestra dele foi válida pois qualquer um hoje em dia que aprende tecnologias como Rails sai fazendo aplicações sem um conhecimento mínimo de arquitetura de software. Quando as coisas não dão certo culpam a tecnologia, gerando FUDs.</p>
<p><strong>Vinicius Teles (<a href="http://improveit.com.br/">http://improveit.com.br/</a>) &#8211; Empreendorismo</strong></p>
<p>A palestra do Vinícius foi ótima para quem pretende desenvolver um produto e/ou abrir seu próprio negócio. Ele abordou pontos como Fluxo de Caixa, oportunidades vastas que existem no Brasil e o impacto de pequenas decisões certas ou erradas que tomamos na nossa vida profissional.</p>
<p><strong>Obie Fernandes &#8211; <a href="http://obiefernandez.com/">http://obiefernandez.com/</a><br />
</strong></p>
<p>A palestra do Obie encerrou o evento em grande estilo, falando sobre talento, esforço e reforçando bem <a href="http://codificando.com/2009/06/07/afinal-o-que-seria-um-profissional-senior/">o que eu disse há um tempo atrás nesse blog</a>. Não adianta você saber um monte de coisas se não souber bem, se não tiver experiência com isso, treino, treino e mais treino. Você só ganha nível com tempo e treino, isso é fato.</p>
<p>Pra finalizar, gostaria de parabenizar ao <a href="http://akitaonrails.com">Fabio Akita</a> e a <a href="http://www.locaweb.com.br">Locaweb</a> pelo excelente evento mais uma vez.</p>
<p>E ano que vem tem mais.
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://codificando.com/2009/10/rails-summit-2009-resumo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>BBB9 e o brother que você não gosta &#8211; NO AR !!!</title>
		<link>http://codificando.com/2009/02/bbb9-e-o-brother-que-voce-nao-gosta-no-ar/</link>
		<comments>http://codificando.com/2009/02/bbb9-e-o-brother-que-voce-nao-gosta-no-ar/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 19:14:23 +0000</pubDate>
		<dc:creator>Emerson Macedo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[engenharia]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[gestão]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[bbb]]></category>
		<category><![CDATA[pensamentos]]></category>

		<guid isPermaLink="false">http://codificando.com/?p=59</guid>
		<description><![CDATA[Entrou hoje, exatamente as 08:34 da manhã, o aplicativo oficial do Big Brother Brasil 9 para orkut na plataforma Open Social, desenvolvido pelo time o qual faço parte aqui na globo.com. Esse aplicativo tem por objetivo alfinetar o brother que &#8230; <a href="http://codificando.com/2009/02/bbb9-e-o-brother-que-voce-nao-gosta-no-ar/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Entrou hoje, exatamente as 08:34 da manhã, o aplicativo oficial do <a href="http://bbb.globo.com/" target="_blank">Big Brother Brasil 9</a> para <a href="http://www.orkut.com" target="_blank">orkut</a> na plataforma <a href="http://code.google.com/apis/opensocial/" target="_blank">Open Social</a>, desenvolvido pelo time o qual faço parte aqui na <a href="http://globo.com" target="_blank">globo.com</a>. Esse aplicativo tem por objetivo alfinetar o brother que o usuário não gosta e comentar sobre o assunto.</p>
<p><img class="aligncenter" src="http://codificando.com/wp-content/uploads/2009/02/alfinetando_brother.jpg" alt="" width="517" height="392" /></p>
<p>Aplicativos Open Social parecem algo como uma brincadeirinha de criança, coisa que qualquer pessoa faz. Mas na verdade, desenvolver esse tipo de aplicação para um programa como o Big Brother Brasil não é tão simples. Aplicações de grande volume geralmente usam arquiteturas recheadas de <a href="http://www.danga.com/memcached/">cache</a>, <a href="http://en.wikipedia.org/wiki/Message_Oriented_Middleware" target="_blank">processamento assíncrono usando fila</a>, criptografia, alguns servidores e um bocado de outras coisas que o torna tão complexo quanto qualquer outro sistema.</p>
<p>Quero aproveitar também e destacar, que <strong>conseguimos desenvolver o produto completo &#8220;do zero&#8221;, em pouco mais de 1 mês</strong>. Isso inclui configuração de todos os servidores (inclusive produção que são várias máquinas), ambiente interno de desenvolvimento, servidor de <a href="http://martinfowler.com/articles/continuousIntegration.html" target="_blank">integração contínua</a>, desenho dos bonecos dos brothers de forma personalizada, vários testes de carga em ambientes que simulam produção e muita comunicação. Estou falando disso, pois usamos metodologias ágeis e acredito fortemente que se não fosse assim, não teria sido possível entregar o aplicativo nesse tempo (e não trabalhamos nenhum fim de semana). No caso específico aqui da globo.com, <a href="http://pt.wikipedia.org/wiki/Scrum" target="_blank">SCRUM</a> é a metodologia usada, mas poderia ser <a href="http://www.extremeprogramming.org/" target="_blank">Extreme Programming</a> ou alguma outra qualquer. Um detalhe também importante é que nosso time tem apenas 10 pessoas, o que contraria um pouco o modelo tradicional que diz que com mais gente o trabalho anda mais rápido.</p>
<p><strong>Se você gosta de Big Brother Brasil e deseja expressar sua opinião sobre algum brother, entre na seção de aplicativos do orkut e procure por: </strong><span class="status-body"><span class="entry-content"><strong>BBB &#8211; Voodoo Brother.</strong></span></span>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://codificando.com/2009/02/bbb9-e-o-brother-que-voce-nao-gosta-no-ar/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Assine seus códigos</title>
		<link>http://codificando.com/2009/02/assine-seus-codigos/</link>
		<comments>http://codificando.com/2009/02/assine-seus-codigos/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 19:26:21 +0000</pubDate>
		<dc:creator>Emerson Macedo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[engenharia]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testes]]></category>

		<guid isPermaLink="false">http://codificando.com/?p=58</guid>
		<description><![CDATA[Quem nunca chegou numa empresa ou projeto, deu de cara com um código horroroso e logo disse: Que droga, quem foi o infeliz que fez esse código tosco? Ou o contrário: Quem foi o cara que fez esse código maneiro? &#8230; <a href="http://codificando.com/2009/02/assine-seus-codigos/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Quem nunca chegou numa empresa ou projeto, deu de cara com um código horroroso e logo disse: Que droga, quem foi o infeliz que fez esse código tosco? Ou o contrário: Quem foi o cara que fez esse código maneiro?</p>
<p>Essas situações são muito frequentes, principalmente a primeira, com códigos fedorentos. Por isso, eu adoto uma postura: Sempre assino meus códigos.</p>
<p>O que seria assinar o código? Bem, assinar o código é aquela simples documentação que vem logo acima do arquivo, como por exemplo em Java, usando o famoso javadoc:</p>
<pre class="brush: java;">
package xpto;
import x;
/**
* @author Emerson Macedo
*/
public class Abc {
// ...
}
</pre>
<p>Assinar o código pode parecer meio arrogante mas o objetivo não é esse. O propósito de <a href="http://codificando.com/2009/01/15/os-5-niveis-do-desenvolvedor-nos-testes-automatizados/"><img class="alignright" src="http://codificando.com/wp-content/uploads/2009/02/assinando.jpg" alt="" /></a>assinar o código e se expor. Quando você assina alguma coisa, explicitamente está colocando a sua autoria naquilo, ficando sujeito tanto a críticas, quanto a elogios.</p>
<p>Quando algum pintor faz um quadro, ele sempre vem assinado em alguma parte. Dificilmente o autor dessa obra de arte vai terminar esse quadro antes que ele tenha certeza que está com ótima qualidade (pelo menos na visão dele).</p>
<p>E no que isso implica? Isso implica que você (1) vai pensar 2 vezes antes de colocar aquela habitual gambiarra no seu código, (2) vai pensar bem antes de <a href="http://codificando.com/2009/01/15/os-5-niveis-do-desenvolvedor-nos-testes-automatizados/">concluir alguma coisa sem devidos testes automatizado</a>s e (3) vai ser muito mais responsável com o código que você está desenvolvendo.</p>
<p><strong>Conclusão</strong></p>
<p>Como qualquer desenvolvedor, já desenvolvi códigos ruins em diversos projetos pelos quais passei. Aquele que nunca desenvolveu código fedorento que atire a primeira pedra. Hoje em dia, <a href="http://codificando.com/2008/09/11/codigo-do-panico/">não desprezo a qualidade daquilo que desenvolvo</a>. Acredito muito que quando assinamos nossos códigos e nos damos conta que outro desenvolvedor/programador irá utiliza-lo futuramente, isso gera um maior cuidado com a qualidade.
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://codificando.com/2009/02/assine-seus-codigos/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>A diferença entre Criar e Fabricar</title>
		<link>http://codificando.com/2008/12/a-diferenca-entre-criar-e-fabricar/</link>
		<comments>http://codificando.com/2008/12/a-diferenca-entre-criar-e-fabricar/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 16:35:40 +0000</pubDate>
		<dc:creator>Emerson Macedo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[engenharia]]></category>
		<category><![CDATA[gestão]]></category>
		<category><![CDATA[pragmatic]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://codificando.com/?p=55</guid>
		<description><![CDATA[Sempre que eu ouço a frase &#8220;Fábrica de Software&#8221; meus ouvidos doem bastante. Outro dia, conversando com algumas pessoas, havia um colega que não entendia muito bem a minha aversão por essa tal de &#8220;Fábrica de Software&#8221;. Após explicar que &#8230; <a href="http://codificando.com/2008/12/a-diferenca-entre-criar-e-fabricar/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Sempre que eu ouço a frase &#8220;Fábrica de Software&#8221; meus ouvidos doem bastante. Outro dia, <img class="alignright" src="http://codificando.com/wp-content/uploads/2008/12/fabrica-toyota-p.jpg" alt="" width="285" height="189" />conversando com algumas pessoas, havia um colega que não entendia muito bem a minha aversão por essa tal de &#8220;Fábrica de Software&#8221;. Após explicar que software é um trabalho criativo, ficou uma dúvida entre algumas pessoas. Afinal de contas, qual a diferença entre criar e fabricar?</p>
<p>Passeando um pouco pelo dicionário, algumas definições me chamaram um pouco a atenção:</p>
<ul>
<li>Criar: <strong>inventar</strong>; imaginar; dar existência a; <strong>desenvolver</strong>;</li>
<li>Fabricar: <span id="lblDlpoDefinicao"><span><span class="texto"><span style="cursor: pointer;" ondblclick="javascript:SeleccionaEntrada_v2(getSel(),'0')"><strong>executar</strong> ou fazer executar certos produtos por <strong>processos mecânicos</strong>; </span></span></span></span><span id="lblDlpoDefinicao"><span><span class="texto"><span style="cursor: pointer;" ondblclick="javascript:SeleccionaEntrada_v2(getSel(),'0')"><strong>manufacturar</strong>; </span></span></span></span><span id="lblDlpoDefinicao"><span><span class="texto"><span style="cursor: pointer;" ondblclick="javascript:SeleccionaEntrada_v2(getSel(),'0')"><strong>construir</strong>;</span></span></span></span></li>
</ul>
<p>É difícil perceber a diferença? Acho que não &#8230;</p>
<p>Se formos na <a href="http://pt.wikipedia.org/" target="_blank">Wikipedia</a> podemos encontrar <a href="http://pt.wikipedia.org/wiki/F%C3%A1brica" target="_blank">algumas informações ainda mais relevantes</a>. Vejamos parte do texto:</p>
<blockquote><p>&#8230; trabalhadores <strong>manufaturam bens</strong> ou supervisionam o funcionamento de máquinas que <strong>processam um produto</strong>, transformando-o em outro. A maioria das fábricas atuais têm grandes armazéns e depósitos com equipamentos pesados, utilizados na <strong>produção da linha de montagem</strong> &#8230;</p></blockquote>
<p><a href="http://martinfowler.com/articles/newMethodology.html#SeparationOfDesignAndConstruction" target="_blank">Oito anos atrás, Fowler escreveu sobre isso</a>, explicando claramente que a parte de &#8220;fabricar&#8221; o software é geralmente uma simples task do ant ou um goal do maven ou alguma coisa no rake, etc.</p>
<p><a href="http://www.guj.com.br/posts/list/84053.java" target="_blank">Já foi falado</a> <a href="http://www.guj.com.br/posts/list/59536.java" target="_blank">zilhões de vezes</a> <a href="http://www.guj.com.br/posts/list/66379.java" target="_blank">nos foruns de tecnologia</a> que fábrica presupõe trabalho repetitivo, fazer o mesmo produto várias vezes (você faz o mesmo software várias vezes ou quando precisa de uma cópia simplesmente faz um cp arquivo1 arquivo2?), desenvolvimento em fazes (i.e. waterfall). Portanto, não faz sentido comparar nosso trabalho com trabalho de fábrica.</p>
<p>O trabalho do desenvolvedor é <strong>criar o software</strong>, fazer design do código em todo o tempo, assim como <img class="alignleft" src="http://www.oficina.it/photo/_thumbs/OfiCentral_iStock_000000216119_L1.jpg" alt="" width="202" height="134" />os arquitetos da contrução civil fazem no autocad, ou no bom e velho papel. A diferença é que nós temos a condição de construir (i.e fabricar) o nosso software com <strong>custo &#8220;zero&#8221;. </strong>Não precisamos de pedreiros, tijolos, vigas, argamassa, etc. Agente usa o Ant, Maven, Rake, Make ou wathever ora bolas. É tudo de graça. O resultado do trabalho deles é físico, o nosso são bits e bytes.</p>
<p>O erro sempre foi fazer a associação: <strong>desenvolver = construir/fabricar</strong>. A associação mais correta é <strong>desenvolver = projetar/arquitetar/desenhar</strong>.</p>
<p>Até a próxima &#8230;
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://codificando.com/2008/12/a-diferenca-entre-criar-e-fabricar/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
