<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Borba on Software</title>
	
	<link>http://borba.blog.br</link>
	<description>Desenvolvendo Software com Qualidade.</description>
	<lastBuildDate>Tue, 13 Jul 2010 18:20:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BlogDoBorba" /><feedburner:info uri="blogdoborba" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Por que você precisa (re)aprender linguagens funcionais?</title>
		<link>http://feedproxy.google.com/~r/BlogDoBorba/~3/myOsPXYzF2E/</link>
		<comments>http://borba.blog.br/2010/07/por-que-voce-precisa-reaprender-linguagens-funcionais/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 18:20:52 +0000</pubDate>
		<dc:creator>Luiz Borba</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[apresentação]]></category>
		<category><![CDATA[funcional]]></category>

		<guid isPermaLink="false">http://borba.blog.br/?p=181</guid>
		<description><![CDATA[Continuo investindo neste tema. Essa apresentação fiz em maio aqui no CESAR.]]></description>
			<content:encoded><![CDATA[<p>Continuo investindo neste tema. Essa apresentação fiz em maio aqui no <a href="http://www.cesar.org.br" target="_blank">CESAR</a>.</p>
<object width="425" height="348"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=porquevoceprecisaapresenderlinguagensfuncionais-pptx-100713131537-phpapp01"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=porquevoceprecisaapresenderlinguagensfuncionais-pptx-100713131537-phpapp01"  type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="348"></embed></object>
<img src="http://feeds.feedburner.com/~r/BlogDoBorba/~4/myOsPXYzF2E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://borba.blog.br/2010/07/por-que-voce-precisa-reaprender-linguagens-funcionais/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://borba.blog.br/2010/07/por-que-voce-precisa-reaprender-linguagens-funcionais/</feedburner:origLink></item>
		<item>
		<title>Café Ágil</title>
		<link>http://feedproxy.google.com/~r/BlogDoBorba/~3/xWer4QO-JQo/</link>
		<comments>http://borba.blog.br/2010/05/cafe-agil/#comments</comments>
		<pubDate>Thu, 20 May 2010 22:40:08 +0000</pubDate>
		<dc:creator>Luiz Borba</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[agilidade na prática]]></category>
		<category><![CDATA[apresentação]]></category>
		<category><![CDATA[café ágil]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://borba.blog.br/?p=175</guid>
		<description><![CDATA[Sábado passado (dia 15/05/2010) participei do evento Café Ágil promovido pela ThoughtWorks Brasil no Centro de Informática da UFPE. Neste evento eu apresentei o trabalho "TDD Direto das Trincheiras", mesmo trabalho que já havia apresentado no evento Agilidade na Prática em Novembro de 2009. Naquela oportunidade, deixei pra fazer a apresentação em cima da hora [...]]]></description>
			<content:encoded><![CDATA[<p>Sábado passado (dia 15/05/2010) participei do evento <a href="http://www.thoughtworks.com/cafe-agil-em-recife" target="_blank">Café Ágil</a> promovido pela ThoughtWorks Brasil no Centro de Informática da UFPE. Neste evento eu apresentei o trabalho "TDD Direto das Trincheiras", mesmo trabalho que já havia apresentado no evento <a href="http://agilidadenapratica.wordpress.com/" target="_blank">Agilidade na Prática</a> em Novembro de 2009. Naquela oportunidade, deixei pra fazer a apresentação em cima da hora e ficou bem nojentinha (veja <a href="http://borba.blog.br/2010/03/tdd-direto-das-trincheiras/" target="_blank">aqui</a>), desta vez pedi ajuda a Jinmi Lee, que deu uma reformulada no ppt. Vejam a diferença:</p>
<object width="425" height="348"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=tdddiretodastrincheirasv2-100520130711-phpapp01"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=tdddiretodastrincheirasv2-100520130711-phpapp01"  type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="348"></embed></object>
<p>Para uma comunicação eficiente é necessário que tanto o contéudo quanto a apresentação sejam bem feitos. Apenas com a união desses dois fatores será possível passar a mensagem de forma eficaz.</p>
<p>Voltando ao evento, as apresentações de <a href="http://agiletips.blogspot.com/2010/05/cafe-agil-em-recife.html" target="_blank">Paulo Caroli</a> e Jim Webber foram ótimas e a participação do público foi bem legal. Bastante interessante também a mesa redonda (a mesa era retangular mesmo), que além da minha presença e a do Paulo, ainda contou com a participação de Luciano Felix (Provider Sistemas), Cristine Gusmão (UFPE) e Alexandre de Vasconcelos (UFPE). Parabéns a todos pela organização e espero que tenha mais eventos desse nível por aqui.</p>
<img src="http://feeds.feedburner.com/~r/BlogDoBorba/~4/xWer4QO-JQo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://borba.blog.br/2010/05/cafe-agil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://borba.blog.br/2010/05/cafe-agil/</feedburner:origLink></item>
		<item>
		<title>Jogue fora sua IDE</title>
		<link>http://feedproxy.google.com/~r/BlogDoBorba/~3/c_cm_wMWne8/</link>
		<comments>http://borba.blog.br/2010/05/jogue-fora-sua-ide/#comments</comments>
		<pubDate>Thu, 13 May 2010 20:36:51 +0000</pubDate>
		<dc:creator>Luiz Borba</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[code assist]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[turbo c]]></category>

		<guid isPermaLink="false">http://borba.blog.br/?p=167</guid>
		<description><![CDATA[Há algum tempo atrás, um amigo meu (Samuel) me disse que quando estava aprendendo algo novo (um framework ou uma nova linguagem) ele preferia usar o notepad ao invés de uma IDE. Naquele momento eu não dei muita importância, e ainda disse que era frescura, que usar uma IDE era bem melhor. Na hora eu [...]]]></description>
			<content:encoded><![CDATA[<p>Há algum tempo atrás, um amigo meu (Samuel) me disse que quando estava aprendendo algo novo (um framework ou uma nova linguagem) ele preferia usar o notepad ao invés de uma IDE. Naquele momento eu não dei muita importância, e ainda disse que era frescura, que usar uma IDE era bem melhor. Na hora eu não me dei conta, mas hoje vejo que eu já estava com IDE-dependência aguda.</p>
<p>Estou estudando <a title="Scala" href="http://www.scala-lang.org" target="_blank">Scala</a>, e a primeira coisa que procurei para começar o estudo foi uma IDE para começar a dar meus primeiros passos. O problema é que não existe ainda nenhuma IDE que seja boa o suficiente para Scala. Primeiro tentei o Eclipse, mas o plugin está incrivelmente instável, não deveria ser nem disponibilizado para download. O Netbeans não está muito a frente e o IDEA é o melhorzinho, porém com muitos bugs também. Resultado, fiquei com o IDEA e comecei a trabalhar. Por conta dos problemas e dificuldades em pouco tempo eu travei. Perdi a paciência por usar uma ferramenta com tantos problemas e parei os meus estudos práticos.</p>
<p>E agora? Vou ter que esperar meses (ou anos) para que alguém desenvolva uma IDE boa o suficiente? E quando não existia ferramentas com esse nível de recursos? Como a gente se virava?</p>
<p><a href="http://borba.blog.br/wordpress/wp-content/uploads/2010/05/tc201compilefp5.png"><img class="aligncenter size-full wp-image-166" title="Turbo C" src="http://borba.blog.br/wordpress/wp-content/uploads/2010/05/tc201compilefp5.png" alt="" width="650" height="434" /></a></p>
<p>Quando eu comecei a trabalhar, usava Turbo C 2.0. Alguém se lembra? Não  tinha <em>syntax highlight</em>, abria apenas um arquivo por vez e <em>code assist</em> nem pensar. Tinha <em>copy and paste</em> e lamba os beiços. E que saber? Era uma  ferramenta muito boa. Era boa e produtiva pela simples razão que <strong>EU  SABIA O QUE ESTAVA FAZENDO</strong>.</p>
<p>As ferramentas de hoje em dia são tão sofisticadas, tem tantos recursos e facilidades, que criaram uma geração de programadores que são absolutamente dependentes delas. Programadores que não são capazes de saber que método de uma determinada classe ele precisa chamar. Se não tiver um <em>code assist</em> eles simplesmente não sabem o que fazer (muitos não sabem nem com o uso do <em>code assist</em>).</p>
<p><a href="http://borba.blog.br/wordpress/wp-content/uploads/2010/05/codeassist.png"><img class="aligncenter size-full wp-image-168" title="code assist" src="http://borba.blog.br/wordpress/wp-content/uploads/2010/05/codeassist.png" alt="" width="334" height="209" /></a></p>
<p>Precisamos abandonar um pouco nossas IDEs. Precisamos (re)aprender as linguagens e frameworks sem o uso dessas facilidades. Só quando finalmente estivermos seguros sobre o nosso conhecimento é que estamos autorizados a usar as IDEs. <em>Bye bye</em> IDEA, seja bem vindo o Notepad. Agora finalmente vou <strong>APRENDER </strong>Scala. Depois de um momento de negação estou finalmente me curando da IDE-dependência. Samuel, você estava <strong>CERTO</strong>!</p>
<img src="http://feeds.feedburner.com/~r/BlogDoBorba/~4/c_cm_wMWne8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://borba.blog.br/2010/05/jogue-fora-sua-ide/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://borba.blog.br/2010/05/jogue-fora-sua-ide/</feedburner:origLink></item>
		<item>
		<title>Porque linguagens funcionais são importantes</title>
		<link>http://feedproxy.google.com/~r/BlogDoBorba/~3/wVL269Btff4/</link>
		<comments>http://borba.blog.br/2010/04/porque-linguagens-funcionais-sao-importantes/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 19:43:34 +0000</pubDate>
		<dc:creator>Luiz Borba</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[funcional]]></category>

		<guid isPermaLink="false">http://borba.blog.br/?p=154</guid>
		<description><![CDATA[Dos 3 principais paradigmas de programação (funcional, imperativo e orientado a objetos),  o funcional é o mais antigo. A primeira linguagem de programação funcional foi criada em 1955 (IPL) e a mais popular LISP foi criada em 1958. Apesar de surgirem um pouco depois (Fortran e COBOL foram criadas respectivamentes em 1956 e 1959), as [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://borba.blog.br/wordpress/wp-content/uploads/2010/04/lambda.svg_.med_.png"><img class="alignleft size-full wp-image-161" title="lambda" src="http://borba.blog.br/wordpress/wp-content/uploads/2010/04/lambda.svg_.med_.png" alt="" width="204" height="299" /></a>Dos 3 principais paradigmas de programação (funcional, imperativo e orientado a objetos),  o funcional é o mais antigo. A primeira linguagem de programação funcional foi criada em 1955 (IPL) e a mais popular LISP foi criada em 1958. Apesar de surgirem um pouco depois (Fortran e COBOL foram criadas respectivamentes em 1956 e 1959), as linguagens imperativas tiveram maior popularidade. Mesmo sem ter alcançado o <em>mainstream</em>, o paradigma funcional continou recebendo investimentos ano após ano até meados dos anos 90, quando a turma das linguagens imperativas se fundiu definitivamente com o pessoal de orientação a objetos (C++ e principalmente Java são exemplos) enterrando as linguagens funcionais no lixo da história. Acabaram as esperanças desse paradigma se tornar parte do <em>mainstream</em>. Será?</p>
<p>O tempo passou e nos últimos anos alguns sinais começaram a aparecer. Erlang (linguagem funcional proprietária criada pela Ericsson) que foi banida e distribuida de forma open-source em 98, volta a ser utilizada pela Ericsson (e por muitos outros) em 2004. A Microsoft lança o F# (linguagem funcional para a plataforma .NET). O pessoal do Twitter reescreve seu back-end em Scala (linguagem funcional e OO para a plataforma Java). C# incorpora conceitos funcionais na sua linguagem para dar suporte ao  LINQ. A Google publica artigos mostrando como utiliza o paradigma funcional para armazenar e recuperar dados. Porque esse interesse no paradigma funcional foi renovado? Qual o pulo do gato?</p>
<p>Devido a proximidade de limites técnicos e preocupação com consumo de energia, o pessoal de hardware está focando no desenvolvimento de novos processadores em soluções de múltiplos cores. Em breve teremos processadores com centenas de cores. Para se beneficiar deste panorama, temos que escrever softwares que executem de forma paralela. A boa notícia é que é muito mais fácil escrever código concorrente em liguagens funcionais do que em linguagens imperativas.</p>
<p>Não existe um único paradigma que seja indicado para resolver todos os tipos de problemas. Precisamos aprender (ou reaprender) o paradigma funcional, que foi abandonado por muito tempo. Precisamos de linguagens que incluam de forma coerente vários paradigmas, para que a gente possa escolher a melhor forma de resolver um determinado problema. Por fim, precisamos aprender Scala, que me parece a mais promissora nas novas linguagens multi-paradigma.</p>
<img src="http://feeds.feedburner.com/~r/BlogDoBorba/~4/wVL269Btff4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://borba.blog.br/2010/04/porque-linguagens-funcionais-sao-importantes/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://borba.blog.br/2010/04/porque-linguagens-funcionais-sao-importantes/</feedburner:origLink></item>
		<item>
		<title>TDD direto das trincheiras</title>
		<link>http://feedproxy.google.com/~r/BlogDoBorba/~3/jozId1VeiDc/</link>
		<comments>http://borba.blog.br/2010/03/tdd-direto-das-trincheiras/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 14:11:46 +0000</pubDate>
		<dc:creator>Luiz Borba</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[agilidade na prática]]></category>
		<category><![CDATA[apresentação]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://borba.blog.br/?p=147</guid>
		<description><![CDATA[Essa foi a apresentação que fiz no evento "Agilidade na Prática" em 30/11/2009. Este evento foi promovido pelo SPIN Recife.]]></description>
			<content:encoded><![CDATA[<p>Essa foi a apresentação que fiz no evento "<a href="http://agilidadenapratica.wordpress.com/" target="_blank">Agilidade na Prática</a>" em 30/11/2009. Este evento foi promovido pelo SPIN Recife.</p>
<object width="425" height="348"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=tdddiretodastrincheiras-100308074505-phpapp02"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=tdddiretodastrincheiras-100308074505-phpapp02"  type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="348"></embed></object>
<img src="http://feeds.feedburner.com/~r/BlogDoBorba/~4/jozId1VeiDc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://borba.blog.br/2010/03/tdd-direto-das-trincheiras/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://borba.blog.br/2010/03/tdd-direto-das-trincheiras/</feedburner:origLink></item>
		<item>
		<title>Sprint Planning Meeting II ou Sprint Design Meeting?</title>
		<link>http://feedproxy.google.com/~r/BlogDoBorba/~3/atbB1HRzs6E/</link>
		<comments>http://borba.blog.br/2010/02/sprint-planning-meeting-ii-ou-spring-design-meeting/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 03:20:00 +0000</pubDate>
		<dc:creator>Luiz Borba</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[sprint planning]]></category>

		<guid isPermaLink="false">http://borba.blog.br/?p=140</guid>
		<description><![CDATA[Qual o principal objetivo da reunião de Sprint Planning Meeting 2? Em muitos lugares você poderá encontrar uma resposta simplista para essa pergunta: O objetivo é dividir os itens do product backlog em tarefas de no máximo 8 horas (ou 16 em algumas fontes). Mas dividir como? Durante a Sprint Planning Meeting 1, o time [...]]]></description>
			<content:encoded><![CDATA[<p>Qual o principal <strong>objetivo </strong>da reunião de Sprint Planning Meeting 2? <a href="http://borba.blog.br/wordpress/wp-content/uploads/2010/02/BS01007_.gif"><img class="alignright size-full wp-image-141" title="Notepad" src="http://borba.blog.br/wordpress/wp-content/uploads/2010/02/BS01007_.gif" alt="" width="370" height="365" /></a>Em muitos lugares você poderá encontrar uma resposta simplista para essa pergunta: O objetivo é <strong>dividir </strong>os itens do product backlog em tarefas de no máximo 8 horas (ou 16 em algumas fontes). Mas dividir como?</p>
<p>Durante a Sprint Planning Meeting 1, o time e o product owner selecionaram de comum acordo alguns itens para serem trabalhados durante o sprint em questão. Para chegar neste ponto, o time teve que discutir em mais detalhes cada item de backlog, tirar eventuais dúvidas e revisar algumas estimativas. Em função disso, podemos perceber claramente que se trata de uma reunião para discussão e esclarecimento dos <strong>requisitos</strong>. Até este momento estamos apenas trabalhando em cima do domínio do <strong>problema</strong>, ainda não entramos na solução.</p>
<p>No Sprint Planning Meeting 2 a cuíca muda o tom. Se pensarmos que o objetivo principal é apenas dividir os itens em tarefas, vamos estar na verdade apenas dividindo o problema, mas aqui precisamos na verdade é dividir a <strong>solução</strong>. Para chegar na solução o time vai ter que fazer <strong>design</strong> (análise &amp;  projeto), que é exatamente o objetivo desta reunião.</p>
<p>Agora, será que faz diferença? Será que dividir o problema é diferente de dividir a solução? Vejamos alguns exemplos:</p>
<p>Considere o item de backlog chamado Login do Usuário. Algumas possíveis tarefas para Sprint Planning Meeting 2 sem foco em design:</p>
<ul>
<li>Implementar tela de login</li>
<li>Implementar serviço de autenticação</li>
</ul>
<p>Muito bom, com esse conjunto de tarefas eu posso fazer o item de backlog, o problema é que agrega muito pouco e para efeito de planejamento é desastroso, afinal o time não sabe exatamente o que vai fazer em cada uma dessas tarefas. Tudo vai ser descoberto apenas na hora H. Neste cenário observamos que é muito comum a criação de diversas novas tarefas durante o sprint.</p>
<p>Vamos ver agora que tarefas eu poderia criar se tivesse realizado a reunião com foco em design:</p>
<ul>
<li>Criar tela de login</li>
<li>Selecionar lib js para chamar serviço de autenticação via ajax (supondo que é ajax e uma lib ainda não foi selecionada)</li>
<li>Criar serviço de autenticação</li>
<li>Criar query com login=login e senha=senha</li>
<li>Criar classe de Usuario (campos: login e senha)</li>
<li>Criar método para criptografar a senha (escolher método)</li>
<li>e por aí vai...</li>
</ul>
<p>O que acontece no novo cenário é que a equipe se aprofundou na solução. Neste caso o time pôde definir melhor o escopo de cada tarefa, antecipar dúvidas e eliminar riscos. Mas afinal para que serve o planejamento?</p>
<p>Resumindo:</p>
<ul>
<li>Sprint Planning Meeting 1 = Requisitos</li>
<li>Sprint Planning Meeting 2 = Design</li>
</ul>
<p>E ainda assim: Sprint Planning Meetings = <strong>planejamento</strong>.</p>
<img src="http://feeds.feedburner.com/~r/BlogDoBorba/~4/atbB1HRzs6E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://borba.blog.br/2010/02/sprint-planning-meeting-ii-ou-spring-design-meeting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://borba.blog.br/2010/02/sprint-planning-meeting-ii-ou-spring-design-meeting/</feedburner:origLink></item>
		<item>
		<title>SQL ou NoSQL? Essa é a questão</title>
		<link>http://feedproxy.google.com/~r/BlogDoBorba/~3/T0ngm_LsA-M/</link>
		<comments>http://borba.blog.br/2010/01/sql-ou-nosql-essa-e-a-questao/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 15:05:48 +0000</pubDate>
		<dc:creator>Luiz Borba</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://borba.blog.br/?p=135</guid>
		<description><![CDATA[Banco de dados relacionais fazem parte da nossa vida há muito tempo. SQL e abstrações (HQL por exemplo) fazem parte da rotina de qualquer desenvolvedor de sistemas de informação. Agora, será que o domínio dessa tecnologia vai continuar prevalecendo na era da Internet? Gigantes da Internet como Google, Amazon, Facebook, entre outros, descobriram há um [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://borba.blog.br/wordpress/wp-content/uploads/2010/01/nosql-logo.gif"><img class="alignnone size-full wp-image-136" title="nosql-logo" src="http://borba.blog.br/wordpress/wp-content/uploads/2010/01/nosql-logo.gif" alt="" width="200" height="51" /></a></p>
<p>Banco de dados relacionais fazem parte da nossa vida há muito tempo. SQL e abstrações (HQL por exemplo) fazem parte da rotina de qualquer desenvolvedor de sistemas de informação. Agora, será que o domínio dessa tecnologia vai continuar prevalecendo na era da Internet?</p>
<p>Gigantes da Internet como Google, Amazon, Facebook, entre outros, descobriram há um bom tempo que os bancos de dados relacionais não atendem suas necessidades, especialmente as relacionadas com escalabilidade. Essas empresas investiram em outro tipo de tecnologia para armazenamento e recuperação de dados. Hoje essas soluções são conhecida coletivamente como <a href="http://nosql-database.org/" target="_blank">NoSQL</a>.</p>
<p>Agora vem a grande questão, para onde eu vou: SQL ou NoSQL?</p>
<p>Cada opção tem sua aplicabilidade, não seja dogmático (muitos nas duas comunidades são) e aproveite o que cada tecnologia tem de melhor. A única coisa que quero alertar é que a opção por NoSQL é uma realidade viável. Claro que as soluções NoSQL ainda tem que comer muita farinha para chegar a maturidade, mas podemos enxergar nisso uma oportunidade de pioneirismo. Como desenvolvedores de software temos que estar preparados, então arregace as mangas e vá ESTUDAR!</p>
<img src="http://feeds.feedburner.com/~r/BlogDoBorba/~4/T0ngm_LsA-M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://borba.blog.br/2010/01/sql-ou-nosql-essa-e-a-questao/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://borba.blog.br/2010/01/sql-ou-nosql-essa-e-a-questao/</feedburner:origLink></item>
		<item>
		<title>Entenda os príncipios por trás das práticas</title>
		<link>http://feedproxy.google.com/~r/BlogDoBorba/~3/Gf-DlL0TKeg/</link>
		<comments>http://borba.blog.br/2009/12/entenda-os-principios-por-tras-das-praticas/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 00:45:41 +0000</pubDate>
		<dc:creator>Luiz Borba</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[cmm]]></category>
		<category><![CDATA[cmmi]]></category>
		<category><![CDATA[métodos ágeis]]></category>
		<category><![CDATA[princípios ágeis]]></category>
		<category><![CDATA[rup]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://borba.blog.br/?p=132</guid>
		<description><![CDATA[Como todo mundo já percebeu, Scrum virou moda. A maioria das empresas dizem que usam Scrum, porém poucas são REALMENTE ágeis. A principal razão pela qual isso acontece é porque as pessoas dessas empresas ainda não assimilaram os príncipios que estão por trás dos métodos ágeis. O entendimento e a adoção desses príncipios são fundamentais [...]]]></description>
			<content:encoded><![CDATA[<p>Como todo mundo já percebeu, Scrum virou moda. A maioria das empresas dizem que usam Scrum, porém poucas são REALMENTE ágeis. A principal razão pela qual isso acontece é porque as pessoas dessas empresas ainda não assimilaram os príncipios que estão por trás dos métodos ágeis. O entendimento e a adoção desses príncipios são fundamentais para ter sucesso com Scrum. Acredito que esse fenômeno aconteceu de forma similar com a adoção do RUP. Aqui está o material de uma apresentação que fiz sobre esse assunto.</p>
<object width="425" height="348"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=whatkilledrupcouldkillagiletoo-091130211851-phpapp02"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=whatkilledrupcouldkillagiletoo-091130211851-phpapp02"  type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="348"></embed></object>
<img src="http://feeds.feedburner.com/~r/BlogDoBorba/~4/Gf-DlL0TKeg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://borba.blog.br/2009/12/entenda-os-principios-por-tras-das-praticas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://borba.blog.br/2009/12/entenda-os-principios-por-tras-das-praticas/</feedburner:origLink></item>
		<item>
		<title>Um Software de Qualidade</title>
		<link>http://feedproxy.google.com/~r/BlogDoBorba/~3/tAK-XR51h8Q/</link>
		<comments>http://borba.blog.br/2009/07/um-software-de-qualidade/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 19:31:00 +0000</pubDate>
		<dc:creator>Luiz Borba</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[qualidade]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://borba.blog.br/?p=111</guid>
		<description><![CDATA[Eu vou falar um pouco mais sobre o WordPress porque acho que é um bom exemplo de um software de qualidade. Vou começar pela instalação. Para instalar o WordPress, só é necessário verificar o "Famous 5-Minute Install". Pronto. Funciona de verdade. Na verdade não é você que instala o WordPress, ele se instala sozinho, você [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-112" title="wordpress logo" src="http://borba.blog.br/wordpress/wp-content/uploads/2009/07/blue-m.png" alt="wordpress logo" width="100" height="100" />Eu vou falar um pouco mais sobre o <a href="http://www.wordpress.org" target="_blank">WordPress</a> porque acho que é um bom exemplo de um software de qualidade.</p>
<p>Vou começar pela instalação. Para instalar o WordPress, só é necessário verificar o "<a href="http://codex.wordpress.org/Installing_WordPress#Famous_5-Minute_Install" target="_blank">Famous 5-Minute Install</a>". Pronto. Funciona de verdade. Na verdade não é você que instala o WordPress, ele se instala sozinho, você apenas manda ele se instalar. Não dá pra engolir softwares que só para instalar é preciso ler um livro cheio de procedimentos e depois acaba dando tudo errado e você ainda tem que ficar pesquisando na internet para ver ser descobre o que aconteceu.</p>
<p>Um dos procedimentos que ele faz na instalação é criar a estrutura do banco de dados. Hoje em dia não é difícil encontrar um framework que facilite isso (vide <a href="http://www.hibernate.org" target="_blank">Hibernate</a>), por então não fazemos isso sempre?</p>
<p>Outro exemplo que vi de como o WordPress é robusto foi quando eu resolvi mudar a configuração dos permalinks. Após alterar a configuração veja o que apareceu na tela:</p>
<p><img class="alignnone size-full wp-image-114" title="wp_permalink" src="http://borba.blog.br/wordpress/wp-content/uploads/2009/07/wp_permalink.png" alt="wp_permalink" width="668" height="367" /></p>
<p>Devido a minha escolha o wordpress precisava criar um arquivo .htaccess para atender minha necessidade, como ele sozinho descobriu que não tinha permissão de escrita no diretório, mostrou na tela as instruções detalhadas do procedimento que eu precisava fazer na mão para que os permalinks pudessem funcionar. Quantas vezes você já se deparou com algum erro desconhecido e teve que fuçar logs para descobrir qual o problema?</p>
<p>É verdade, Software Robusto demanda mais esforço mas devemos abrir mão da preguiça. Não podemos é abrir mão da qualidade dos softwares que escrevemos. Software frágeis acabam por consumir a falsa economia no desenvolvimento porque geram um imenso custo de suporte e manutenção. Siga o exemplo do Worpress.</p>
<img src="http://feeds.feedburner.com/~r/BlogDoBorba/~4/tAK-XR51h8Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://borba.blog.br/2009/07/um-software-de-qualidade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://borba.blog.br/2009/07/um-software-de-qualidade/</feedburner:origLink></item>
		<item>
		<title>Nova Infra</title>
		<link>http://feedproxy.google.com/~r/BlogDoBorba/~3/oQKvZCauZT0/</link>
		<comments>http://borba.blog.br/2009/07/nova-infra/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 01:57:48 +0000</pubDate>
		<dc:creator>Luiz Borba</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[infra]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://borba.blog.br/?p=107</guid>
		<description><![CDATA[Resolvi abandonar o blogger.com e manter o blog por mim mesmo. Fiz a opção de instalar o WordPress (que não conhecia) sem muita informação. Apenas achei que era o mais popular. E valeu mesmo a pena. Estou realmente IMPRESSIONADO. O WordPress É MUITO BOM! A instalação foi muito fácil e a quantidade de opções que [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-108 alignleft" title="wordpress" src="http://borba.blog.br/wordpress/wp-content/uploads/2009/07/wordpressicons-300x195.png" alt="wordpress" width="300" height="195" />Resolvi abandonar o blogger.com e manter o blog por mim mesmo.</p>
<p>Fiz a opção de instalar o WordPress (que não conhecia) sem muita informação. Apenas achei que era o mais popular. E valeu mesmo a pena.</p>
<p>Estou realmente IMPRESSIONADO. O WordPress É MUITO BOM! A instalação foi muito fácil e a quantidade de opções que você pode customizar me chamaram a atenção. A quantidade de plugins disponíveis é quase ilimitada. Se você quiser montar um blog algum dia eu recomendo fortemente o WordPress.</p>
<p>Sobre o blog, por enquanto ainda não fiz muitas modificações, apenas escolhi um tema e algumas opções bastantes simples, mas penso que ao longo do tempo vou estudar um pouco mais e dar uma incrementada. Espero que gostem.</p>
<img src="http://feeds.feedburner.com/~r/BlogDoBorba/~4/oQKvZCauZT0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://borba.blog.br/2009/07/nova-infra/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://borba.blog.br/2009/07/nova-infra/</feedburner:origLink></item>
	</channel>
</rss>
