<?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>Rafael Lima &#187; desenvolvimento</title>
	<atom:link href="http://rafael.adm.br/tag/desenvolvimento/feed/" rel="self" type="application/rss+xml" />
	<link>http://rafael.adm.br</link>
	<description>Empreendedorismo, Web, Agile, Tecnologia, Desenvolvimento, Negócios, Marketing, Aplicação Web, Ruby on Rails.</description>
	<lastBuildDate>Fri, 18 Jun 2010 02:19:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Programador lento</title>
		<link>http://rafael.adm.br/p/programador-lento/</link>
		<comments>http://rafael.adm.br/p/programador-lento/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 10:34:44 +0000</pubDate>
		<dc:creator>Rafael Lima</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[programador]]></category>

		<guid isPermaLink="false">http://rafael.adm.br/?p=437</guid>
		<description><![CDATA[Na Myfreecomm temos alguns programadores lentos, graças a Deus. Conversando sobre isso com o Henrique, ele disse que merecia um post. Atendendo a pedidos, aí está.
Depois de bastante tempo sem programar, eu passei dois dias escrevendo um pequeno sistema para integrar a parte de pagamento de uma aplicação com o Paypal.
O fato de ter voltado [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fprogramador-lento%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fprogramador-lento%2F" height="61" width="51" /></a></div><p>Na <a href="http://myfreecomm.com.br">Myfreecomm</a> temos alguns programadores lentos, graças a Deus. Conversando sobre isso com o <a href="http://henriquebastos.net">Henrique</a>, ele disse que merecia um post. Atendendo a pedidos, aí está.</p>
<p>Depois de bastante tempo sem programar, eu passei dois dias escrevendo um pequeno sistema para integrar a parte de pagamento de uma aplicação com o <a href="http://paypal.com">Paypal</a>.</p>
<p>O fato de ter voltado a programar, depois de mais de um ano apenas gerenciando projetos e equipes, e estudando metodologias ágeis, me fez optar por escrever uma aplicação 100% testada, em Ruby, utilizando Sinatra. Gostaria de aproveitar para agradecer o <a href="http://rafaelss.com/">Rafael Souza</a> que me ajudou bastante no início.</p>
<p>A escolha de Ruby (ao invés de Python por exempo) e Sinatra (ao invés de Rails por exemplo), não importa. O que importa é que eu poderia fazer tudo “scriptado” (aka cuspido), mas achei que não deveria. O primeiro motivo é que se trata de um middleware para um processo crítico que não pode falhar, o pagamento. Segundo, por que na minha cabeça não fazia sentido cuspir um código e fazer funcionar o mais rápido possível.</p>
<p>Isso me fez pensar sobre o paradoxo da qualidade x velocidade. A conclusão que tirei das minhas reflexões é que os programadores que se dizem lentos, na verdade não são lentos.</p>
<p>Para você dizer que alguém é lento, você tem que comparar com outra pessoa. Lentidão é relativo. Você não é lento e ponto final, você pode ser lento se comparado com outras pessoas.</p>
<p>Minha conclusão foi que na verdade o “programador lento” faz as coisas no tempo em que elas realmente precisam para serem feitas da maneira que funciona. Na verdade, os outros que são rápidos de mais. Adianta ser rápido e ter bug?</p>
<p>Analisando sob essa ótica, e considerando a premissa de que a maioria das pessoas (rápidas) fazem errado, vide relatório Chaos Report do Standish Group, posso dizer que programadores lentos são bem-vindos.</p>
<p>Hoje, eu vejo essa característica como um sintoma de que ele programa com boas práticas e com o cuidado necessário para o software funcionar.</p>
<p>No final da conversa eu disse para o Henrique: <strong>“Se em uma entrevista de emprego, um programador me diz que é lento, eu vou vê-lo com bons olhos”</strong>.</p>
<p>Abraço e até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.adm.br/p/programador-lento/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>A procura da batida perfeita &#8211; Parte 1</title>
		<link>http://rafael.adm.br/p/a-procura-da-batida-perfeita-parte-1/</link>
		<comments>http://rafael.adm.br/p/a-procura-da-batida-perfeita-parte-1/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 12:57:12 +0000</pubDate>
		<dc:creator>Rafael Lima</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[empreendedorismo]]></category>
		<category><![CDATA[gestão]]></category>
		<category><![CDATA[negócios]]></category>

		<guid isPermaLink="false">http://rafael.adm.br/?p=434</guid>
		<description><![CDATA[Na minha última palestra, no Ceará On Rails, eu tive que preparar tudo de um dia para o outro e não pude organizar melhor as idéias colocadas nos slides. Em um deles eu escrevi “A procura da batida perfeita”, no momento que eu ia falar sobre as características de uma aplicação web ideal, da maneira [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fa-procura-da-batida-perfeita-parte-1%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fa-procura-da-batida-perfeita-parte-1%2F" height="61" width="51" /></a></div><p>Na minha <a href="http://rafael.adm.br/p/bootstrapping-de-aplicacoes-web-no-ceara-on-rails-2009/">última palestra</a>, no Ceará On Rails, eu tive que preparar tudo de um dia para o outro e não pude organizar melhor as idéias colocadas nos slides. Em um deles eu escrevi “A procura da batida perfeita”, no momento que eu ia falar sobre as características de uma aplicação web ideal, da maneira que eu busco.</p>
<p>De lá pra cá eu venho pensando sobre o termo “batida perfeita” e relacionando com os acontecimentos do dia-a-dia na minha vida.</p>
<p>Então me veio a pergunta: Qual seria a batida perfeita para a gestão de uma empresa de desenvolvimento de software?</p>
<p>Antes de responder, é bom lembrar que <strong>a batida perfeita é aquela que dá gosto de ouvir</strong>.</p>
<p>Respondendo a pergunta acima, na minha opinião, a batida perfeita para gestão em software, envolve em parte o seguinte:</p>
<p><strong>Utilização de metodologias ágeis<br />
</strong></p>
<p>Se eu pudesse dar uma só dica sobre o futuro, seria esta: use metodologia ágeis<br />
Os benefícios a longo prazo do uso de metodologias ágeis estão provados e comprovados pela ciência; já o resto de meus conselhos não tem outra base confiável além de minha própria experiência errante.</p>
<p>As metodologias ágeis começaram a ter força no Brasil, neste ano de 2009. O Scrum, Lean, Kanban, XP foram as filosofias e metodologias mais faladas entre os Brasileiros. Eu estou convicto de que o <em>agile</em>, como é chamado pelos íntimos, é mais eficiente que as metodologias adotadas atualmente, assim como sou convicto que haverá metodologias melhores no futuro próximo. O legal é que o <em>agile</em> já é o primeiro passo para se aceitar mudanças com velocidade.</p>
<p><strong>Fixar qualidade, negociar escopo. Preço e prazo são consequência<br />
</strong> É muito importante que você fixe a qualidade do serviço, seja para clientes externos ou clientes internos. Negociar o escopo é chave para o sucesso de projetos de desenvolvimento de software, pois assim fica garantido que o que foi feito vai funcionar, que é um dos maiores problemas neste setor.</p>
<p><strong>Entendimento do perfil do desenvolvedor<br />
</strong> Em geral, o desenvolvedor é um funcionário um pouco diferente dos demais. Um amigo meu já disse uma vez “É mais fácil tocar uma indústria com 600 funcionários do que uma empresa de software com 10”. É claro que não passa de uma opinião, mas o que ele queria dizer é que desenvolvedores são problemáticos.</p>
<p>O primeiro problema que deixa qualquer gestor neurótico é o horário. Difícil fazer o Daily Meeting no horário todos os dias, não é mesmo!?</p>
<p>Confiar no desenvolvedor é importante, principalmente nos prazos dados. É sério, eles sabem dar prazos. Os gestores que não sabemos aceitar.</p>
<p><strong>Escolha de uma tecnologia para trabalhar<br />
</strong> Escolher um ambiente e as tecnologias para as soluções que serão desenvolvidas é indispensável. Pequenas empresas principalmente precisam fazer uma escolha e segui-la.</p>
<p>As opções são inúmeras, dentre elas temos: software desktop, software para Windows, aplicações para mainframe, sistemas web na plataforma Windows, sistemas Ruby on Rails, etc. Perceba que não existe um critério, você pode deixar mais abrangente dizendo desktop x web ou especificar que será só pra Windows ou usando o framework X.</p>
<p>Embora não seja aconselhável você se prender a uma tecnlogia, quanto mais você especificar com o que deseja trabalhar, é melhor para evitar ficar perdido e gastar energia com falsas oportunidades.</p>
<p>Estes foram apenas quatro pontos que estavam na minha cabeça e resolvi colocar em um post. A batida perfeita não pára por aí evidentemente. Muitos outros fatores são relevantes, inclusive aqueles que dizem respeito à programação em si.</p>
<p>Havendo oportunidades escreverei sobre abatida perfeita para desenvolvimento de código de programação e fatalmente falarei sobre os tópicos abaixo:</p>
<p>Framework, Programação orientada a testes (TDD), Deployment automatizado, Integração contínua, Controle de versão distribuído, Definição de um Commit Pattern, Ambiente de Staging, etc.</p>
<p>Conforme eu for descobrindo características importantes, vou escrevendo aqui. Por enquanto é só.</p>
<p>Abraço e até a próxima</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.adm.br/p/a-procura-da-batida-perfeita-parte-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A importância da escolha das palavras certas no desenvolvimento de sistemas</title>
		<link>http://rafael.adm.br/p/a-importancia-da-escolha-das-palavras-certas-no-desenvolvimento-de-sistemas/</link>
		<comments>http://rafael.adm.br/p/a-importancia-da-escolha-das-palavras-certas-no-desenvolvimento-de-sistemas/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 16:04:03 +0000</pubDate>
		<dc:creator>Rafael Lima</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[sistema]]></category>

		<guid isPermaLink="false">http://rafael.adm.br/?p=424</guid>
		<description><![CDATA[Estamos desenvolvendo na Myfreecomm um sistema de cobrança que está ficando muito interessante. Ele irá resolver um problema real e trará muita conveniência no dia-a-dia das empresas que realizam cobrança com integração com os bancos.
O sistema está quase pronto e estamos neste momento definindo aqueles detalhes que fazem toda a diferença.
A concepção foi baseada em [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fa-importancia-da-escolha-das-palavras-certas-no-desenvolvimento-de-sistemas%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fa-importancia-da-escolha-das-palavras-certas-no-desenvolvimento-de-sistemas%2F" height="61" width="51" /></a></div><p>Estamos desenvolvendo na <a href="http://myfreecomm.com.br">Myfreecomm</a> um sistema de cobrança que está ficando muito interessante. Ele irá resolver um problema real e trará muita conveniência no dia-a-dia das empresas que realizam cobrança com integração com os bancos.</p>
<p>O sistema está quase pronto e estamos neste momento definindo aqueles detalhes que fazem toda a diferença.</p>
<p><strong>A concepção foi baseada em um fluxo único de uso, de forma que os itens de menu contemplassem as ações que o usuário irá realizar, como se o sistema todos fosse um grande wizard. As páginas acessórias são acessadas apenas por links contextuais. Não temos menu e submenu, nem breadcrumb. E te digo, fazer o sistema assim é um desafio!</strong></p>
<p>A interface ficou bem simples, sem muitas opções e com links no lugar certo e na hora certa. Quando fazemos sistemas deste gênero as palavras e termos utilizados nos itens de menu, nos títulos e nos links são muito importantes. É preciso que o usuário consiga se situar de forma rápida e entenda o que irá acontecer a cada clique.</p>
<p>O Allan é o responsável por fazer com que o sistema seja entendido pelos usuários. Ele está escrevendo o manual, pensando em que lugares existirão links para o manual, quais são os pontos que podem gerar dúvidas, etc. E nesse processo ele está revendo os termos utilizados a todo momento. Inclusive nas interações chegamos a perceber e incluir na histórias novos status para determinada entidade e tudo.</p>
<p>Hoje ele levantou uma bola que gerou uma discussão muito saudável. Uma das ações do usuário no sistema é juntar várias cobranças para que elas sejam enviadas para o sistema do banco. Até hoje, o termos utilizado para esse conjunto de cobranças era <strong>Remessa</strong>. Tínhamos termos tais como: Preparar Remessa, Enviar Remessa, Remessas Pendentes e Remessas Enviadas.</p>
<p>A questão levantada foi: <strong>&#8220;Não deveria ser Lote ao invés de Remessa?&#8221;</strong></p>
<p>A conclusão imediata depois de um rápido brainstorm foi de que tanto faz, afinal dá no mesmo, lote e remessa são a mesma coisa. Bem, depois de muita conversa e esclarecimento sobre entidades, estados, tempos, etc chegamos a uma opinião diferente.</p>
<p>Buscamos definições de <a href="http://www.google.com.br/search?q=define%3A+lote">lote</a> e <a href="http://www.google.com.br/search?q=define%3A+remessa">remessa</a> no Google, depois fomos aos dicionários <a href="http://www.priberam.pt/DLPO/default.aspx?pal=remessa">priberam</a> e <a href="http://www.dicionariodoaurelio.com/dicionario.php?P=Remessa">Aurélio</a>. Mais alguns minutos de discussão e desenho foram neecessários para concluirmos que Remessa é algo que foi enviado, ou seja, que já passou pelo processo de envio. Se existe algo que pode ser remetido, mas ainda não o foi, isso não pode ser chamado de Remessa.</p>
<p>Donde se concluí que  dizer &#8220;Enviar Remessa&#8221; está errado e o termo &#8220;Remessa enviada&#8221; é um pleonasmo. <a href="http://twitter.com/rafaelp/status/5451280083">Se é Remessa, é por que já foi enviado.</a></p>
<p>No meio da discussão chegamos a lembrar que muitas vezes não importa o &#8220;certo&#8221; e &#8220;errado&#8221; na gramática formal e que o mais importante é o entendimento do usuário. Mas é o que eu digo, se podemos usar o correto de acordo com a gramática sem afetar o entendimento do usuário, melhor. Se, usando o termo gramaticalmente corrento, ainda assim facilitamos o entendimento do usuário, como foi o caso, melhor ainda!</p>
<p>Por fim decidimos usar o termo Lote ao invés de Remessa e mudaremos para &#8220;Preparar Lote&#8221;, &#8220;Enviar Lote&#8221;, &#8220;Lotes pendentes&#8221; , &#8220;Lotes enviados&#8221; e outros termos presentes na interface. Como <a href="http://rafael.adm.br/p/palavra-do-rei-melhores-praticas-em-desenvolvimento-de-software/">escrevemos todo código de programação em inglês</a>, não tivemos maiores problemas.</p>
<p>Essa experiência foi muito interessante, pois foi legal estudar e discutir sobre o significado destas palavras e foi incrível perceber como uma mudança simples pode ao mesmo tempo melhorar o sistema e facilitar nosso trabalho. Ficará mais fácil agora escrever o manual. É aquela velha história: <strong>Se está difícil, está errado!</strong></p>
<p>Uma vez eu li um post da <a href="http://37signals.com/svn/">37signals</a> extamente sobre isso. Agora eu entendo perfeitamente o que eles queriam passar com o post, e é o que eu espero deixar de recado também.</p>
<p><strong>A definição de termos corretos e fáceis de serem compreendidos pelo usuário é fundamental para a boa usabilidade do sistema.</strong></p>
<p>Além disso, escolher as palavras certas facilita a compreensão da relação do que elas representam com o sistema como um todo.</p>
<p>São diversos fatores que tornam um sistema bom ou ruim, difícil ou fácil de usar e complexo ou simples. Usar palavras corretas e de simples entendimento é um fator muito importante. Às vezes parece que está tudo bom, e que as palavras estão certas e serão compreendidas, mas nem sempre é verdade.</p>
<p>Pense no sistema que você usa ou está desenvolvendo. Será que mudando alguns termos não ficaria muito mais fácil de usar? Você tem algum caso similar? Deixe sua história nos comentários!</p>
<p>Abraços e até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.adm.br/p/a-importancia-da-escolha-das-palavras-certas-no-desenvolvimento-de-sistemas/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Base de Dados para Internacionalização de Software</title>
		<link>http://rafael.adm.br/p/base-de-dados-para-internacionalizacao-de-software/</link>
		<comments>http://rafael.adm.br/p/base-de-dados-para-internacionalizacao-de-software/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 02:24:54 +0000</pubDate>
		<dc:creator>Rafael Lima</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[arquivo]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[i18n]]></category>

		<guid isPermaLink="false">http://rafael.adm.br/?p=372</guid>
		<description><![CDATA[Quando estava desenvolvendo o BielBid, eu criei uma série de tabelas com dados úteis para internacionalização de software. Não sei por que não disponibilizei isso antes!
Faça o download clicando no link abaixo:
Dados de Iocalização, idioma, moeda, países, estados e cidades
Você irá encontrar neste arquivo:

Tabela de locales com todos os locales com o country e language
Tabela [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fbase-de-dados-para-internacionalizacao-de-software%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fbase-de-dados-para-internacionalizacao-de-software%2F" height="61" width="51" /></a></div><p>Quando estava desenvolvendo o <a href="http://bielbid.com.br">BielBid</a>, eu criei uma série de tabelas com dados úteis para internacionalização de software. Não sei por que não disponibilizei isso antes!</p>
<p>Faça o download clicando no link abaixo:</p>
<p><a href="http://rafael.adm.br/wp-content/uploads/2009/07/rafaeladmbr-internacionalizacao_software.xls">Dados de Iocalização, idioma, moeda, países, estados e cidades</a></p>
<p>Você irá encontrar neste arquivo:</p>
<ul>
<li>Tabela de locales com todos os locales com o country e language</li>
<li>Tabela de idiomas com todos os idiomas, relação com locale e nomes em inglês</li>
<li>Tabela de moedas com Real e Dólar</li>
<li>Tabela de países com todos os países e seus códigos</li>
<li>Tabela de regiões com todos os estados do Brasil e dos Estados Unidos em português e inglês</li>
<li>Tabela de cidades com todas as cidades do Brasil e relação com estados</li>
</ul>
<p>Se ela for útil para você, deixe um comentário <img src='http://rafael.adm.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Abraços e até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.adm.br/p/base-de-dados-para-internacionalizacao-de-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deadline in Software Development</title>
		<link>http://rafael.adm.br/p/deadline-in-software-development/</link>
		<comments>http://rafael.adm.br/p/deadline-in-software-development/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 19:06:23 +0000</pubDate>
		<dc:creator>Rafael Lima</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://rafael.adm.br/?p=405</guid>
		<description><![CDATA[Commercial pressures of today&#8217;s economy result in                 imposed deadlines being the norm for technology                 projects. Yet the nature of software projects   [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fdeadline-in-software-development%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fdeadline-in-software-development%2F" height="61" width="51" /></a></div><blockquote><p>Commercial pressures of today&#8217;s economy result in                 imposed deadlines being the norm for technology                 projects. Yet the nature of software projects                 demands that teams deal with the constant dynamics                 of change. This creates extreme degrees of project                 risk and perpetuates the so-called &#8220;software                 crisis,&#8221; whereby a large percentage of projects are                 canceled, delivered late, over budget, and/or poor                 quality. However, knowing the nature of these                 dynamics empowers managers to make decisions on                 promised functionality, thereby controlling the                 very factors that degrade software quality and                 reliability.</p></blockquote>
<p>Fonte: <a href="http://www.cutter.com/workshops/03.html">http://www.cutter.com/workshops/03.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.adm.br/p/deadline-in-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
