

<?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>Rodrigo Kumpera Weblog &#187; project management</title>
	<atom:link href="http://www.kumpera.net/blog/index.php/category/project-management/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kumpera.net/blog</link>
	<description>Meus achados sobre tecnologia</description>
	<lastBuildDate>Thu, 14 Jul 2011 15:45:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Onde estão os bons arquitetos?</title>
		<link>http://www.kumpera.net/blog/index.php/2007/05/22/onde-estao-os-bons-arquitetos/</link>
		<comments>http://www.kumpera.net/blog/index.php/2007/05/22/onde-estao-os-bons-arquitetos/#comments</comments>
		<pubDate>Tue, 22 May 2007 19:28:08 +0000</pubDate>
		<dc:creator>kumpera</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2007/05/22/onde-estao-os-bons-arquitetos/</guid>
		<description><![CDATA[Acho curioso como o Phillip Calçado gosta de argumentar com a parede. Ainda mais quando ele é provocado sobre a utilidade de programação orientada a objetos. Acho uma discussão fútil, principalmente pelo fato de não corroborar com o principal problema enfrentado pela indústria &#8211; integração e colaboração entre aplicações.


Pode se argumentar que se trata de [...]]]></description>
			<content:encoded><![CDATA[<p>Acho curioso como o Phillip Calçado gosta de <a href="http://fragmental.com.br/blog/?p=347">argumentar com a parede</a>. Ainda mais quando ele é provocado sobre a utilidade de programação orientada a objetos. Acho uma discussão fútil, principalmente pelo fato de não corroborar com o principal problema enfrentado pela indústria &#8211; integração e colaboração entre aplicações.
</p>
<p>
Pode se argumentar que se trata de uma questão cultural, que a grande maioria dos desenvolvedores acham que o banco de dados deve ser o integrador de aplicações. Pensando rapidamente até faz sentido, já que todos os dados estão lá e as histórias de integração se resumiam a ler ou escrever dados fora do controle do sistema.
</p>
<p>
Eu defendo que se trata de visão míope, completa incapacidade de enxergar a longo prazo ou com um horizonte mais amplo. Qual sistema relevante de integração não possui comportamento a ser aproveitado? Ao utilizar um RDBMS simplesmente se anulam as chances de explorar todo código e regras de negócio já existentes. Uma pessoa letrada em desenvolvimento de software tem a obrigação de enxergar isso, de possui olho de peixe.
</p>
<p>
Agora se sua aplicação for desenvolvida apenas como uma casca para um repositório de dados, seja ele prevayler ou OODBMS ou relacional, ela vai entregar muito pouco valor para o cliente, nem o mínimo para ganhar o rótulo de moderna. Eu, e o Phillip também, gostaríamos mesmo de ver uma evolução no mercado, de existirem mais pessoas entendendo que hoje que escalabilidade e paralelismo também estão relacionados a desenvolvimento e deployment &#8211; conceitos estes que estão intimamente relacionados com a forma como uma aplicação se apresenta ao mundo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kumpera.net/blog/index.php/2007/05/22/onde-estao-os-bons-arquitetos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Execute queries contra o código do seu projeto</title>
		<link>http://www.kumpera.net/blog/index.php/2007/04/06/execute-queries-contra-o-codigo-do-seu-projeto/</link>
		<comments>http://www.kumpera.net/blog/index.php/2007/04/06/execute-queries-contra-o-codigo-do-seu-projeto/#comments</comments>
		<pubDate>Fri, 06 Apr 2007 16:30:24 +0000</pubDate>
		<dc:creator>kumpera</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2007/04/06/execute-queries-contra-o-codigo-do-seu-projeto/</guid>
		<description><![CDATA[ Métricas de software são muito úteis para identificar qual código merece atenção. Refactoring é uma técnica bem estabelecida de como evoluir um software de maneira ordenada. Qual a relação entre as duas coisas? Ambas exigem que seja feito algumas pesquisas sobre a base de código. Sempre imaginei as vantagens de uma ferramenta que permitisse [...]]]></description>
			<content:encoded><![CDATA[<p> Métricas de software são muito úteis para identificar qual código merece atenção. Refactoring é uma técnica bem estabelecida de como evoluir um software de maneira ordenada. Qual a relação entre as duas coisas? Ambas exigem que seja feito algumas pesquisas sobre a base de código. Sempre imaginei as vantagens de uma ferramenta que permitisse executar algo como SQL só que o domínio seria um projeto e não tabelas. </p>
<p> O Refactoring browser do smalltalk desenvolveu uma mini linguagem nesse sentido, para facilitar localizar, por exemplo, as invocações de um dado métodos. Finalmente esse poder chegou ao Java. Desenvolvido como um plugin para o Eclipse, o <a href="http://semmle.com/">Semmle Code</a> permite executar queries muito semelhantes ao SQL sobre projetos Java. Só de olhar o tutorial você já fica com água na boca com as possibilidades.</p>
<p> Os exemplos do próprio site já são muito interessantes, e mostram como essa ferramenta permite extrair informações extremamente uteis sobre uma base de código com muita facilidade. Quer saber quais classes possuem atributos públicos, use a seguinte query: </p>
<p><code><br />
from Field f, RefType t</p>
<p>where   f.hasModifier("public")<br />
      and<br />
      not(f.hasModifier("final"))<br />
select   f.getDeclaringType().getPackage(),<br />
         f.getDeclaringType(),<br />
       f<br />
</code></p>
<p> Muito simples, e, para completar, o plugin tem várias formas diferentes de visualizar o resultado. No geral, achei uma ótima ferramenta, vou explorar um pouco mais como ela funciona, mas pelo pouco que já ví, sei que vou acabar usando muito. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kumpera.net/blog/index.php/2007/04/06/execute-queries-contra-o-codigo-do-seu-projeto/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Você tem certeza se o sistema funciona?</title>
		<link>http://www.kumpera.net/blog/index.php/2007/01/14/voce-tem-certeza-se-o-sistema-funciona/</link>
		<comments>http://www.kumpera.net/blog/index.php/2007/01/14/voce-tem-certeza-se-o-sistema-funciona/#comments</comments>
		<pubDate>Mon, 15 Jan 2007 00:05:05 +0000</pubDate>
		<dc:creator>kumpera</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2007/01/14/voce-tem-certeza-se-o-sistema-funciona/</guid>
		<description><![CDATA[
Em algum momento sempre temos de parar e verificar se aquilo que desenvolvemos funciona, normalmente esta é aquela parte chata que temos de executar um enorme roteiro de testes para concluir o obvio &#8211; que funciona. O problema disso é que desenvolvedor é um bicho muito presunçoso e acha que não comete erros, mas devido [...]]]></description>
			<content:encoded><![CDATA[<p>
Em algum momento sempre temos de parar e verificar se aquilo que desenvolvemos funciona, normalmente esta é aquela parte chata que temos de executar um enorme roteiro de testes para concluir o obvio &#8211; que funciona. O problema disso é que desenvolvedor é um bicho muito presunçoso e acha que não comete erros, mas devido ao enorme componente humano que existe na programação, vão sempre existir defeitos a serem encontrados pela equipe de QA. Automação de testes é a solução que eu considero a mais prática e, ao mesmo tempo, efetiva.</p>
<p>
Testes que podem ser executados várias vezes são uma vantagem a partir da segunda vez que são necessários, pela minha experiência após uma certa prática no assunto, o custo de codificar um teste é quase o mesmo de executá-lo manualmente duas vezes. Esse custo diminui ao longo do projeto, quando vários elementos reusáveis dos testes aparecem, chegando a ser próximo do mesmo da execução manual.</p>
<p>
Existem várias categorias de testes: funcionais, unitários, de integração, caixa-branca, caixa-preta, bla, bla, bla. Acho que no final das contas podemos dividir os testes em duas categorias: os que ajudam os desenvolvedores e os que medem o progresso do projeto. Os primeiros servem para verificar partes do sistema que não se traduzem em requisitos funcionais, os testes unitários de uma classe, por exemplo. Os outros são os testes funcionais, são os mais importantes também, pois, além de tudo, podem medir o nível de confiança de um projeto em entregar no prazo com qualidade.</p>
<p>
Testes funcionais são os mais dificeis de escrever e planejar. Existem alguns cuidados que devemos tomar, o pricipal é substituir os sistemas externos por versões sob nosso controle, coisas como banco de dados e web-services são faceis o resto vai exigir mais trabalho. É crucial fazer isso em vez de usar recursos compartilhados, pois senão eles podem deixar de ser determinísticos, falhando sem motivo. Banco de dados em memoria são a melhor ferramenta que você pode querer, eu utilizo o HSQLDB eu não tenho do que reclamar.</p>
<p>
Finalmente, temos várias ferramentas para ajudar a escrever os testes, tais como Fitnesse ou Selenium, cada um tem sua utilidade e recomendo explorá-las para saber quais ferramentas você tem a mão. Elas ajudam muito a criar os testes e permitir que eles, caso necessário, sejam reusados e integrados no processo de build da sua aplicação.</p>
<p>
Testes funcionais, quando automatizados, são o artefato mais importante de um sistema, pois certifica que o conjunto de funcionalidades verificados funciona. O valor dessa garantia é muito grande depois que você sente a diferença.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kumpera.net/blog/index.php/2007/01/14/voce-tem-certeza-se-o-sistema-funciona/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>De volta das férias &#8211; retomando meus projetos</title>
		<link>http://www.kumpera.net/blog/index.php/2006/12/11/de-volta-das-ferias-retomando-meus-projetos/</link>
		<comments>http://www.kumpera.net/blog/index.php/2006/12/11/de-volta-das-ferias-retomando-meus-projetos/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 14:28:16 +0000</pubDate>
		<dc:creator>kumpera</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/12/11/de-volta-das-ferias-retomando-meus-projetos/</guid>
		<description><![CDATA[
Minhas férias estão no fim, volto esta semana a trabalhar. Aproveitei esses últimos dias atoa em casa para, entre outras coisas, retormar alguns projetos. Atualmente eu tenho três pet projects em andamento, uma Java-in-Java JVM, um debugger de Erlang pra Eclipse e um framework de networking usando CPS. Dos três estou dando atenção apenas a [...]]]></description>
			<content:encoded><![CDATA[<p>
Minhas férias estão no fim, volto esta semana a trabalhar. Aproveitei esses últimos dias atoa em casa para, entre outras coisas, retormar alguns projetos. Atualmente eu tenho três pet projects em andamento, uma Java-in-Java JVM, um debugger de Erlang pra Eclipse e um framework de networking usando CPS. Dos três estou dando atenção apenas a JVM, pois ela é a única que ainda não me produziu um demo.
</p>
<p>
O principal critério que eu tenho para graduar um experimento para pet-project é conseguir produzir um demo razoavel. Sempre fui assim e considero um critério razoavel. Estou a 18 meses indo e vindo com essa JVM para conseguir produzir um Hello World, e existem uma enorme gama de problemas envolvidos com isso, dos quais a maioria foram causados por minha falta de conhecimento do assunto.
</p>
<p>
Primeiro tive que aprender tudo sobre o assunto e ter alguns falsos inícios &#8211; protótipos que foram descartados por completo. Depois tive que construir um compilador nativo Java capaz de se compilar, isso envolveu uma série de evoluções na arquitetura que sempre atrasavam muito o tão desejado hello world. Por final, agora estou enfrentando o problema de adaptar o compilador estático e a intraestrutura de execução para funcionarem como uma máquina virtual.
</p>
<p>
 O fato mais marcante que eu vi ao longo desse projeto foi que sempre que eu conseguia um avanço significativo ele pode ser atribuido a uma evolução nos testes automatizados do projeto. O compilador passo a funcionar direito quando eu criei um conjunto pequeno da ordem de 70 testes para verificar o comportamento dele, isso me permitiu evoluir com uma taxa de defeitos muito baixa. Estou agora escrevendo outro conjunto de testes para verificar o comportamento da máquina virtual, eles já me ajudaram a encontrar vários bugs.
</p>
<p>
No atual rítmo devo em breve implementar JNI e finalmente ter como escrever java.lang.System. Depois disso, é dar continuidade aos elementos que deixei para traz, como melhor conformidade a especificação e suporte a multi-threading. O legal deste meu pet-project é que dificilmente vou ficar sem coisa para fazer e a dificuldade nunca diminui.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kumpera.net/blog/index.php/2006/12/11/de-volta-das-ferias-retomando-meus-projetos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Estou viciado em testes funcionais</title>
		<link>http://www.kumpera.net/blog/index.php/2006/10/02/estou-viciado-em-testes-funcionais/</link>
		<comments>http://www.kumpera.net/blog/index.php/2006/10/02/estou-viciado-em-testes-funcionais/#comments</comments>
		<pubDate>Mon, 02 Oct 2006 03:14:57 +0000</pubDate>
		<dc:creator>kumpera</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/10/02/estou-viciado-em-testes-funcionais/</guid>
		<description><![CDATA[Está é minha nova mania. Usar testes funcionais automatizados. Primeiro comecei com um projeto pessoal meu, no qual a quantidade de regressões era enorme, e depois no trabalho, quando eu automatizei boa parte dos testes de uns sistemas bem cabeludos. E parece mágica, na segunda iteração de desenvolvimento, o custo de escrevê-los já se pagou.
Eu [...]]]></description>
			<content:encoded><![CDATA[<p>Está é minha nova mania. Usar testes funcionais automatizados. Primeiro comecei com um projeto pessoal meu, no qual a quantidade de regressões era enorme, e depois no trabalho, quando eu automatizei boa parte dos testes de uns sistemas bem cabeludos. E parece mágica, na segunda iteração de desenvolvimento, o custo de escrevê-los já se pagou.</p>
<p>Eu sempre tentei usar ao máximo automação de testes, quase sempre foi com os unitários, só que mais por conta da forma que eu desenvolvo. Agora que recentemente eu começei a usar pesadamente os funcionais, posso dizer que é o melhor investimento que uma equipe pode fazer em um projeto.</p>
<p>Primeiro que dificilmente um sistema não vá sofrer manutenções grandes ao longo de sua vida útil, então simplesmente o fato de poder executar de forma barata um enorme conjunto de testes é muito bom. Segundo, pela minha pouca experiência, automatizar testes funcionais custa em termos de tempo, pouco mais de 1,5x o custo de executá-los manualmente. Logo, na segunda execução você já entra no lucro.</p>
<p>Finalmente, uma boa suite automatizada de testes te da muito mais liberdade e segurança para fazer manutenções mais ousadas, de forma mais agil e gastando menos tempo.</p>
<p>Eu desenvolvi uma suite de testes funcionais para a JVM que estou escrevendo, ela é bem pequena, mas serve por enquanto para garantir todo funcionamento básico do sistema, e todo bug que encontro ganha mais um teste para aumentar sua robustes. Só isso me permitiu refatorar e reestruturar o sistema todo com poucos bugs sobrando.<br />
Então, se você quiser dar uma sugestão para o seu gerente que vai melhorar em muito a qualidade dos sistemas produzidos pela sua equipe e reduzir custos, diga para ele que testes funcionais automatizados devem ser escritos para todo o sistema.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kumpera.net/blog/index.php/2006/10/02/estou-viciado-em-testes-funcionais/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Integração entre sistemas- Inferno com letra maiúscula.</title>
		<link>http://www.kumpera.net/blog/index.php/2006/07/11/integracao-entre-sistemas-inferno-com-letra-maiuscula/</link>
		<comments>http://www.kumpera.net/blog/index.php/2006/07/11/integracao-entre-sistemas-inferno-com-letra-maiuscula/#comments</comments>
		<pubDate>Tue, 11 Jul 2006 04:22:03 +0000</pubDate>
		<dc:creator>kumpera</dc:creator>
				<category><![CDATA[Arquitetural Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/07/11/integracao-entre-sistemas-inferno-com-letra-maiuscula/</guid>
		<description><![CDATA[Simples assim, integração entre sistemas é um Inferno, é uma fonte enorme e interminavel de dor de cabeça. Hoje existe tecnologia disponivel para facilitar isso, mas parecer que a maioria ainda pensa nissa da pior forma possivel. Vamos lá, vou ser um pouco assertivo para deixar uma coisa bem clara:
Compartilhar dados é estupido, exponha o [...]]]></description>
			<content:encoded><![CDATA[<p>Simples assim, integração entre sistemas é um <strong>Inferno</strong>, é uma fonte enorme e interminavel de dor de cabeça. Hoje existe tecnologia disponivel para facilitar isso, mas parecer que a maioria ainda pensa nissa da pior forma possivel. Vamos lá, vou ser um pouco assertivo para deixar uma coisa bem clara:</p>
<p align="center"><strong>Compartilhar dados é estupido, exponha o comportamento do seu sistema.</strong><br />
Isso mesmo, avisar os desenvolvedores da outra equipe para eles usarem alguns selects que sua equipe definiu para fazer a integração é uma idéia <strong>horrivel</strong>. Os dados são a parte menos expressiva e ao mesmo tempo a mais sensivel do sistema.</p>
<p>Todo sistema depois que cresce além do trivial embute muito valor semântico aos dados que existem no banco, se você integrar nesse nível todos vão precisar saber isso ao risco de fazer ou ver a coisa errada. Ainda para piorar, essa técnica vira uma barreira à evolução, você não pode alterar o schema e continuar com suas alterações até que todos sistemas relacionados sejam também atualizados. Moral da história, integração feita no banco de dados é como se em um casamento os noivos trocassem pedaços de víceras em vez de alianças.</p>
<p>Tudo bem, já disse que é ruim, mas como fazer isso então? Crie uma série de serviços que expoam a funcionalidade pública do seu sistema e deixe o resto por conta da criatividade das outras equipes, elas vão agradecer. Isso normalmente significa lançar mão de usar EJB, CORBA, RMI e, principalmente, Web Services. Esse uso de Web Services é o que eu classifico por SOA pragmático, aquele que existe por algum propósito justo, existe para avisar e mostrar ao mundo as coisas que seu sistema pode fazer, como ele se comporta.<br />
As vezes é meio chocante ver que com todo esse marketing feito por todos vendedores empurrando SOA não teve o menor impacto positivo. A parte que sofre mais parece ser a que menos adota esse tipo de tecnologia. Mas enfim, espero que esse post tenha servido pelo menos para avisar do desastre anunciado que é compartilhar as entranhas do seu sistema com os demais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kumpera.net/blog/index.php/2006/07/11/integracao-entre-sistemas-inferno-com-letra-maiuscula/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Senso comum é só um sintoma</title>
		<link>http://www.kumpera.net/blog/index.php/2006/06/19/senso-comum-e-so-um-sintoma/</link>
		<comments>http://www.kumpera.net/blog/index.php/2006/06/19/senso-comum-e-so-um-sintoma/#comments</comments>
		<pubDate>Tue, 20 Jun 2006 01:41:36 +0000</pubDate>
		<dc:creator>kumpera</dc:creator>
				<category><![CDATA[anger management]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/06/19/senso-comum-e-so-um-sintoma/</guid>
		<description><![CDATA[Eu pensei primeiro em deixar um comentário a esse incrivel post do Phillip sobre senso comum, mas acabou que ele mereceu um post inteiro. Acho que dizer que as pessoas gostam de senso comumnão vai realmente à raiz da causa. Mais fundo podemos encontrar o medo das pessoas a mudanças.
Senso comum é um ótimo exemplo [...]]]></description>
			<content:encoded><![CDATA[<p>Eu pensei primeiro em deixar um comentário a esse <a href="http://fragmental.com.br/blog/?p=218">incrivel post do Phillip</a> sobre senso comum, mas acabou que ele mereceu um post inteiro. Acho que dizer que as pessoas gostam de senso comumnão vai realmente à raiz da causa. Mais fundo podemos encontrar o medo das pessoas a mudanças.</p>
<p>Senso comum é um ótimo exemplo de aversão a mudanças. Ele surge porque alguém disse que viu outros fazendo e pareceu legal. Só ver que assim que se fala em usar EJB a maioria já pensa nos DTOs que vão precisar escrever, ou melhor, VOs, para sermos fieis às origens.</p>
<p>Alguém já usou, já fez, já falou do assunto. Muito já ouviram e repetiram. Pronto, já virou senso comum. A partir desse ponto não fazer assim é querer mudar as regras do jogo e para isso precisamos pensar, propor, discutir e <strong>confrontar </strong>os demais. Para isso acontecer é preciso estar armado de argumentos, razões e motivos, ter uma boa dose de <strong>coragem </strong>para tirar todos da zona de conforto de uma coisa já formulada e pensada por outros.<br />
O senso comum é nada mais que uma manifestação de um problema ainda maior, o medo que mudanças e suas incertezas carregam. Podem ver, existe muita gente que adora de escorar nisso para justificar ações e medidas descabidas. Inércia de questionamento causa isso, você não se pergunta o por que de algo acontecer por tempo suficiente até assumir que se trata de uma verdade, o famoso concenso por omissão.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kumpera.net/blog/index.php/2006/06/19/senso-comum-e-so-um-sintoma/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Programador junior, você ainda vai ser vítima de um</title>
		<link>http://www.kumpera.net/blog/index.php/2006/04/26/programador-junior-voce-ainda-vai-ser-vitima-de-um/</link>
		<comments>http://www.kumpera.net/blog/index.php/2006/04/26/programador-junior-voce-ainda-vai-ser-vitima-de-um/#comments</comments>
		<pubDate>Wed, 26 Apr 2006 03:48:20 +0000</pubDate>
		<dc:creator>kumpera</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[anger management]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/04/26/programador-junior-voce-ainda-vai-ser-vitima-de-um/</guid>
		<description><![CDATA[Todos nós começamos a programar sem saber muito do assunto, somos então rotulados de júnior. Um rótulo que então todo dia sonhamos em se livrar, afinal programador júnior é o mesmo que o &#8220;café-com-leite&#8221; do pega-pega. O ruim dessa posição é que mesmo sem saber bem como se escreve um software, já tem que produzir [...]]]></description>
			<content:encoded><![CDATA[<p>Todos nós começamos a programar sem saber muito do assunto, somos então rotulados de júnior. Um rótulo que então todo dia sonhamos em se livrar, afinal programador júnior é o mesmo que o &#8220;café-com-leite&#8221; do pega-pega. O ruim dessa posição é que mesmo sem saber bem como se escreve um software, já tem que produzir como os demais. Ai que mora o perigo, uma pessoa nessa função pode até saber programar, mas deve ter os auspícios dos mais safos de sua equipe para evitar desastres.<br />
Dificilmente uma equipe de desenvolvimento vai contar somente com desenvolvedores experiêntes, os que sabem menos tem a tanta obrigação de aprender quando os demais de ensinar. O problema disso fica por conta de como encaixar isso na dinâmica da execução de um projeto e na minha opinião a forma mais eficaz é o feedback sobre o código produzido. Esse feedback pode ocorrer atraves de code-reviews, pair programming ou qualquer outra maneira que leve ao questionamento das decisões tomadas.</p>
<p>Garantir que esse feedback ocorra, e em tempo habil para ser útil, é obrigação do lider do projeto, que deve criar o espaço e habito entre os demais. Tem formas razoaveis de fazer isso, como, por exemplo, instituir semanlmente um code-review das classes que aparecerem mais feias em um relatório de métricas ou pedir que uma pessoa mande o trecho de código mais cabeludo do atual projeto dela para ser sabatinado.</p>
<p>O mais importante nisso tudo é evitar que se crie uma bola de neve de desenvolvedor inexperiente criar aquela obra de arte impossivel de se manter e que é rotulada de legado antes mesmo de ir para o ar.</p>
<p>Espero então que esse post sirva pelo menos para todas as vítimas de programadores júnior &#8211; aquelas que tiveram que se aventurar em códigos por eles escritos &#8211; entenderem que tem de dividir a culpa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kumpera.net/blog/index.php/2006/04/26/programador-junior-voce-ainda-vai-ser-vitima-de-um/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Todo gerente de projeto deveria ser ginecologista</title>
		<link>http://www.kumpera.net/blog/index.php/2006/04/15/todo-gerente-de-projeto-deveria-ser-ginecologista/</link>
		<comments>http://www.kumpera.net/blog/index.php/2006/04/15/todo-gerente-de-projeto-deveria-ser-ginecologista/#comments</comments>
		<pubDate>Sat, 15 Apr 2006 20:16:37 +0000</pubDate>
		<dc:creator>kumpera</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.kumpera.net/blog/index.php/2006/04/15/todo-gerente-de-projeto-deveria-ser-ginecologista/</guid>
		<description><![CDATA[O a situação é alarmante, você se matando para resolver os problemas encontrados de última hora e ainda tem que ouvir &#8220;te vire, a criança é sua&#8221;. Isso pode ser muito bem dito pelo médico quando a criança nasce toda estrupiada ou pelo seu gerente quando descobriram que o sistema não consegue atender nem metade [...]]]></description>
			<content:encoded><![CDATA[<p>O a situação é alarmante, você se matando para resolver os problemas encontrados de última hora e ainda tem que ouvir &#8220;te vire, a criança é sua&#8221;. Isso pode ser muito bem dito pelo médico quando a criança nasce toda estrupiada ou pelo seu gerente quando descobriram que o sistema não consegue atender nem metade da capacidade esperada.</p>
<p>Um software existe muito além da entrega; ele precisa funcionar corretamente, precisa atender a demanda inicial e precisa estar pronto para os próximos desafios. Não muito diferente de fazer o primeiro filho, duas pessoas que precisam aprender a ser pais e garantir que nada de ruim vai acontecer durante a gestação &#8211; vão fazer os tais exames pré-natal.</p>
<p>Ainda que fazer um software não seja apenas chegar ao ponto de gritar &#8220;Está pronto!&#8221;, muito gerente prefere fazer assim. Ordena que a execução seja feita dessa forma, sem permitir que prestem atenção aos, então correntes, detalhes do projeto. Coisas bobas como qualidade, escalabilidade e manutenibilidade. Chega ser realmente estranho, já que a grande maioria deles adora ter um grande portifólio de &#8220;***dade&#8221; na manga.</p>
<p>Por essas e outras que processos tradicionais de software falham. Testes não devem ser feitos somente no final de um ciclo de desenvolvimento, devem ser feitos com o menor intervalo possivel e para todos os critérios que são importantes. Testes automatizados são fundamentais para isso, caso contrario a equipe de testers precisa ser do tamanho da torcida do Flamengo.</p>
<p>Escrever código de teste só é perda de tempo pro desenvolvedor se ele não for capaz de enxergar todo o ciclo de vida daquilo que programa.  O desafio é conseguir mostrar a matemática disso para um gerente. Olha que isso é uma coisa que os ginecologistas já aprenderam a muito tempo &#8211; cuide bem daquilo que você cria.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kumpera.net/blog/index.php/2006/04/15/todo-gerente-de-projeto-deveria-ser-ginecologista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

