<?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>ismaels.rb</title>
	<atom:link href="http://ismaels.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://ismaels.net</link>
	<description>Programming a life...</description>
	<lastBuildDate>Mon, 25 Oct 2010 23:01:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Equipe de teste separada? Então possivelmente você tem um problema</title>
		<link>http://ismaels.net/2010/10/equipe-de-teste-separada-entao-possivelmente-voce-tem-um-problema/</link>
		<comments>http://ismaels.net/2010/10/equipe-de-teste-separada-entao-possivelmente-voce-tem-um-problema/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 23:01:58 +0000</pubDate>
		<dc:creator>Ismael Stahelin</dc:creator>
				<category><![CDATA[Boas Práticas]]></category>
		<category><![CDATA[Tdd CleanCode Testes Responsabilidade]]></category>

		<guid isPermaLink="false">http://ismaels.net/?p=34</guid>
		<description><![CDATA[Identificando os pontos negativos de manter uma equipe de testes separada, ou seja, quando a responsabilidade de testar não é do desenvolvedor.]]></description>
			<content:encoded><![CDATA[<p>Testar é uma responsabilidade da equipe de testes, certo? Errado! A responsabilidade do teste é do desenvolvedor, pois o código é dele. Ele deve ser o responsável por garantir que o cliente receberá um produto com a menor quantidade de falhas possível. Se na sua empresa você tem uma equipe de testes separada, &#8220;responsável&#8221; por testar as suas aplicações, então eu digo que você tem problema nas mãos. Vou explicar o problema, funciona assim:</p>
<p><strong>Desenvolvedores</strong></p>
<p>Como existe uma equipe dedicada para testar as aplicações, o desenvolvedor acaba relaxando nos testes que ele deveria implementar, e passa a responsabilidade do teste para aquela equipe, com o seguinte pensamento: &#8220;Ok, ok, vou testar aqui mais ou menos aqui porque o teste pra valer é com o pessoal da equipe de testes&#8230; Se eles não pegarem, o cliente também não pega. E se o cliente pegar, bem, foram eles que deixaram passar&#8230;&#8221;</p>
<p><strong>Equipe de testes</strong></p>
<p>A equipe de teste, que certamente não deve usar testes automatizados, executa os testes conforme o humor da equipe, ou seja, um dia pegam pesado, no outro a paciência não está tão grande e o teste sai mais &#8220;fraquinho&#8221;. O ponto aqui é que os testes acabam nunca sendo repetidos da mesma maneira, e isso é muito ruim porque acaba passando uma falsa sensação de dever cumprido para a equipe e de segurança para o resto da empresa.</p>
<p><strong>Jogo de empurra-empurra</strong></p>
<p>Além do comportamento mostrado anteriormente pelas duas equipes, é quase certo que existirá uma concorrência entre as equipes, sempre com o intuito de culpar o outro. Se um bug é pego em produção e o cliente reclama, a equipe de desenvolvimento argumenta que a culpa é da equipe de testes que deixou o erro passar. Já a equipe de teste rotula todos os desenvolvedores de incompetentes, porque sempre enviam uma versão da aplicação cheia de erros, e dos mais básicos possíveis.<br />
Na verdade as duas equipes deveriam estar trabalhando juntas, e quando digo juntas quero dizer lado a lado. Os analistas de teste devem sentar com os programadores para ajudar a pensar os testes que devem ser implementados. Só assim, com atenção e foco dobrados é possível chegar a uma quantidade mínima de erros.</p>
<p><strong>A responsabilidade é sua</strong></p>
<p>Depois do que falei acima, muita gente vai dizer o seguinte: &#8220;<em>Ah, mas na minha empresa é assim mesmo, as equipes são separadas e a gerência entende que assim é melhor&#8230; blá, blá, blá</em>&#8220;. Faça um favor para você mesmo, tome a responsabilidade de criar os testes para você, como se não existisse outra maneira de fazer software (na verdade essa é a única que funciona a longo prazo). Não espere que o seu gerente, o líder de equipe ou seja lá quem está acima de você peça para você implementar os testes. Inclua sempre nas suas estimativas o tempo necessário para escrever os seus testes, organizar o seu código, deixar tudo limpinho.<br />
Lembre-se, <strong>o código é seu, a responsabilidade é sua!<br />
</strong><br />
Gostou ou não gostou? Ah, não concorda não? Então fala aí! Quero ouvir :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://ismaels.net/2010/10/equipe-de-teste-separada-entao-possivelmente-voce-tem-um-problema/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Economize no lugar certo</title>
		<link>http://ismaels.net/2010/07/economize-no-lugar-certo/</link>
		<comments>http://ismaels.net/2010/07/economize-no-lugar-certo/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 14:03:31 +0000</pubDate>
		<dc:creator>Ismael Stahelin</dc:creator>
				<category><![CDATA[Boas Práticas]]></category>
		<category><![CDATA[administração]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[economia]]></category>

		<guid isPermaLink="false">http://ismaels.net/?p=31</guid>
		<description><![CDATA[Quer economizar na sua empresa? Ok, então diminua o número de impressoras, a quantidade de papel gasto, apague algumas luzes, mas por favor, não deixe de comprar uma máquina melhor para o seu desenvolvedor.]]></description>
			<content:encoded><![CDATA[<p>Muitas empresas, usando até mesmo como desculpa a última onda de crise da economia mundial, atentam para questões sobre economia, reutilização, combate ao desperdício, etc. Trata-se de uma prática saudável para o ambiente corporativo, desde que aplicada corretamente.</p>
<p>O que me traz a esse assunto é a tal da &#8220;<strong>Economia porca</strong>&#8220;. Funciona assim, o dono da empresa, ou o departamento responsável pelas compras ou mesmo o gerente, decide que gastar dinheiro com um equipamento melhor para o seu desenvolvedor, um servidor para build, controle de versão, banco de dados ou seja para o que for que se precisa da máquina, é caro e não será feito agora. Como a empresa está querendo economizar, então eles resolvem deixar aquele PC meia boca para o desenvolvedor mesmo, e o resto, banco, controle de versão e build (se deixarem você colocar um processo de build automático), vai ficar tudo na mesma máquina. E o pior, essa máquina é aquela melhorzinha e que todas as equipes de desenvolvimento terão que compartilhar. Isso é economia porca! É uma falsa economia.</p>
<p>O resultado disso é um impacto brutal, tanto na produtividade do seu time de desenvolvimento quanto na motivação, no ânimo das pessoas para fazerem as coisas acontecerem. O desespero é tanto que eu já vi casos onde o sujeito estava disposto a pagar, ele mesmo, por uma máquina, só para poder trabalhar melhor. Talvez fosse um bom investimento mesmo, só para evitar o estresse que isso causa, mas convenhamos que pagar para trabalhar é meio chato :(</p>
<p>Como resolver isso? Bem, eu não sou especialista em finanças e nem tenho experiência em administração de empresas para deixar aqui um receita de onde é mais eficaz economizar. O que sei, do ponto de vista de quem já foi afetado por esse tipo de economia é que, esse tipo, não vale a pena. Muito provavelmente o dinheiro que a sua empresa está ecnonomizando não comprando mais máquinas, irá perder com a correção de erros, com horas gastas em configuração de máquinas compartilhadas, em contratação de novos profissionais e até mesmo por colocar um produto tarde no mercado, já que aquele produto que deveria estar pronto, ainda não saiu porque acabou atrasando, sabe-se lá por qual motivo.</p>
<p>Pense nisso. Você concorda, tem uma visão diferente? Compartilhe conosco :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://ismaels.net/2010/07/economize-no-lugar-certo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>E você, é um profissional?</title>
		<link>http://ismaels.net/2010/05/e-voce-e-um-profissional/</link>
		<comments>http://ismaels.net/2010/05/e-voce-e-um-profissional/#comments</comments>
		<pubDate>Mon, 31 May 2010 04:00:41 +0000</pubDate>
		<dc:creator>Ismael Stahelin</dc:creator>
				<category><![CDATA[Boas Práticas]]></category>
		<category><![CDATA[Código Fonte]]></category>
		<category><![CDATA[Profissão]]></category>
		<category><![CDATA[Profissionalismo]]></category>

		<guid isPermaLink="false">http://ismaels.net/?p=28</guid>
		<description><![CDATA[Um bom profissional precisa garantir qualidade em seu trabalho. Você é um bom desenvolvedor? Um bom profissional? Veja porque uma coisa não leva necessariamente a outra.]]></description>
			<content:encoded><![CDATA[<p>Ainda continuando com a série &#8220;<strong>Listen to Uncle Bob</strong>&#8220;, gostaria de falar sobre profissionalismo na nossa profissão, ou seja, desenvolvedor de software. Não lembra do Uncle Bob? Bem eu comentei do livro dele em meu último post, &#8220;<a href="http://ismaels.net/2010/05/programacao-uma-atividade-social/">Programação, uma atividade social</a>&#8220;. Bem, em uma apresentação dele na <a href="http://blip.tv/file/2089545">RailsConf 2009</a> ele falou entusiasticamente sobre profissionalismo, entre outras coisas.</p>
<p>Voltando a questão do profissionalismo, essa semana eu estava lendo o livro &#8220;<strong>Scrum direto das trincheiras</strong>&#8220;, onde em determinado trecho o autor menciona que para ele a qualidade interna de um sistema não é negociável. Você pode conferir um resumo neste <a href="http://rosanaangelo.blogspot.com/2010/05/qualidade-nao-e-negociavel.html">post</a>, no blog da Rosana Angelo, minha colega de trabalho, onde ela fala exatamente sobre isso também. Porém, o ponto aqui não é falar de qualidade ou profissionalismo, simplesmente porque o autor do livro falou isso ou aquilo. Vou contar uma histórinha para ilustrar&#8230;</p>
<p>Eu ouvi uma vez um amigo, na primeira <a href="http://www.audaces.com.br">empresa</a> onde trabalhei como programador, que dizia o seguinte: &#8220;<em>com programação a gente só não faz chover, todo o resto a gente consegue fazer de um jeito ou de outro</em>&#8220;. Eu sinceramente não garanto o teor das palavras, mas a idéia era essa. Uma frase desse tipo pode levar a interpretações do tipo: &#8220;<em>testar é besteira, se ocorrer algum erro, depois consertamos</em>&#8220;, ou ainda, &#8220;<em>gastar tempo melhorando esse código aqui, pra quê, está funcionando&#8230;</em>&#8220;, ou &#8220;<em>Ok, vamos colocar só mais está coluna aqui na tabela do banco de dados, isso vai facilitar muito as coisas&#8230;</em>&#8220;.</p>
<p>Esses tipos de abordagens são extremamente nocivas, porque no fundo estão baseadas naquele tipo de pensamento que foi mencionado antes, ou seja, se fizer assim funciona, mas se fizer de outro jeito, também funciona. O ruim é que quase sempre, quem decide, acaba escolhendo o caminho mais curto, que muitas vezes, não é o mais adequado, mas sim o mais rápido e barato possível. É justamente nesse ponto que precisamos mostrar o nosso profissionalismo e fazer como o autor do <a href="http://www.infoq.com/minibooks/scrum-xp-from-the-trenches">livro sobre Scrum</a> (<strong>Henrik Kniberg</strong>), não negociar qualidade. Você pode negociar outras coisas como tempo, o quanto deve ser entregue, o custo, mas não a qualidade do seu código. (Apenas um adendo aqui, código de qualidade é um código no qual você confia, e você só pode garantir o seu código se você o testá-lo).</p>
<p>Não está convencido, então pare e pense sobre outras profissões, como médicos ou dentistas. Não podemos esquecer que em todas as profissões existem bons e maus profissionais, mas em geral esses profissionais tem um padrão de qualidade mínimo, sem o qual eles não tem como trabalhar e não trabalham. Um médico, a não ser em uma guerra, por exemplo, não vai abrir um sujeito em um local inapropriado, sem equipamentos de suporte e sem uma equipe qualificada para lhe dar suporte. Penso sobre isso, e da próxima vez que alguém pedir para você dar aquela &#8220;ajeitadinha&#8221; no sistema, diga NÃO!</p>
]]></content:encoded>
			<wfw:commentRss>http://ismaels.net/2010/05/e-voce-e-um-profissional/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Programação, uma atividade social</title>
		<link>http://ismaels.net/2010/05/programacao-uma-atividade-social/</link>
		<comments>http://ismaels.net/2010/05/programacao-uma-atividade-social/#comments</comments>
		<pubDate>Sun, 09 May 2010 23:49:39 +0000</pubDate>
		<dc:creator>Ismael Stahelin</dc:creator>
				<category><![CDATA[Boas Práticas]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Think different]]></category>
		<category><![CDATA[Código Fonte]]></category>
		<category><![CDATA[Clean Code]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Robert C. Martin]]></category>
		<category><![CDATA[Social]]></category>

		<guid isPermaLink="false">http://ismaels.net/?p=22</guid>
		<description><![CDATA[Entenda porque o código fonte não é "seu" e porque programar é uma atividade social. Nesse post estou relatando algumas impressões sobre o livro "Clean Code" do Robert C. Martin.]]></description>
			<content:encoded><![CDATA[<p>Recentemente iniciei a leitura do livro &#8220;<strong><a href="http://www.infoq.com/br/articles/clean-code-book-review">Clean Code</a></strong>&#8221; de <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. (Uncle Bob) Martin</a>. É um livro que descreve <strong>boas</strong>, eu diria ótimas, <strong>práticas</strong> de desenvolvimento relacionadas exclusivamente ao <strong>código fonte</strong> de aplicações. As observações do livro também não apontam para uma linguagem específicas, portanto podem e devem ser aplicadas com todas as linguagens.</p>
<p>Logo no começo do livro, capitulo 1 ou 2, ele menciona que: &#8220;<strong>Programar, codificar uma aplicação é uma atividade social</strong>&#8220;. Não se trata de uma tradução literal mas essa é a mensagem. Achei a afirmação muito interessante, e confesso que jamais havia pensado na tarefa de codificação como uma prática social. Eu sempre enxergava, tomando como exemplo um projeto open source qualquer, o ato de criação do projeto e mesmo o trabalho em equipe nesse sentido mas nunca o código em si. Normalmente pensamos da seguinte maneira: &#8220;<strong>O código é meu!</strong>&#8220;. Eu diria que essa afirmação é verdadeira até que você faça o commit do &#8220;<strong>seu</strong>&#8221; código para o repositório, depois disso, não mais.</p>
<p>Não está entendendo? Explico já. O Uncle Bob coloca em seu livro que devemos ter muito cuidado com o código fonte que escrevemos, porque afinal de contas quando o fazemos, estamos quase sempre fazendo isso para que outras pessoas &#8220;<strong>leiam</strong>&#8221; o nosso trabalho. O ato de escrever em si traz consigo esse sentido, ou seja, geralmente escrevemos algo para um outro alguém ler. Em nossa profissão isso também não é diferente, pois nada garante que o autor original do código será a pessoa que dará manutenção no mesmo.</p>
<p>Como o Uncle Bob tanto insiste no livro, o código que escrevemos precisa ser muito claro e direto, ele precisa ser capaz de transmitir sua intenção de forma objetiva, para que as outras pessoas que forem ler o código não percam um enorme tempo tentando entender o que pretendíamos com aquilo. Quantas vezes você já se viu nessa mesma situação? Quanto tempo já não perdeu por conta disso? Não seria ótimo encontrar <strong>um código que falasse com você</strong>, quando precisar dar manutenção nele? Reflita sobre isso. Tente imaginar como será dar manutenção no código que você acabou de escrever. Será que você mesmo vai conseguir entender ele depois de uns 2 ou 3 meses? Experimente chamar um colega e pedir para que ele &#8220;<strong>leia</strong>&#8221; o &#8220;<strong>seu</strong>&#8221; código para ver se a intenção está clara para ele. Só não vale dar pistas :-) Se ele não entender, pare, reescreva e depois chame uma pessoa diferente e peça que leia. Faça isso até que as pessoas não tenham nenhuma dificuldade para interpretar o seu código.</p>
<p>Se você é desenvolvedor e estava procurando uma boa leitura, eu recomendo fortemente esse livro. Aliás, eu penso que o sujeito <strong>não devia sair da faculdade sem antes tê-lo lido</strong>. É o tipo de livro que todo <strong>profissional</strong> da área de computação e sistemas deve ler e as empresas deviam ter em suas bibliotecas.</p>
]]></content:encoded>
			<wfw:commentRss>http://ismaels.net/2010/05/programacao-uma-atividade-social/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Você sabe o que é um iconoclasta?</title>
		<link>http://ismaels.net/2010/04/voce-sabe-o-que-e-um-iconoclasta/</link>
		<comments>http://ismaels.net/2010/04/voce-sabe-o-que-e-um-iconoclasta/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 16:05:02 +0000</pubDate>
		<dc:creator>Ismael Stahelin</dc:creator>
				<category><![CDATA[Think different]]></category>
		<category><![CDATA[Gregory Berns]]></category>
		<category><![CDATA[Iconoclasta]]></category>
		<category><![CDATA[Pensar Diferente]]></category>

		<guid isPermaLink="false">http://ismaels.net/?p=19</guid>
		<description><![CDATA[Um relato breve sobre a iconoclastia, baseado no livro O Iconoclasta que acabei de ler.]]></description>
			<content:encoded><![CDATA[<p>Como você avalia o seu modo de pensar? Você pensa como todo mundo, quero dizer, no mesmo sentido? Ao contemplar o mundo, podemos identificar exemplos de pessoas que pensam ou pensaram muito diferente da maioria, do senso comum. Isso é um fato. Podemos citar como exemplos, pessoas como <strong>Steve Jobs</strong>, <strong>Picasso</strong> e <strong>Henry Ford</strong>.</p>
<p>A diferença entre o &#8220;<strong>pensam</strong>&#8221; e o &#8220;<strong>pensaram</strong>&#8221; está, entre outras coisas, na habilidade em <strong>convencer</strong> os demais sobre o seu ponto de vista, tornando a sua maneira de pensar &#8220;comum&#8221;. Os que &#8220;pensam&#8221; diferentemente da maioria ainda precisam convencer o resto do mundo sobre suas visões. Entre os que &#8220;pensaram&#8221;, muitos foram bem sucedidos e muitos não foram capazes de tal proeza.</p>
<p>Porém, penso que a principal observação quanto as situações citadas é que, é muito importante e faz toda a diferença, <strong>acreditar</strong> no seu ponto de vista, na sua idéia, no seu negócio e tentar, da melhor maneira possível, convencer outras pessoas sobre isso. Temos muitos exemplos de pessoas brilhantes que não souberam vender as suas idéias ou defender os seus pontos de vista e que acabaram sendo taxadas de medíocres. Seja persistente, trabalhe as suas <strong>habilidades de interação social</strong> e corre atrás daquilo em que você acredita. Corra o risco de ser chamado de louco, afinal de contas, eu prefiro ser chamado de louco do que de <strong>medíocre</strong>.</p>
<p>Todo esse papo acima foi inspirado por uma visita a uma livraria, quando procurava por algum título interessante, esbarrei por acaso com um livro que havia sido deixado perto do local de consulta de preços. O livro, <strong>&#8220;<a href="http://www.amazon.com/Iconoclast-Neuroscientist-Reveals-Think-Differently/dp/1422133303/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1272204458&amp;sr=8-1">O iconoclasta</a></strong><strong>&#8220;</strong> foi escrito pelo neurocientista <strong>Gregory Berns</strong> e tenta explicar como e porque algumas pessoas tendem a ver as coisas de modo direferente do resto do mundo.</p>
<p>A capa do livro traz a definição de iconoclasta que encontramos no dicionário, que é a seguinte: <em><strong>Pessoa incomum que interpreta a realidade de maneira distinta e faz o que o senso comum julga inalcançável</strong></em>. Trata-se de uma leitura muito interessante porque o autor mescla histórias de iconoclastas famosos com explicações científicas detalhadas sobre o funcionamento do cérebro. Ele fala sobre o que tornava cada pessoa mencionada um iconoclasta e ainda explica como essas características são processadas pelo cérebro. É um livro fascinante e eu recomendo a leitura.</p>
]]></content:encoded>
			<wfw:commentRss>http://ismaels.net/2010/04/voce-sabe-o-que-e-um-iconoclasta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Descasque o seu código</title>
		<link>http://ismaels.net/2010/04/descasque-o-seu-codigo/</link>
		<comments>http://ismaels.net/2010/04/descasque-o-seu-codigo/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 16:10:16 +0000</pubDate>
		<dc:creator>Ismael Stahelin</dc:creator>
				<category><![CDATA[Boas Práticas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Casca]]></category>
		<category><![CDATA[Código Fonte]]></category>
		<category><![CDATA[Criatividade]]></category>
		<category><![CDATA[Empacotador]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Mercado]]></category>

		<guid isPermaLink="false">http://ismaels.net/?p=17</guid>
		<description><![CDATA[Você ou sua empresa tem a mania de criar as suas próprias APIs, criando uma casca de código sua sobre APIs de mercado? Pare com isso. Vou explicar aqui porque você não deve fazer isso.]]></description>
			<content:encoded><![CDATA[<p>Programadores são seres criativos, que precisam expor a sua criatividade sempre, ou acabam ficando frustrados. Além disso, alguns possuem dificuldade para lidar com a criatividade alheia. Eu chamo esse tipo de programador de <strong>empacotador</strong>. Eles pegam, por exemplo um framework estabelecido no mercado, e criam uma &#8220;<strong>casca</strong>&#8221; por cima, apenas empacotando as funções básicas, mas com uma API ligeiramente diferente. Depois disso eles costumam dizer: &#8220;<strong>Pronto, agora temos a nossa própria implementação de XXX e não dependemos mais diretamente do framework XXX. Isso é fantástico!</strong>&#8221;</p>
<p>De fantástica essa prática não tem nada. Alguns podem dizer que isso é um boa prática, já que realmente o código da sua aplicação passa a não depender de código alheio, interagindo somente com o seu próprio código. Penso que para se obter esse tipo de benefício basta encapsular o código que utiliza o framework ou API XXX em um método, mas não é necessário &#8220;<strong>esconder toda a implementação em algo, que de novo não tem nada</strong>&#8220;. E onde fica o aprendizado nesses casos? Como as outras pessoas no seu time irão aprender a trabalhar com o framework XXX? Isso é ruim para a evolução profissional dos desenvolvedores e ruim para a equipe como um todo.</p>
<p>Isso acaba causando um efeito &#8220;<strong>veja bem&#8230;</strong>&#8220;. Funciona assim, digamos que na empresa ZXY onde o Fulano trabalhava como desenvolvedor Java, o sujeito responsável pela arquitetura do sistema fosse um desses programadores empacotadores. Por baixo de todas as &#8220;cascas&#8221; eles usavam coisas como <a href="http://directwebremoting.org/dwr/index.html">DWR</a>, <a href="http://www.quartz-scheduler.org">Quartz</a>, <a href="http://jquery.com">JQuery</a> e <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a>, mas tudo era &#8220;empacotado&#8221;. Após 3 anos de empresa ZXY, o Fulano decide sair e buscar novos desafios porque se cansou de só programar com os bloquinhos da empresa ZXY. O Fulano então envia o seu currículo mostrando tudo aquilo que sabe e é chamado para uma entrevista. O entrevistador o questiona sobre a experiência dele com os frameworks citados anteriormente e ele responde: &#8220;<strong>Veja bem&#8230; eu não trabalhava diretamente com essas APIs, mas era praticamente a mesma coisa&#8230;</strong>&#8220;.</p>
<p>Se você já agiu como um &#8220;desenvolvedor empacotador&#8221;, repense o que está fazendo. Isso talvez tenha um efeito bom na sua relação com o seu chefe, já que vai parecer que você está economizando muito tempo de desenvolvimento para a empresa, empacotando todo aquele código e fazendo os programadores usar apenas o seu código maravilhoso. Porém no longo prazo isso se mostrará ruim, as pessoas se sentirão entediadas e desmotivadas. Se você não é o empacotador, mas o cara que tem que lidar com os pacotes, saia enquanto é tempo&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ismaels.net/2010/04/descasque-o-seu-codigo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Para que serve o controle de versão mesmo?</title>
		<link>http://ismaels.net/2010/03/para-que-serve-o-controle-de-versao-mesmo/</link>
		<comments>http://ismaels.net/2010/03/para-que-serve-o-controle-de-versao-mesmo/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 02:43:33 +0000</pubDate>
		<dc:creator>Ismael Stahelin</dc:creator>
				<category><![CDATA[Boas Práticas]]></category>
		<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Colaboração]]></category>
		<category><![CDATA[Criatividade]]></category>
		<category><![CDATA[CVS]]></category>
		<category><![CDATA[DVCS]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Martin Fowler]]></category>
		<category><![CDATA[Mercurial]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Revision Control]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://ismaels.net/?p=15</guid>
		<description><![CDATA[Você usa o controle de versão corretamente? Sabe para que ele serve? Será que o está usando como deveria, tirando proveito de tudo que ele pode lhe oferecer? Descubra mais neste post.]]></description>
			<content:encoded><![CDATA[<p>Você desenvolvedor certamente faz uso de algum sistema de versionamento de código fonte, os famosos VCS (Version Control Systems) ou ainda <a href="http://en.wikipedia.org/wiki/Revision_control">Revision Control</a>. Uma grande parte das pessoas hoje faz uso dos mais conhecidos como <a href="http://www.nongnu.org/cvs/">CVS</a> e o seu sucessor, o <a href="http://subversion.tigris.org">SVN</a>. Algo mais recente são os chamados sistemas de controle de versão distribuidos (Distributed VCS), sendo os mais famosos e usados o <a href="http://git-scm.com">Git</a> e o <a href="http://mercurial.selenic.com">Mercurial</a>.<br />
Recentemente, após alguns problemas e debates acalorados com amigos na empresa onde trabalho, por conta de dificuldades ocasionadas, não só pelo VCS que utilizamos mas também devido a política adotada lá, deparei-me fazendo as seguintes perguntas:</p>
<ul>
<li><strong>Será que todo mundo que trabalha com desenvolvimento de software tem os mesmos problemas com o controle de versão?</strong></li>
<li><strong>Estamos realmente utilizando o controle de versão da maneira correta?</strong></li>
</ul>
<p>Encontrei respostas em 2 posts do Martin Fowler, um com o título &#8220;<a href="http://martinfowler.com/bliki/VersionControlTools.html">Version Control Tools</a>&#8221; e outro &#8220;<a href="http://martinfowler.com/bliki/VcsSurvey.html">VCS Survey</a>&#8221; que mostra uma pesquisa realizada por ele, mostrando o que é mais usado/confiado pelos desenvolvedores que participaram da pesquisa. Infelizmente nós não utilizamos um dos mais populares, dentre os mencionados. Com relação ao procedimento utilizado, encontrei ainda outro ótimo post do Martin Fowler sobre &#8220;<a href="http://martinfowler.com/bliki/FeatureBranch.html">Feature Branch</a>&#8220;, que deixou claro que talvez fosse melhor mudar a nossa abordagem para desenvolver novas funcionalidades nos sistemas.<br />
Além desses, encontrei um outro post, excelente, sobre os DVCS, que fala de <a href="http://www.joelonsoftware.com/items/2010/03/17.html">um case de transição de um VCS para DVCS</a>. É sensacional o relato do autor, que mostra como a equipe ganhou mais agilidade com a troca do sistema de versionamento.</p>
<p>Depois dessa pequena pesquisa, ficou claro pra mim o quanto subestimamos as ferramentas de versionamento de código. Na maioria das vezes pensamos nelas apenas como &#8220;<strong>ferramentas de versionamento de código fonte</strong>&#8220;, quando na verdade, a escolha da ferramenta correta e o uso apropriado da mesma, pode transformá-la em uma &#8220;<strong>ferramenta de expansão da colaboração e criatividade</strong>&#8220;. Para não ficar repetindo o que já foi escrito, sugiro ler <a href="http://gc.blog.br/2009/09/24/colaboracao-e-open-source-dentro-da-empresa/">este post</a> do <strong>@gchapiewski</strong> sobre como o uso apropriado de ferramentas de controle de versão transformou o ambiente de trabalho do pessoal da <strong>Globo.com</strong>.</p>
<p>Não pense no controle de versão apenas como um software que guarda histórico de alterações e sim como uma ferramenta capaz de dar a você liberdade para tentar e, se preciso, voltar atrás.</p>
]]></content:encoded>
			<wfw:commentRss>http://ismaels.net/2010/03/para-que-serve-o-controle-de-versao-mesmo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#horaextra-floripa &#8211; O início</title>
		<link>http://ismaels.net/2010/03/horaextra-floripa-o-inicio/</link>
		<comments>http://ismaels.net/2010/03/horaextra-floripa-o-inicio/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 03:14:28 +0000</pubDate>
		<dc:creator>Ismael Stahelin</dc:creator>
				<category><![CDATA[Hora Extra Floripa]]></category>
		<category><![CDATA[#horaextra]]></category>
		<category><![CDATA[Agile Brazil 2010]]></category>
		<category><![CDATA[Campus Party]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://ismaels.net/?p=11</guid>
		<description><![CDATA[Relato do que rolou no primeiro #horaextra-floripa, encontro do pessoal que trabalha com tecnologia, para conversar, beber e se divertir.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Após 2 semanas desde o <a href="http://ismaels.net/2010/03/hora-extra-floripa/">anúncio</a> de que iríamos organizar o #horaextra-floripa, ontem conseguimos reunir o pessoal no local combinado. Os participantes foram: Eu (<strong>Tali</strong>), Leonardo D&#8217;agostini (<strong>Bozo</strong>), Ricardo Horigome (<strong>Pesca</strong>), Kelvin (<strong>Bíro</strong>), Antonio Coelho (<strong>BrindeBoy</strong>), Luiz Fernando (<strong>Penkal</strong>) e o Pablo (<strong>Cretino</strong>). Como é tradicional no <a href="http://horaextra.org">#horaextra</a>, após os encontros o pessoal registra os facts, um resumo do que rolou nas conversas. Sendo assim, vamos ao <strong>#horaextra-floripa facts</strong>.</p>
<p style="text-align: left;">
<p>Os facts:</p>
<p><strong>#</strong> Falamos (eu e o Penkal) sobre as expectativas para o <a href="http://www.agilebrazil.com/2010/pt/index.html">Agile Brazil 2010</a> que irá acontecer em junho na PUC-RS. Esperamos simplesmente o melhor para este evento. O Penkal, um fã incondicional, jura que vai tirar uma foto com o Martin Fowler e que o resto é resto :-)</p>
<p><strong>#</strong> Foi inevitável tocar no assunto dos frameworks desenvolvidos na própria empresa, que foi tema do meu <a href="http://ismaels.net/2010/03/porque-nao-criar-o-seu-proprio-framework-de-desenvolvimento/">último post</a>, já que dos 7 presentes, 6 trabalham na mesma empresa, e somos diretamente afetados por esse tipo de coisa.</p>
<p><strong>#</strong> Antonio e eu, relatamos as nossas experiências recentes com Rails, para 5 caras que só mexem com Java a uns 2 anos. Tirando Penkal, o resto da turma ainda se mostra um pouco cético. Mas ficamos de marcar um encontro mostrar como podemos fazer com Rails o que ele fazem com Java.</p>
<p><strong>#</strong> Tivemos também os relatos da última Campus Party, que eu e o Antonio participamos. O pessoal ficou empolgado, com vontade de ter estado lá. Eu considero aquilo a Méca dos nerds no Brasil, ou seja, pelo menos uma vez na vida você deve ir.</p>
<p><strong>#</strong> Decidimos que os #horaextra-floripa passarão a acontecer às terças-feiras, já parte da galera tem problemas com a segunda, por conta de outros eventos sociais já agendados para esses dias.</p>
<div id="attachment_12" class="wp-caption aligncenter" style="width: 394px"><a rel="attachment  wp-att-12" href="http://ismaels.net/2010/03/horaextra-floripa-o-inicio/attachment/15032010/"><img class="size-full wp-image-12 " title="Turma do #horaextra-floripa" src="http://ismaels.net/wp-content/uploads/2010/03/15032010.jpg" alt="#horaextra-floripa" width="384" height="288" /></a><p class="wp-caption-text">Galera no #horaextra-floripa, o primeiro.</p></div>
<p style="text-align: left;">Confesso que sendo esse o primeiro, foi um pouco difícil manter o foco das conversas na área tecnológia, mas acho que tá valendo, já que um dos objetivos do encontro também é a descontração. O pessoal que participou desse primeiro encontro se mostrou empolgado com a idéia do #horaexra, até mesmo quem não foi. Aos que não puderam ir, fica o convite para o próximo, terça-feira (23), às 19 h no quiosque da Brahma no Shopping Iguatemi.<br />
É isso, um abraço a todos e valeu pela presença! Vamos repetir :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://ismaels.net/2010/03/horaextra-floripa-o-inicio/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Porque não criar o seu próprio framework de desenvolvimento</title>
		<link>http://ismaels.net/2010/03/porque-nao-criar-o-seu-proprio-framework-de-desenvolvimento/</link>
		<comments>http://ismaels.net/2010/03/porque-nao-criar-o-seu-proprio-framework-de-desenvolvimento/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 02:26:08 +0000</pubDate>
		<dc:creator>Ismael Stahelin</dc:creator>
				<category><![CDATA[Boas Práticas]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Problemas]]></category>

		<guid isPermaLink="false">http://ismaels.net/?p=7</guid>
		<description><![CDATA[Em experiências recentes, pude acompanhar pelo menos 3 cases diferentes de empresas que &#8220;tentaram&#8221; criar e manter os seus próprios frameworks de desenvolvimento. Por acaso, nos três casos a tecnologia usada era Java, mas o aviso vale para qualquer linguagem. Em todos os casos foi possível perceber que essa escolha acaba levando para um caminho [...]]]></description>
			<content:encoded><![CDATA[<p>Em experiências recentes, pude acompanhar pelo menos 3 cases diferentes de empresas que &#8220;<strong>tentaram</strong>&#8221; criar e manter os seus próprios frameworks de desenvolvimento. Por acaso, nos três casos a tecnologia usada era Java, mas o aviso vale para qualquer linguagem. Em todos os casos foi possível perceber que essa escolha acaba levando para um caminho de atualizações lentas, quebras constantes de API, limitações de integração com outras tecnologias ou mesmo integrações mal sucedidas.<br />
Não que os desenvolvedores tenham pouco talento (tem vezes que sim), ou que só os &#8220;gringos&#8221; saibam fazer isso, não é isso. Como exemplo de framework brasileiro de sucesso eu posso citar o <a href="http://vraptor.caelum.com.br/">VRaptor da Caelum</a> que é um excelente framework Java para desenvolvimento Web com alta produtividade. Os problemas no caso das empresas acompanhadas são vários, e posso destacar os seguintes:</p>
<ul>
<li><strong>Desenvolvimento centralizado</strong>: Diferentemente do que acontece com projetos open source, naquelas empresas, o desenvolvimento, atualização e adicão de novas funcionalidades fica centralizado em uma pequena equipe, sem que ninguém mais na empresa possa ter acesso ao código para fazer suas próprias modificações. Esse posicionamento costuma ocasionar lentidão nas atualizações e limitação nas funcionalidades disponiblizadas.</li>
<li><strong>Se não foi feito aqui, então não serve</strong>: outro ponto percebido é que o que vem de fora, nunca serve exatamente, sendo assim, elas acabam tentando reinventar a roda para coisas que já existem prontas, ou praticamente. O correto seria buscar a solução open source mais próxima e se for o caso, alterar o código e ainda submeter a alteração de volta ao projeto. Vai que alguém mais precise do que acabou de ser implementado. É o mínimo que se deve fazer, como forma de contribuir com a comunidade.</li>
<li><strong>Documentação e treinamento</strong>: Outro problema ocasionado nos casos observados é que o tempo gasto para que um novo desenvolvedor alcance uma produtividade razoável, é maior quando você opta por desenvolver o seu próprio framework. Primeiro, porque o framework é algo que somente a sua empresa usa e segundo porque &#8220;geralmente&#8221; a documentação do projeto não está em dia, então você acaba gastando mais tempo tendo treinar o desenvolvedor, para que ele pelo menos conheça a API e as convenções utilizadas na empresa.</li>
</ul>
<p><img class="size-medium wp-image-9 aligncenter" style="margin-top: 3px; margin-bottom: 3px;" title="Suportando o seu framework" src="http://ismaels.net/wp-content/uploads/2010/03/elefante-branco-2-300x292.jpg" alt="" width="180" height="175" /></p>
<p>Em resumo o que devemos perceber é que criar o nosso próprio framework de desenvolvimento nem sempre (na maioria das vezes) é a solução para os problemas. Como o sujeito da foto pode atestar, carregar esse elefante nas costas só vai deixar a sua empresa mais lenta e vulnerável diante da concorrência. Por outro lado, utilizar frameworks de mercado que possuam apoio da comunidade pode trazer vantagens, tais como: facilidade para encontrar desenvolvedores treinados, suporte (fóruns, listas) e documentação atualizados e de fácil acesso e acompanhamento das tendências de mercado/comunidade, já que você estará acompanhando as evoluções implementadas no framework de mercado.</p>
<p>Por mais que a sua equipe seja qualificada e independente do tamanho dela, dificilmente você conseguirá superar, tanto em disponibilidade de tempo quanto em número de desenvolvedores, os projetos open source que são mantidos por centenas ou milhares de programadores pelo mundo. Comece a pensar na sua empresa como sendo parte da comunidade, contribua com o projeto ou projetos que você escolheu usar e pare de reinventar a roda!</p>
]]></content:encoded>
			<wfw:commentRss>http://ismaels.net/2010/03/porque-nao-criar-o-seu-proprio-framework-de-desenvolvimento/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hora extra Floripa!</title>
		<link>http://ismaels.net/2010/03/hora-extra-floripa/</link>
		<comments>http://ismaels.net/2010/03/hora-extra-floripa/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 04:47:08 +0000</pubDate>
		<dc:creator>Ismael Stahelin</dc:creator>
				<category><![CDATA[Hora Extra Floripa]]></category>
		<category><![CDATA[Floripa]]></category>
		<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://ismaels.net/?p=5</guid>
		<description><![CDATA[Convocação para o primeiro encontro do #horaextra-floripa, inspirado pelo #horaextra que acontece no Rio de Janeiro. ]]></description>
			<content:encoded><![CDATA[<p>Recentemente eu ouvi uma entrevista com o Henrique Bastos (<a href="http://henriquebastos.net">http://henriquebastos.net</a>), onde entre outras coisas, ele tentava explicar aos americanos o <strong>#horaextra</strong> que rola no Rio de Janeiro. Gostei da proposta do encontro e entrei em contato com ele para ter mais informações. Descobri que existe até um blog, o <a href="http://horaextra.org">http://horaextra.org</a>.<br />
Inspirado em tudo isso, proponho fazer a primeira reunião do <strong>#horaextra-floripa</strong>.</p>
<p>Os encontros ficam marcados para as <strong>segundas-feiras, às 19:00 hs</strong> no boteco da Brahma no shopping Iguatemi (no térreo). Eu não vou estabelecer o dia exatamente, mas se tivermos quórum já nesta segunda (15/03), faremos. Espero por propostas de assuntos para a pauta aqui nos comentários.</p>
]]></content:encoded>
			<wfw:commentRss>http://ismaels.net/2010/03/hora-extra-floripa/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

