<?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>BeckLog: Beck Novaes&#039; Web Log &#187; Desenvolvimento</title>
	<atom:link href="http://www.becklog.org/category/desenvolvimento/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.becklog.org</link>
	<description>Blog pessoal do Beck Novaes</description>
	<lastBuildDate>Wed, 11 Jan 2012 15:31:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Por que geralmente ficamos com a primeira idéia?</title>
		<link>http://www.becklog.org/2010/09/30/por-que-geralmente-ficamos-com-a-primeira-ideia/</link>
		<comments>http://www.becklog.org/2010/09/30/por-que-geralmente-ficamos-com-a-primeira-ideia/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 14:57:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Citações]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.becklog.org/?p=769</guid>
		<description><![CDATA[Todo problema é um mistério a ser resolvido. E como se resolvem mistérios? Levantando pistas, definindo validando e descartando hipóteses. Na busca de solução para problemas as idéias iniciais são como pistas que só o tempo dirá se são boas ou ruins. Quando boas, as pistas lhe aproximam da solução. Quando ruins, as pistas lhe [...]]]></description>
			<content:encoded><![CDATA[<p>Todo problema é um mistério a ser resolvido. E como se resolvem mistérios? Levantando pistas, definindo validando e descartando hipóteses.</p>
<p>Na busca de solução para problemas as idéias iniciais são como pistas que só o tempo dirá se são boas ou ruins. Quando boas, as pistas lhe aproximam da solução. Quando ruins, as pistas lhe afastam dela. Por isto devemos investigar e jamais assumir que a pista é verdadeira. </p>
<p>Agarrar a primeira idéia sem desconfiar dela é como agarrar a primeira pista para desvendar o mistério. Se este mistério for um crime, você corre o sério risco de prender a pessoa errada. Se este mistério for um software, você corre um sério risco de cometer um crime. </p>
<p>Dada a freqüência com que se agarra a primeira idéia em empresas que desenvolvem Software ouso deduzir: ou somos criminosos por natureza ou não sabemos o que somos. Por isso, fica no ar a pergunta: por que geralmente ficamos com a primeira idéia?</p>
<img src="http://www.becklog.org/?ak_action=api_record_view&id=769&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.becklog.org/2010/09/30/por-que-geralmente-ficamos-com-a-primeira-ideia/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Os Desenvolvedores da plataforma Flash sentiram o baque?</title>
		<link>http://www.becklog.org/2010/08/12/os-desenvolvedores-da-plataforma-flash-sentiram-o-baque/</link>
		<comments>http://www.becklog.org/2010/08/12/os-desenvolvedores-da-plataforma-flash-sentiram-o-baque/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 11:22:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://www.becklog.org/?p=740</guid>
		<description><![CDATA[Quando o IPhone saiu sem suporte ao Flash Player as pessoas não deram muita atenção, principalmente porque ninguém imaginava que o IPhone cresceria tão rapido e dominaria quase completamente as estatísticas de acessos à internet via Mobile. Mas veio então o IPad, toda a polêmica envolvendo Apple Vs. Adobe e hype do HTML 5 e [...]]]></description>
			<content:encoded><![CDATA[<p>Quando o IPhone saiu sem suporte ao Flash Player as pessoas não deram muita atenção, principalmente porque ninguém imaginava que o IPhone cresceria tão rapido e dominaria quase completamente as estatísticas de acessos à internet via Mobile. Mas veio então o IPad, toda a polêmica envolvendo Apple Vs. Adobe e hype do HTML 5 e o sinal amarelo ascendeu para a Adobe.  </p>
<p>Os últimos dias me despertaram um sentimento que a comunidade RIA anda meio parada. Por isso resolvi verificar as duas principais listas de discussão em português, a FlexDev e a Flex Brasil, e a principal em Inglês, a FlexCoders.</p>
<p><img src="http://blog.dclick.com.br/wp-content/uploads/flex-brasil.png" alt="" title="flex-brasil" width="382" height="200" class="alignnone size-full wp-image-2630" /></p>
<p><img src="http://blog.dclick.com.br/wp-content/uploads/flex-dev.png" alt="" title="flex-dev" width="491" height="188" class="alignnone size-full wp-image-2631" /></p>
<p><img src="http://blog.dclick.com.br/wp-content/uploads/flex-coders.png" alt="" title="flex-coders" width="430" height="200" class="alignnone size-full wp-image-2632" /></p>
<p>A primeira coisa que se percebe é que é notável como a quantidade de posts vêm caindo. No entanto, o que chama ainda mais atenção é o fato de a quantidade de posts começarem e diminuir depois da data de lançamento do IPad (estopim da gerra Apple Vs. Adobe). Seria isto apenas uma coincidência? </p>
<p><img src="http://blog.dclick.com.br/wp-content/uploads/ipad-release.png" alt="" title="ipad-release" width="500" height="182" class="alignnone size-full wp-image-2633" /></p>
<p>Para piorar a situação tenho visto algumas críticas pesadas contra a Adobe vindo justamente de empresas que mais a apoiavam no passado [<a href="http://flexblog.faratasystems.com/2010/06/22/dissapointed-with-flex-4">1</a>] [<a href="http://flexblog.faratasystems.com/2010/06/22/disappointed-with-adobe">2</a>]. No geral parece que os desenvolvedores não ficaram tão empolgados com o Flex 4, embora conceituamente a tecnologia tenha ficado bem melhor.</p>
<p>Isto sem contar o fato de que cresce o número de pessoas que decidem bloquear o Flash no Browser. Como pode ser visto na imagem abaixo, o add-on que bloqueia o Flash no Chrome é um dos mais baixados (graças aos Designers e as agências que resolvem usar toda sua criatividade para criar banners intrusivos que flutuam sobre o conteúdo).</p>
<p><img src="http://blog.dclick.com.br/wp-content/uploads/flash-block.png" alt="" title="flash-block" width="243" height="481" class="alignnone size-full wp-image-2634" /></p>
<p>Para não dizer que só tem notícia ruim para o Flash, há um tempo atrás o Google se pronunciou <a href="http://apiblog.youtube.com/2010/06/flash-and-html5-tag.html">dizendo que o Flash ainda é a melhor alternativa para a distribuição de vídeos no Youtube.</a> De fato, o player do Youtube em Flash é muito superior ao do HTML5 (tentei usar a versão HTML5 por um tempo mas achei um lixo).</p>
<p>Tenham os desenvolvedores RIA sentido o baque ou não o que eu sei é que esta não é a primeira crise do Flash Player. Ouço falar de Padrões Web há anos e cansei de ver as pessoas que mais advogam os padrões falarem que o Flash morreria logo. No entanto, entra ano sai ano o Flash continua tendo uma grande penetração no mercado. </p>
<p>Para a Adobe fica a missão de ouvir as críticas e tentar aprimorar ainda mais suas ferramentas, pois somos nós, os desenvolvedores e a comunidade que puxamos a adoção das tecnologias. Acredito que a <a href="http://max.adobe.com/">Adobe MAX</a> este ano será uma excelente oportunidade para nós compreendermos melhor o que a Adobe tem em vista para os próximos anos. </p>
<p>Para a comunidade, vale apenas lembrar o fato de que o ser humano é muito &#8220;Maria vai com as outras&#8221;. E se você acredita mesmo na plataforma Flash, observe com atenção este movimento do HTML5, mas seja critico o suficiente para analisar a tecnologia e não se deixar envolver simplemente pelo <a href="http://en.wikipedia.org/wiki/A_hype">Hype</a>. </p>
<p><object width="500" height="300"><param name="movie" value="http://www.youtube.com/v/Ijop2hvPNFE?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Ijop2hvPNFE?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="300"></embed></object></p>
<img src="http://www.becklog.org/?ak_action=api_record_view&id=740&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.becklog.org/2010/08/12/os-desenvolvedores-da-plataforma-flash-sentiram-o-baque/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>O Cliente é o Gerente: Quase nunca acontece</title>
		<link>http://www.becklog.org/2010/07/19/o-cliente-e-o-gerente-quase-nunca-acontece/</link>
		<comments>http://www.becklog.org/2010/07/19/o-cliente-e-o-gerente-quase-nunca-acontece/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 17:37:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Crítica]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[satira]]></category>
		<category><![CDATA[simpsons]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.becklog.org/?p=659</guid>
		<description><![CDATA[Qualquer semelhança com a realidade não é mera coincidência. Isto quase nunca acontece, não é mesmo? Este episódio foi editado. Aqui está o link para informações sobre o original no site da Fox.]]></description>
			<content:encoded><![CDATA[<p>Qualquer semelhança com a realidade não é mera coincidência. Isto quase nunca acontece, não é mesmo? </p>
<p><script type='text/javascript' src='http://www.becklog.org/wp-content/plugins/hana-flv-player/flowplayer3/example/flowplayer-3.2.6.min.js'></script>
<div >
<div id='hana_flv_flow3_1' style='display:block;width:480px;height:272px;' title=""></div>
</div>

			<script  type='text/javascript'>
		flowplayer('hana_flv_flow3_1', { src: 'http://www.becklog.org/wp-content/plugins/hana-flv-player/flowplayer3/flowplayer-3.2.7.swf', wmode: 'transparent' }, { 

    		clip:  { 
    			url: 'http://www.becklog.org/wp-content/uploads/2010/07/gerenteCliente.flv',
        		scaling: 'scale', autoPlay: false, autoBuffering: true 
				   , onFinish : function () { this.seek(0); } 
	        }

		}); 
			</script></p>
<p>Este episódio foi editado. <a href="http://www.thesimpsons.com/episode_guide/0215.htm">Aqui está </a>o link para informações sobre o original no site da Fox. </p>
<img src="http://www.becklog.org/?ak_action=api_record_view&id=659&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.becklog.org/2010/07/19/o-cliente-e-o-gerente-quase-nunca-acontece/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://www.becklog.org/wp-content/uploads/2010/07/gerenteCliente.flv" length="28110583" type="video/x-flv" />
		</item>
		<item>
		<title>A Alienação Tecnologica e as Fábricas de Software</title>
		<link>http://www.becklog.org/2010/03/24/a-alienacao-tecnologica-e-as-fabricas-de-software/</link>
		<comments>http://www.becklog.org/2010/03/24/a-alienacao-tecnologica-e-as-fabricas-de-software/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 16:56:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Crítica]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Miscelânea]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.becklog.org/?p=608</guid>
		<description><![CDATA[&#8220;Uma boa empresa não é aquela que usa a tecnologia para construir Softwares, mas sim a que usa a tecnologia para destruir problemas. Talvez por isso muitas Fábricas de Software não são boas empresas.&#8221; Coloquei as frases acima no Twitter, mas acho que a reflexão merece mais do que um micro-post. Gosto também de duas [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Uma boa empresa não é aquela que usa a tecnologia para construir Softwares, mas sim a que usa a tecnologia para destruir problemas. Talvez por isso muitas Fábricas de Software não são boas empresas.&#8221;</p>
<p>Coloquei as <a href="http://twitter.com/BeckNovaes/status/10981018194">frases acima no Twitter</a>, mas acho que a reflexão merece mais do que um micro-post. </p>
<p>Gosto também de duas outras frases cujo sentido apontam na mesma direção. A primeira, de autor desconhecido, é mais ou menos assim: &#8220;A Informática surgiu para resolver problemas que não existiam antes dela&#8221;.  A segunda, do Jamie Zawinsk, diz: &#8220;Ao ver um problema algumas pessoas poderiam pensar: &#8216;acho que posso resolver com regular expressions&#8217;. Agora elas têm dois problemas&#8221;. </p>
<p>O que todas estas frases têm em comum? Elas sintetizam bem a Alienação Tecnológica que as empresas e os profissionais de TI têm ajudado disseminar com bastante afinco &#8211; e que tem um pouco a ver com o que tenho falado <a href="http://www.becklog.org/2009/08/06/ti-centrismo-vs-usuario-centrismo/">aqui</a> e <a href="http://www.becklog.org/2009/08/31/trade-off-com-foco-no-valor-agregado/">aqui</a>. </p>
<p>A Alienação Tecnologica é a utilização da tecnologia como um fim em si e não como um meio para a solução de problemas. Em outras palavras, o pessoal de TI começa com o intuito de resolver um problema do mundo real, mas acaba voltando as prioridades para um código fonte, uma arquitetura, um banco de dados, um Design Pattern, uma técnica nova ou uma documentação os deixam felizes, mas não o usuário. Isso acontece porque no meio do caminho estas pessoas de TI estavam tão preocupadas com o <a href="http://www.becklog.org/2009/08/06/ti-centrismo-vs-usuario-centrismo/">TI-Centrismo</a> que já não sabem mais o que realmente importa. E não estou falando apenas da burocracia que os movimentos ágeis tão na moda atualmente estão tentando derrubar. Estou falando daqueles casos (não raros) onde as pessoas pouco se importam com a utilização de fato do Software pois seus artefatos (código, arquitetura, Banco, etc) são seu motivo de orgulho.</p>
<p>Por inúmero fatores isso acontece com muitas Fábricas de Software. Aliás, vamos pensar por um instante sobre o termo Fábrica. Qualquer tipo de fábrica, exceto a de Software, é definida por uma linha de montagem que produz algo que já existe (escopo mais que fechado e técnicas já conhecidas e testadas). Mas as Fábricas de Software são as únicas Fábricas que precisam produzir algo que ninguém sabe o que é ainda.</p>
<p>A Fábrica de Software é, em minha opinião, uma tentativa exagerada de industrializar ao extremo algo que por natureza têm muitos elementos que tendem a ser &#8220;artesanais&#8221; (soluções específicas para problemas específicos). Não estou dizendo que não devemos ter métodos e técnicas que facilitem este processo, mas voltando ao início do post, o problema é quando estas técnicas e métodos passam a ter razão de existir em si: a Fábrica fabrica o que não se conhece, mas o que importa é algo foi entregue. </p>
<p>Isto é como se a Ford se orgulhasse mais do seu processo de produção do que dos carros que as pessoas compram por escolha própria. Um engenheiro ou o Designer de carros da Ford deve se orgulhar ao ver as pessoas passeando em seus carros pelas ruas do mundo. Por outro lado, muitos profissionais de TI se contentam com algo que só eles conseguem enxergar. Isso é ou não é um caso evidente de alienação?</p>
<img src="http://www.becklog.org/?ak_action=api_record_view&id=608&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.becklog.org/2010/03/24/a-alienacao-tecnologica-e-as-fabricas-de-software/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Segurança: Problema só com o Flash ou também com os desenvolvedores &#8220;desatentos&#8221;?</title>
		<link>http://www.becklog.org/2009/11/13/seguranca-problema-so-com-o-flash-ou-tambem-com-os-desenvolvedores-desatentos/</link>
		<comments>http://www.becklog.org/2009/11/13/seguranca-problema-so-com-o-flash-ou-tambem-com-os-desenvolvedores-desatentos/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 14:07:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://www.becklog.org/?p=524</guid>
		<description><![CDATA[O artigo é eloqüente, conciso e racional. Ele fala de uma &#8220;falha&#8221; na política de segurança do Flash Player que praticamente coloca &#8220;qualquer&#8221; site na Web que permite upload de SWF sob perigo. Como tudo na Web basta sair uma notícia ruim sobre uma tecnologia qualquer para os &#8220;haters&#8221; desta tecnologia sairem do armário. E [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.computerworld.com/s/article/9140768/Flash_flaw_puts_most_sites_users_at_risk_say_researchers?taxonomyId=17&#038;pageNumber=1">O artigo é eloqüente</a>, conciso e racional. Ele fala de uma &#8220;falha&#8221; na política de segurança do Flash Player que praticamente coloca &#8220;qualquer&#8221; site na Web que permite upload de SWF sob perigo. </p>
<p>Como tudo na Web basta sair uma notícia ruim sobre uma tecnologia qualquer para os &#8220;haters&#8221; desta tecnologia sairem do armário. E se eles já têm uma tendência de cair matando quando vêem algo &#8220;a seu favor&#8221; imaginem o que acontece quando eles lêem coisas do tipo: </p>
<p>&#8220;A única saída para o usuário final é bloquear o Flash completamente.&#8221;</p>
<p>Pronto, agora os haters pulam de alegria. E, sim! A afirmação acima é verdadeira! (Agora os haters estão no céu). E cegos pela sua raiva eles começam a questionar que as aplicações RIA feitas em Flex/Flash não são seguras. Mas falar isso é uma grande burrice. </p>
<p>Uma aplicação WEB sem Flash não é mais segura do que uma com Flash por causa disso!!! (<a href="http://www.foregroundsecurity.com/MyBlog/flash-origin-policy-issues.html">leiam  o artigo novamente</a>, e prestem BEM atenção). Nós que desenvolvemos RIA podemos fazê-las tão seguras quanto qualquer outra tecnologia. O que não podemos é garantir que todo mundo que desenvolve para a Web estará precavido quanto a este problema do upload do SWF. Portanto, o usuário corre risco não pelas RIAS que nós desenvolvemos, mas sim pelas aplicações que os outros desenvolvedores que não têm conhecimento disso desenvolvem (seja RIA ou não). Por isso, e SOMENTE por isso, a solução para o usuário final seria bloquear o Flash de vez (pelo menos por enquanto). Mas já que dificilmente o Flash vai ser abolido da internet  (para infelicidade dos Haters), por enquanto, o que nos resta é fazer a nossa parte e deixar as nossas aplicações seguras (repito, seja RIA ou não, pois qualquer aplicação quer permite upload de SWF estaria sob risco). Não podemos responder pelos outros, mas podemos falar por nós. </p>
<img src="http://www.becklog.org/?ak_action=api_record_view&id=524&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.becklog.org/2009/11/13/seguranca-problema-so-com-o-flash-ou-tambem-com-os-desenvolvedores-desatentos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>O Imersão Adobe Flex começa neste sábado</title>
		<link>http://www.becklog.org/2009/11/05/o-imersao-adobe-flex-comeca-neste-sabado/</link>
		<comments>http://www.becklog.org/2009/11/05/o-imersao-adobe-flex-comeca-neste-sabado/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 16:04:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.becklog.org/?p=503</guid>
		<description><![CDATA[Se você ainda está com dúvida em fazer ou não este Treinamento, talvez o vídeo abaixo possa ajudar:]]></description>
			<content:encoded><![CDATA[<p>Se você ainda está com dúvida em fazer ou não <a href="http://egenial.com.br/imersao-flex/como.html">este Treinamento</a>, talvez o vídeo abaixo possa ajudar:</p>
<p><embed src="http://blip.tv/play/gs0fgazlLgA" type="application/x-shockwave-flash" width="500" height="310" allowscriptaccess="always" allowfullscreen="true"></embed></p>
<img src="http://www.becklog.org/?ak_action=api_record_view&id=503&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.becklog.org/2009/11/05/o-imersao-adobe-flex-comeca-neste-sabado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trade-off com Foco no Valor Agregado</title>
		<link>http://www.becklog.org/2009/08/31/trade-off-com-foco-no-valor-agregado/</link>
		<comments>http://www.becklog.org/2009/08/31/trade-off-com-foco-no-valor-agregado/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 12:00:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Outbox]]></category>

		<guid isPermaLink="false">http://www.becklog.org/?p=412</guid>
		<description><![CDATA[Ninguém compra um carro apenas por causa do motor. As pessoas não buscam apenas resolver seu problema de transporte. Hoje em dia, ninguém mais compra um celular só porque ele faz ligações. Então, por que o Software tem apenas que resolver um problema, mesmo que de forma feia? Desenvolvimento de Software, ao contrário de outras [...]]]></description>
			<content:encoded><![CDATA[<p>Ninguém compra um carro <em>apenas</em> por causa do motor. As pessoas não buscam apenas resolver seu problema de transporte. Hoje em dia, ninguém mais compra um celular só porque ele faz ligações. Então, por que o Software tem apenas que resolver um problema, mesmo que de forma feia?</p>
<p>Desenvolvimento de Software, ao contrário de outras áreas como construção civil e arquitetura ainda é uma área relativamente nova.  Nestas e em inúmeras outras áreas num primeiro instante não havia preocupação com a estética por uma questão de prioridade: prioriza-se a solução do problema essencial. Mas passada esta fase (que acredito que estamos chegando próximo no que diz respeito ao desenvolvimento de software) começa a pesar os fatores humanos, os fatores psicológicos, etc. Como diz <a href="http://pt.wikipedia.org/wiki/Donald_Norman">Donald Norman</a> &#8220;As coisas mais bonitas funcionam melhor&#8221;. Por que? Porque somos seres humanos e as coisas mais bonitas colocam nosso cérebro num estado muito mais propicio para uma determinada atividade: seja dirigir um carro, manusear um celular ou usar uma aplicação. Aqui entra uma outra tese minha junto com o <a href="http://www.becklog.org/2009/08/06/ti-centrismo-vs-usuario-centrismo/">TI-Centrismo Vs. Usuário-Centrismo</a> que é o <strong>Trade-off com Foco no Valor Agregado</strong>.</p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/ser-ou-nao-ser.jpg" alt="" title="Ser ou não ser?" width="468" height="414" class="alignnone size-full wp-image-384" /></p>
<p>Desenvolver softwares é também saber tomar as decisões certas com <a href="https://twitter.com/#!/BeckNovaes/status/117296823013605376">foco no todo e não em partes isoladas</a>. E este conceito é sutil mas poderoso (e acredito que possui certa relação com a <a href="http://en.wikipedia.org/wiki/Gestalt_psychology">Gestalt</a>). Daí a importância do <a href="http://en.wikipedia.org/wiki/Trade-off">Trade-off</a> &#8211; que para quem não sabe é, basicamente, você fazer uma escolha entre um número de opções mas sempre sair perdendo umas coisas e ganhando outras. O grande problema do Trade-off em desenvolvimento do Software é que ele é influenciado pelo <a href="http://www.becklog.org/2009/08/06/ti-centrismo-vs-usuario-centrismo/">TI-Centrismo</a> e não pelo valor agregado ao produto final <a href="http://www.becklog.org/2011/11/09/para-que-voce-faz-software/">como deveria ser</a>.</p>
<p>Vejam exemplos:</p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/tradeoff-1.png" alt="" title="Trade-off Tradicional" width="441" height="145" class="alignnone size-full wp-image-385" /></p>
<p>A tabela acima deixa duas coisas bem claras:<br />
1. Desenvolvimento sempre ganha<br />
2. Estética sempre perde</p>
<p>Porém, dada a premissa de que a estética é importante porque somos seres humanos, será que, visando o produto final, visando a experiência como um todo, não seria interessante considerar eventualmente fazer um <a href="http://www.becklog.org/wp-content/uploads/2009/08/pog-do-bem2.png">POG do Bem</a> para oferecer uma melhor estética pois o usuário vai se sentir melhor com a sua aplicação? Será que você não deveria considerar que a Usabilidade não precisa ser a melhor do mundo, num dado contexto, para deixar o Designer Gráfico mais livre para trabalhar a estética? <em>(sim, a Usabilidade cria restrições para o Designer Gráfico. Perguntem aos Designers se eles não se sentem um tanto limitados pelos Wireframes).</em></p>
<p>Quando eu falei da idéia do Trade-off com foco no valor agregado com o <a href="http://www.nahipermidia.com/">Luciano Lobato</a> da DClick ele disse: mas todo Trade-off não deveria ser com foco no valor agregado? Sim, deveria, mas não é! Por quê? Porque na maioria das empresas cada tipo de profissional olha para o seu próprio umbigo e não para o software como produto final.</p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/motal-kombat1.jpg" alt="Motal Kombat" title="Motal Kombat" width="500" height="319" class="alignnone size-full wp-image-452" /></p>
<p>Que designers e programadores não se bicam não é novidade. Mas isto não é uma questão pessoal (pelo menos não no começo) . O problema, paradoxalmente, é que cada um de nós quer fazer o melhor trabalho possível. O Arquiteto da Informação quer oferecer a melhor usabilidade. O Programador quer fazer o melhor código. E o Designer quer fazer a aplicação mais bonita. Mas como cada um trabalha de forma independente, o que geralmente acontece é que um complica a vida do outro e ninguém sabe de fato o que é mais importante para a experiência final do usuário como um todo &#8211; chamo isto de <strong><em>Egocentrismo Funcional</em>: o ego criado pela função que você exerce o impede de enxergar o que é melhor para o produto final</strong>. Desta forma, o programador se recusa a implementar algo muito complexo definido pelo arquiteto de informação &#8211; mas perde um baita tempo aplicando patterns desnecessários. O arquiteto de informação se recusa a mudar um wireframe sugerido pelo designer para deixar as coisas mais bonitas &#8211; e não pensa que talvez tal mudança agregue muito mais em estética do que perde em Usabilidade. Enfim, quando nenhum destes profissionais olham para o software como um todo, o que eles mais fazem é criar restrições que impactam negativamente o trabalho dos demais. E, além disso, quando se trata de tomar uma decisão isto não é deliberado e sim imposto por uma questão hierárquica (quem manda) ou pelo <a href="http://www.becklog.org/2009/08/06/ti-centrismo-vs-usuario-centrismo/">TI-Centrismo</a> (Estética perde sempre. Usabilidade perde sempre.)</p>
<p>O <a href="http://www.becklog.org/wp-content/uploads/2009/08/pog-do-bem2.png">POG do Bem</a> nada mais é do que um exemplo de Trade-off com foco no valor agregado envolvendo programação e estética/usabilidade. Vamos agora a um exemplo de Usabilidade Vs. Estética. </p>
<p>Antigamente na DClick os arquitetos de informação definiam a usabilidade e depois restava ao Designer colorir os Wireframes. Certa vez uma alteração proposta pelo designer estava para ser recusada (como freqüentemente acontece) com argumentos dos arquitetos tais como:<br />
- Isso é ruim. O usuário terá que dar dois cliques no lugar de um.<br />
Como eu estava de fora, observando o produto como um todo, eu perguntei:<br />
- Mas espere um pouco! Com que freqüência ele terá que dar dois cliques?<br />
- Não muita. &#8211; Responderam os arquitetos.<br />
- Então isso é realmente um problema?<br />
- Não, não é um problema grande!<br />
- Então devemos priorizar a estética que no final das contas vai agregar mais ao produto, visto que a perda de usabilidade neste caso é insignificante.</p>
<p><em>Suponha que na sua empresa o Arquiteto de Informação tenha mais &#8220;moral&#8221; que o designer, o que aconteceria? Suponha que o <a href="http://www.becklog.org/2009/08/06/ti-centrismo-vs-usuario-centrismo/">TI-Centrismo</a> impere na sua empresa e que a mudança proposta pelo designer vai gerar certa complexidade, o que aconteceria?</em></p>
<p>Isto é Trade-off com foco no valor agregado! Você precisa abstrair e pensar num contexto maior: o produto final. Assim, não se deve tomar como regra a tabela de tabela de trade-off tradicional onde o desenvolvimento sempre ganha e a estética sempre perde. Não deixe esta tabela, que talvez esteja implicitamente arraigada na cultura da sua empresa, influenciar você!</p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/rules.jpg" alt="" title="Break the Rules" width="300" height="225" class="alignnone size-full wp-image-387" /></p>
<p>O que temos que ter em mente é que nosso cérebro (novamente ele) não avalia nada isoladamente. Assim, o usuário falar se uma aplicação é boa depende do conjunto da obra. Por isso precisamos encontrar um equilíbrio entre a estética e a parte funcional. As vezes o programador deve deixar de fazer algo assim tão otimizado, pois talvez não seja necessário, para dedicar mais tempo na implementação de uma animação que agrega valor ou fazer bem um skin numa parte do software que o usuário passa a maior parte do tempo. As vezes você deve deixar de querer a melhor usabilidade do mundo se o problema de usabilidade não for assim tão grave e, por outro lado, isto deixa o designer livre para fazer algo realmente mais bonito. Por que? Porque é disso que o usuário vai lembrar quando ele pensar sobre o software. Não digo que ele vai lembrar APENAS da estética. Não digo que ele vai lembrar APENAS do funcional. Ele vai lembrar do conjunto da obra (<a href="http://en.wikipedia.org/wiki/Gestalt_psychology">Gestalt</a> novamente). Ele vai lembrar das animações e isso o fará pensar que, junto com outras coisas, o software é bom. Ele vai lembrar do que ele pode fazer (funcionalidades) e isso o fará pensar que o software, em conjunto com a estética, é bom. <strong>É isto que é a experiência do usuário: o todo, não as partes isoladas.</strong>  Então, refazendo a tabela de trade-off ela ficaria assim:</p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/tradeoff-2.png" alt="" title="Trade-off com foco no valor agregado" width="484" height="127" class="alignnone size-full wp-image-388" /></p>
<p>Isto é Trade-off com foco no valor agregado e não em paradgmas arraigados na cultura das organizações influenciados pelo <a href="http://www.becklog.org/2009/08/06/ti-centrismo-vs-usuario-centrismo">TI-Centrismo</a> ou por algum tipo de hierarquia burra. Afinal de contas, <a href="http://www.becklog.org/2011/11/09/para-que-voce-faz-software/">para quê você faz software?</a></p>
<img src="http://www.becklog.org/?ak_action=api_record_view&id=412&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.becklog.org/2009/08/31/trade-off-com-foco-no-valor-agregado/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Não faça o que os usuários querem! Faça o que eles precisam!</title>
		<link>http://www.becklog.org/2009/08/11/nao-faca-o-que-os-usuarios-querem-faca-o-que-eles-precisam/</link>
		<comments>http://www.becklog.org/2009/08/11/nao-faca-o-que-os-usuarios-querem-faca-o-que-eles-precisam/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 12:15:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Crítica]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Outbox]]></category>

		<guid isPermaLink="false">http://www.becklog.org/?p=308</guid>
		<description><![CDATA[“Não ouça os compradores, eles não sabem o que querem” – Steve Jobs. Algo parecido acontece com os usuários em minha opinião. “Saber o que quer” é diferente de “saber o que precisa”. O usuário sabe o que quer, mas você NÃO DEVE fazer o que ele quer, você deve fazer o que ele precisa! [...]]]></description>
			<content:encoded><![CDATA[<p>“Não ouça os compradores, eles não sabem o que querem” – Steve Jobs.</p>
<p>Algo parecido acontece com os usuários em minha opinião.</p>
<p><strong>“Saber o que quer”</strong> é diferente de <strong>“saber o que precisa”</strong>. O usuário sabe o que quer, mas você <strong>NÃO DEVE</strong> fazer o que ele quer, você deve fazer o que ele precisa!</p>
<p>O que usuário quer num primeiro momento vai deixá-lo com a falsa impressão que o projeto está indo bem. Mas depois de um tempo ele verá que não é bem assim. Depois de um tempo ele vai querer mudar para o que ele precisava mas não sabia.</p>
<p>O problema de desenvolver com foco no que o usuário quer é que isso é baseado em desejo e como tal é rotineiramente distorcido pelas impressões. Desenvolver baseado no desejo dos usuários o leva a assumir premissas e criar restrições erradas para o desenvolvimento do Software. Isso complicará o seu projeto e provavelmente levará a resultados pouco satisfatórios. O problema é que o usuário vai culpar você por isso e nem vai lembrar das informações imprecisas que ele lhe passou sobre o que ele desejava.</p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/requisitos-dilbert1.jpg" alt="" title="Requisitos Dilbert" width="500" height="352" class="alignnone size-full wp-image-315" /></p>
<p>Sim, o usuário não vai lhe dizer o que ele precisa porque ele não sabe! Pior, por sua natureza, entender o que o usuário realmente precisa é mais &#8220;arte&#8221; do que ciência. Você precisa saber lidar com pessoas. Você precisa saber que o usuário é um ser humano como outro qualquer e que está muito confuso sobre o seu problema. O usuário define seus softwares tal como um casal apaixonado olha para o céu e vê cachorrinhos nas nuvens. E ele faz isso porque o nosso cérebro funciona assim: por associações. É por isso que vira e mexe ele olha outro software que não tem nada a ver com o seu problema e diz: eu preciso disso! Então você começa a desenvolver e aprende a duras penas que não era nada daquilo&#8230; e você muda um pouco aqui, muda um pouco ali e quando vê já está com um Software Frankenstein nas mãos. </p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/dogcloud.jpg" alt="" title="Nuvem Cachorrinho" width="500" height="352" class="alignnone size-full wp-image-321" /></p>
<p><em>O usuário define seus softwares tal como um casal apaixonado olha para o céu e vê cachorrinhos nas nuvens.</em></p>
<p>É neste ponto que você deve deve ter a &#8220;astúcia&#8221; de abstrair os desejos do usuário, considerar as informações relevantes sobre o que ele está lhe falando e propor soluções que, pelo seu conhecimento, devem agregar mais valor do que aquilo que o usuário pensava antes. E você terá que saber argumentar com ele sobre esta &#8220;nova&#8221; solução. Porém, compre mesmo esta briga! Não desista tão facilmente de convencê-lo a &#8220;fazer do seu jeito&#8221;. Demonstre confiança no que você esta falando. Baseie-se em estudos, fatos, exemplos. Conquiste a confiança dele antes de qualquer coisa. Não existe receita de bolo para isso e eu acredito que é por isso que estes templates de Casos de Uso ou qualquer outra coisa do tipo falham. Não me refiro ao artefato em si, mas o modo como ele é concebido: geralmente um processo burocrático, formal, nada humano e extremamente chato! </p>
<p>Finalmente, quando você consegue fazer <strong>O QUE O USUÁRIO PRECISA</strong> pode até ser que exista algum atrito no inicio – porque ele ainda não tem certeza que precisa daquilo. Mas conforme o tempo passa ele entenderá melhor porque as coisas estão tomando o rumo que estão tomando – ele aprende junto com você o real problema. E eis que o usuário passa a querer o que ele precisa e é aí que está a chave do sucesso.</p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/user-happy.jpg" alt="" title="User Happy" width="425" height="282" class="alignnone size-full wp-image-322" /></p>
<p><strong>Nota:</strong> Este post é uma &#8220;extensão&#8221; do comentário que fiz <a href="http://blog.mxml.com.br/voce-esta-preparado-para-dizer-o-que-estas-precisando">neste outro post</a>.</p>
<img src="http://www.becklog.org/?ak_action=api_record_view&id=308&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.becklog.org/2009/08/11/nao-faca-o-que-os-usuarios-querem-faca-o-que-eles-precisam/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>TI-Centrismo Vs. Usuário-Centrismo</title>
		<link>http://www.becklog.org/2009/08/06/ti-centrismo-vs-usuario-centrismo/</link>
		<comments>http://www.becklog.org/2009/08/06/ti-centrismo-vs-usuario-centrismo/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 12:06:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Crítica]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Outbox]]></category>

		<guid isPermaLink="false">http://www.becklog.org/?p=279</guid>
		<description><![CDATA[Um dos problemas de desenvolvimento do Software, especialmente no Brasil, é o TI-Centrismo. O TI-Centrismo prega que TI é o centro do Universo. Desta forma, muitas das decisões tomadas no ciclo de vida de desenvolvimento do Software visam &#8220;proteger&#8221; TI. - &#8220;Não pudemos mudar isso, é padrão de TI!&#8221; = TI-Centrismo - &#8220;Não dá para [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos problemas de desenvolvimento do Software, especialmente no Brasil, é o TI-Centrismo.</p>
<p>O TI-Centrismo prega que TI é o centro do Universo. Desta forma, muitas das decisões tomadas no ciclo de vida de desenvolvimento do Software visam &#8220;proteger&#8221; TI.<br />
- &#8220;Não pudemos mudar isso, é padrão de TI!&#8221; = TI-Centrismo<br />
- &#8220;Não dá para fazer assim, o banco não permite&#8221; = TI-Centrismo<br />
- &#8220;Não vou deixar meu código feio assim. Deixa essa animação pra lá&#8221; = TI-Centrismo<br />
- &#8220;Vamos fazer o Café com Leite, senão vai dar muito trabalho.&#8221; = TI-Centrismo</p>
<p>Precisamos mudar isso! Precisamos deixar o TI-Centrismo e adotar o Usuário-Centrismo. Pode não parecer mais isso muda muita coisa.</p>
<p>Programadores odeiam código feio. Por outro lado a parte estética da aplicação e as animações são sempre deixados para o final. O problema? Bem, muitas vezes perde-se muito tempo tentando fazer aquela arquitetura super hiper robusta com o super hiper design pattern onde não precisa.</p>
<p>Mas por que a estética, incluindo animação é importante? Porque isso deixa o usuário num estado mental muito melhor. Isso faz com que o usuário:</p>
<p>1. Perdoe erros mais facilmente<br />
2. Tenha maior pré-disposição para aprender a mexer na aplicação</p>
<p>Fizeram uma experiência com dois caixas eletrônicos idênticos em termos de usabilidade e implementação. Um bonito e outro feio. O Caixa mais bonito teve uma avaliação muito melhor do que o caixa mais feio. No Caixa mais feio as pessoas reclamaram muito mais dos erros (propositais) do que no caixa mais bonito. Uma coisa é o usuário bater o olho numa coisa bonita e falar: &#8220;Uau&#8230; que legal isso. Bem, agora deixa eu ver como eu uso!&#8221;. Outra coisa é ele falar &#8220;Nossa! Que coisa medonha, como eu uso isso?&#8221; O estado mental é tudo. A motivação é tudo. E coisas feias definitivamente desmotivam.</p>
<p>Quando abandonamos o TI-Centrismo e adotamos o Usuário-Centrismo nossa percepção muda. Eu prefiro perder tempo fazendo uma animação que vai agregar mais valor à experiência do usuário do que aplicando aquele super ultra design pattern que li no ultimo livro que ostento na minha estante e que só vai servir para eu exercitar o que aprendi. E isso tem a ver com outra coisa que eu chamo de Tradeoff com foco no valor agregado (assunto para um outro post).</p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/galileu1.jpg" alt="" title="Galileu" width="289" height="343" class="alignnone size-full wp-image-292" /><br />
<em>Em muitos casos o TI-Centrismo é como uma religião. Só espero não ser condenado como <a href="http://pt.wikipedia.org/wiki/Galileu_Galilei#A_condena.C3.A7.C3.A3o_de_Galileu_pelo_Santo_Of.C3.ADcio">Galilei Galilei</a> por tentar mostrar que o centro do Universo não é o que os devotos pensam. </em></p>
<p>Ao adotar o Usuário-Centrismo comecei a me perguntar se os POGs que tanto incomodam os programadores que pregam boas práticas em 100% do Software (TI-Centrismo) são realmente um mal em todos os contextos. Eu ousaria dizer que, no Usuário-Centrismo existe o <strong>POG do Mal</strong> e o <strong>POG do Bem</strong>. Imagine que você precisa implementar uma animação em Flex e que, como um bom programador, você tentou fazer da melhor forma possível. Mas não teve jeito! Você vai ter que colocar um Timer para fazer funcionar perfeito (típico POG para resolver problemas de tempo em animações em Flex). Mas você é um programador &#8220;bonzão&#8221;. Você jamais vai fazer este POG. Então você se recusa. Afinal de contas, para quê animação, não é mesmo? Mas a pergunta é: Tal animação vai agregar valor à experiência do usuário? Sim! O POG vai ser fonte potencial de problemas? Não! O POG vai ser difícil dos programadores entender? Não (nada que um comentário simples não resolva). Então, por que que eu vou me recusar de fazer algo que mais agrega à experiência do usuário do que, de fato, prejudica TI? Porque eu sou adepto do TI-Centrismo. Eu não faço software para o usuário, eu faço para mim. Para o meu ego.</p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/pog-do-bem2.png" alt="" title="POG do Mal Vs. POG do Bem" width="445" height="517" class="alignnone size-full wp-image-299" /><br />
<em>Eu quis manter o diagrama acima simples e por isso o fiz &#8220;incompleto&#8221;. No caso da complexidade, por exemplo, mesmo que POG pareça &#8220;comprometer a complexidade&#8221; é preciso colocar isto na balança pois também acredito que não há mal algum em algo complexo, encapsulado e que pouco vai ser mexido. Mais um vez, é o que eu chamo de Tradeoff com foco no valor agregado.</em></p>
<p>O TI-Centrimo começa nas Universidades ou quando o iniciante está aprendendo a programar. Nesta época, sem experiência e capacidade para julgar, os professores colocam na cabeça das pessoas que a performance do sistema é um problema independente do contexto. Em outras palavras, aprende-se que sempre se deve otimizar um simples &#8220;for&#8221; (tentar transformar 200 iterações em 100 por exemplo). Aprende-se que se deve preocupar com a performance desde o início. Mas o que não é dito é que código otimizado é mais complexo. O que não é dito é que o gargalo de performance corresponde a um percentual muito pequeno do código do seu software. O que não e dito é que você geralmente não sabe onde está este gargalo e que no final das contas você vai perder muito tempo tentando otimizar código onde não é preciso, adicionando complexidade ao seu código e deixando de fazer outras coisas que agregam mais valor. Isto é TI-Centrismo!</p>
<p><img src="http://www.becklog.org/wp-content/uploads/2009/08/teacher.png" alt="" title="Teacher" width="250" height="238" class="alignnone size-full wp-image-301" /></p>
<p>O TI-Centrismo cria tantas restrições para se fazer um bom trabalho que Software de qualidade do ponto de vista do usuário é praticamente impossível. O TI-Centrismo é respaldado (entre outras coisas) pela alienação do programador. Softwares existem porque alguém precisa usar. Este alguém é o usuário. Ele é a razão do software existir. Mas muitos programadores esquecem disto e o seu código passa a ter uma razão de existir em si. Este programador aplica Design Pattern porque ele gosta. Ele aplica boas práticas porque ele gosta. Ele faz código otimizado porque ele gosta. Mas ele não gosta de perder tempo com animação &#8211; que as vezes é o que vai agregar valor à experiência final. </p>
<p>Você pode adotar o Usuário-Centrismo e continuar apreciando código bonito e de qualidade. A diferença é que o Usuário-Centrismo vai lhe fazer pensar que o seu código tem que ser bom para lhe permitir fazer um Software cada vez melhor não para você, mas sim para o usuário.</p>
<p>O que jamais podemos esquecer é que fazemos softwares para os usuários. Então ele deveria ser o centro do universo, e não TI.</p>
<img src="http://www.becklog.org/?ak_action=api_record_view&id=279&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.becklog.org/2009/08/06/ti-centrismo-vs-usuario-centrismo/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Por que o código dos outros é sempre ruim?</title>
		<link>http://www.becklog.org/2009/07/14/por-que-o-codigo-dos-outros-e-sempre-ruim/</link>
		<comments>http://www.becklog.org/2009/07/14/por-que-o-codigo-dos-outros-e-sempre-ruim/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 15:12:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://www.becklog.org/?p=238</guid>
		<description><![CDATA[Sabe por que o código fonte dos outros é ruim? Porque os programadores começam o projeto sem saber quais partes do Software precisam de código realmente bom e, pior, não refatoram no decorrer do projeto. Estas partes do Software são as que mais sofrem manutenção, as mais sujeitas à bugs e alterações futuras. Para facilitar [...]]]></description>
			<content:encoded><![CDATA[<p>Sabe por que o código fonte dos outros é ruim? Porque os programadores começam o projeto sem saber quais partes do Software precisam de código realmente bom e, pior, não refatoram no decorrer do projeto. Estas partes do Software são as que mais sofrem manutenção, as mais sujeitas à bugs e alterações futuras. Para facilitar a explicação vamos chamar estas partes de Partes Relevantes.</p>
<p>Pois bem, sabemos que o código não vai ficar bom em 100% das partes do Software. Então, a chave é fazer o código bem feito onde ele precisa ser bem feito, ou seja, nas Partes Relevantes. O problema? No início de todo projeto sempre há aquela preocupação em fazer tudo genérico, bonito, organizado, etc. E justamente neste momento sabemos muito pouco sobre as Partes Relevantes. Como resultado, acabamos perdendo muito tempo implementando coisas bonitas e genéricas onde não precisava e isso toma justamente o tempo que deveríamos dedicar à&#8230; quem? quem? às Partes Relevantes do Software. </p>
<p>Então um outro programador assume o nosso código e, obvimante, ele terá que mexer&#8230;bem, você sabe aonde. E não importa o quanto seu código está bom nas outras partes pois ele não vai nem entrar nelas. Você teve sim a preocupação em fazer um código bom, mas fez isso no lugar errado pois não sobrou tempo para fazer no lugar certo. Por isso, o outro programador vai achar que o seu código é uma merda pois ele sabe do código bom que ele é capaz de fazer (mesmo que ele o faça onde não precisa) e está vendo a parte do seu código que até você tem vergonha. Então ele vai ficar dando palpites no seu código &#8211; mas agora é fácil, pois neste momento as Partes Relevantes são evidentes. Até que um dia ele precisa implementar um conjunto de funcionalidades novas e o ciclo se repete (outro assume, critica, faz bem onde não precisava e mal onde precisava). E assim continuamos achando sempre que o nosso código é melhor do que o dos outros pois sempre analisamos no final, numa atividade onde uma das coisas mais importantes é entender realmente o que precisa ser feito. </p>
<p>Mas eu desconfio que este ciclo poderia ser quebrado se a Refatoração fosse levada a sério. Eu disse: <strong>LEVADA A SÉRIO</strong>! Não falo do mito da refatoração no final do projeto. Falo em Refatorar sempre que adicionar uma nova funcionalidade, por menor que seja. Falo em adaptar o código existente para que esta nova funcionalidade se encaixe como uma luva sem a necessidade de &#8220;ifs&#8221; para tratar casos não previstos.  Se o caso não foi previsto eu não vou colocar um &#8220;if&#8221; (ou violar os princípios de OOP) para que funcione, eu vou mudar o código existente para que ela se encaixe como se tivesse sido prevista desde o início. </p>
<p>Quando você Refatora corretamente o código fica melhor com o tempo pois a cada nova funcionalidade você entende melhor o que precisa fazer. A cada funcionalidade nova você entende melhor quais são as Partes Relevantes. Por outro lado, quando você não Refatora o código fica ruim com o tempo pois você está ignorando o que está aprendendo de novo sobre o que precisa de fato ser feito.</p>
<img src="http://www.becklog.org/?ak_action=api_record_view&id=238&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.becklog.org/2009/07/14/por-que-o-codigo-dos-outros-e-sempre-ruim/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

