<?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>eXocorteX</title>
	<atom:link href="http://exocortex.com.br/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://exocortex.com.br/blog</link>
	<description>A artificial external information processing system that augment my brain&#039;s memories.</description>
	<lastBuildDate>Tue, 05 Apr 2011 02:58:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>O gargalo de conhecimento</title>
		<link>http://exocortex.com.br/blog/2011/04/305/</link>
		<comments>http://exocortex.com.br/blog/2011/04/305/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 02:39:22 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Gerenciamento]]></category>
		<category><![CDATA[práticas]]></category>

		<guid isPermaLink="false">http://exocortex.com.br/blog/?p=305</guid>
		<description><![CDATA[No desenvolvimento de software há muitas maneiras de se transferir conhecimento sobre um produto para as pessoas que efetivamente o constroem. A produção pode ser severamente prejudicada, entretanto, se esse conhecimento é produzido mais rapidamente do que pode ser consumido. Esse é o gargalo da transferência de conhecimentos. Recentemente, organizou um workshop para experiência de três [...]]]></description>
			<content:encoded><![CDATA[<p>No desenvolvimento de software há muitas maneiras de se transferir conhecimento sobre um produto para as pessoas que efetivamente o constroem. A produção pode ser severamente prejudicada, entretanto, se esse conhecimento é produzido mais rapidamente do que pode ser consumido. Esse é o <strong>gargalo da transferência de conhecimentos</strong>.</p>
<p>Recentemente, organizou um workshop para experiência de três formas diferentes de transferência de conhecimento em um ambiente de produção. O produto, nesse caso, era um avião de papel de desenho incomum projetado por um &#8220;designer-chefe&#8221;. A idéia era tentar formas diferentes de transferir o conhecimento de como construir o avião e comparar a produtividade relativa dos diferentes métodos, que foram:</p>
<ul>
<li><strong>Documentação</strong> &#8211; Os trabalhadores receberam instruções escritas para a construção do avião.</li>
<li><strong>Engenharia Reversa</strong> &#8211; Os trabalhadores receberam um avião concluído que eles poderiam estudar a fim de reproduzir os passos necessários para construí-lo.</li>
<li><strong>Mentoring</strong> &#8211; O &#8220;designer-chefe&#8221; construiu um passo a passo do avião e os trabalhadores replicaram cada passo conforme ele foi realizado.</li>
</ul>
<p>Os resultados foram interessantes.</p>
<p>Utilizando a <em>Documentação</em>, apenas uma pessoa de um total de 8 chegou perto de construir o avião em 5 minutos. Usando a <em>engenharia reversa</em>, 2 pessoas em 8 produziram um avião em cinco minutos. Usando o <em>Mentoring</em>, todos da equipe produziram um avião e em menos de cinco minutos disponíveis.</p>
<h3>O gargalo da transferência de conhecimentos em software</h3>
<p>Durante o desenvolvimento de software, a transferência de conhecimento acontece o tempo todo, e é fácil imaginar um desenvolvedor no papel do &#8220;designer-chefe&#8221; descrito no exercício anterior.</p>
<p>Vamos dizer que eu sou um desenvolvedor, e que descobri e escrevi um super código que contem uma nova técnica para ligar dados com os controles de uma interface visual, e que essa técnica forma um padrão que os meus colegas desenvolvedores querem saber. Se você fosse um dos meus colegas desenvolvedores, você preferiria que eu (a) lhe desse um documento que escrevi sobre a técnica, (b) lhe dissesse onde está o código e sugerisse que você descobrisse por si mesmo, ou (c), pareasse com você e implementasse o padrão para um novo conjunto de dados?</p>
<p>Agora, certamente, o pareamento com você toma mais do meu tempo, e pode parecer menos eficiente do meu ponto de vista. Afinal, eu poderia estar projetando e implementando o próximo padrão. Mas a produtividade da equipe como um todo, ao invés de minha produtividade pessoal, é que é importante. E <strong>mentoring</strong> ajuda a aumentar a produtividade da equipe, evitando os <strong>gargalos de transferência de conhecimento</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://exocortex.com.br/blog/2011/04/305/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come&#231;ando pelo final</title>
		<link>http://exocortex.com.br/blog/2011/03/comeando-pelo-final/</link>
		<comments>http://exocortex.com.br/blog/2011/03/comeando-pelo-final/#comments</comments>
		<pubDate>Sat, 26 Mar 2011 00:36:50 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Metodologias]]></category>
		<category><![CDATA[Testes]]></category>
		<category><![CDATA[codigo-fonte]]></category>
		<category><![CDATA[práticas]]></category>

		<guid isPermaLink="false">http://exocortex.com.br/blog/?p=290</guid>
		<description><![CDATA[Nos dias anteriores ao Google Maps, costumava-se perguntar a outras pessoas como chegar a determinado lugar e, muitas vezes, um voluntário se dispunha a desenhar um mapa em uma folha de papel. A maioria das pessoas (inclusive eu), ao desenhar um mapa, começará do início. Ou seja, começamos o desenho do ponto de partida e [...]]]></description>
			<content:encoded><![CDATA[<p>Nos dias anteriores ao Google Maps, costumava-se perguntar a outras pessoas como chegar a determinado lugar e, muitas vezes, um voluntário se dispunha a desenhar um mapa em uma folha de papel. A maioria das pessoas (inclusive eu), ao desenhar um mapa, começará do início. Ou seja, começamos o desenho do ponto de partida e prosseguimos até o destino.</p>
<p>O resultado quase sempre é suficiente para levar o fulano “perdido” do ponto A ao ponto B, mas, na maioria das vezes, o destino acaba amontoado em um cantinho da página, como se estivesse em segundo plano e não fosse a informação mais importante do mapa.</p>
<p>Certamente faz sentido desenhar um mapa dessa forma. Imagino que a principal razão para fazê-lo desta maneira é que, ao desenhar um mapa, imaginamos realmente fazer a viagem que estamos descrevendo. Começamos no início de nossa viagem imaginária e, eventualmente, encontramos nosso caminho para o destino. E, a menos que se comece com um papel enorme ou que seja particularmente bom em prever alocação de espaço, o mapa acaba contendo informações extras que não são necessárias, enquanto os detalhes do destino são omitidos porque acabamos com o espaço antes da hora.</p>
<p>Então, quando desenhar mapas, comece a desenhar do fim. O primeiro lugar a colocar em um mapa é o destino. De lá, trabalhe para trás, puxando as ruas que conduzem ao destino. Então, se sobrar espaço, desenhe os caminhos de volta ao ponto de origem. O resultado é um mapa que destaca os detalhes importantes.</p>
<h2><strong>Escrevendo Software</strong></h2>
<p>Grande número de programadores costuma escrever código de cima para baixo. Ou seja, começam no início do método e escrevem o código na ordem em que será executado. Faz sentido, já que fomos ensinados a ler e escrever de cima para baixo. Parece o caminho natural. Infelizmente, esta abordagem tende a introduzir código desnecessário para o método que terá de ser retirado mais tarde.</p>
<p>Então, quando escrever software, começe pelo fim (acho que vi essa frase aí para cima). Ao escrever um teste unitário, comece pela declaração <em>assert, </em>mesmo que ela seja exercitada sobre objetos que ainda não existem. Comece com o <em>assert</em>, veja o que a afirmação exige e escreva uma linha de código acima para satisfazer essas exigências. Se ao satisfazer essas exigências novos requisitos forem introduzidos, escreva uma nova linha de código acima disso, e assim por diante.</p>
<p>O resultado é um teste unitário que não tem qualquer bagagem extra, nenhuma informação supérflua, com ênfase na parte mais importante, o <em>assert</em> .</p>
<p>A afirmação em um teste de unidade é análoga ao destino em um mapa. Ambos são as peças mais importantes. Ambos são excelentes pontos de partida.</p>
<a name='fb_share' type='button_count' href='http://www.facebook.com/sharer.php'>Share</a><script src='http://static.ak.fbcdn.net/connect.php/js/FB.Share' type='text/javascript'></script>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://exocortex.com.br/blog/2011/03/comeando-pelo-final/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Um problema de &#8216;scrum&#226;ntica&#8217;</title>
		<link>http://exocortex.com.br/blog/2011/03/um-problema-de-scrumntica/</link>
		<comments>http://exocortex.com.br/blog/2011/03/um-problema-de-scrumntica/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 00:07:46 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://exocortex.com.br/blog/2011/03/um-problema-de-scrumntica/</guid>
		<description><![CDATA[Muito se tem questionado sobre a adequação do título ScrumMaster para descrever uma pessoa que assistiu a um curso de dois dias (o Certified ScrumMaster ou CSM). Acredito que o título é adequado. Aqui está o porquê: ScrumMaster não significa &#8220;aquele que dominou Scrum&#8221; O significado do título ScrumMaster pode ser interpretado de várias maneiras, [...]]]></description>
			<content:encoded><![CDATA[<p>Muito se tem questionado sobre a adequação do título <em>ScrumMaster</em> para descrever uma pessoa que assistiu a um curso de dois dias (o Certified ScrumMaster ou CSM). Acredito que o título é adequado. Aqui está o porquê:</p>
<h3>ScrumMaster não significa &#8220;aquele que dominou Scrum&#8221;</h3>
<p>O significado do título <em>ScrumMaster</em> pode ser interpretado de várias maneiras, devido à ambigüidade do idioma inglês. A palavra <em>mestre</em>, de acordo com <a href="http://dictionary.reference.com/browse/master">dictionary.com</a>, tem vários significados, incluindo:</p>
<ul>
<li>uma pessoa eminentemente qualificada em alguma coisa, como uma profissão, arte ou ciência (por exemplo, <em>os grandes mestres do período impressionista);</em>.</li>
<li>uma pessoa cujos ensinamentos os outros aceitam ou seguem (por exemplo, <em>um mestre Zen).</em></li>
</ul>
<p>Agora, não parece razoável acreditar que assistir a um curso de dois dias de repente pode promover alguém para as fileiras do &#8220;eminentemente qualificado”. Adquirir qualquer coisa que possa ser classificada como uma habilidade quase certamente leva muito mais tempo que dois dias. Podemos concluir, então, que o título <em>ScrumMaster</em> não pretende classificar uma pessoa como <em>eminentemente qualificada em Scrum</em> .</p>
<p>É um pouco mais fácil acreditar que um curso de dois dias pode colocar um indivíduo na posição de ser capaz de prestar aconselhamento e orientação sobre um tema, e acho que deve ser uma prática muito comum para que professores de uma nova disciplina possam executar suas funções, em frente a uma sala de aula.</p>
<p>Podemos, portanto, aceitar que o <em>ScrumMaster</em> significa <em>uma pessoa cuja orientação sobre Scrum outros estão dispostos a aceitar ou seguir</em>.</p>
<h3>O que há em um nome?</h3>
<p>Ken Schwaber, em seu livro <a href="http://isbn.nu/9780735619937"><em>Gerenciamento Ágil de Projetos com Scrum</em></a> , diz que escolheu &#8220;um nome estranho como&#8221; ScrumMaster &#8220;porque ele&#8221; queria destacar que as responsabilidades do ScrumMaster são diferentes daquelas do gerente de projeto tradicional”. Ele prossegue dizendo: &#8220;O ScrumMaster não ganha prêmios e medalhas, porque o ScrumMaster é apenas um <em><strong>facilitador</strong></em>”.</p>
<p>Perante isso, parece inteiramente adequado atribuir o título de <em>ScrumMaster</em> a uma pessoa que tenha frequentado um curso curto sobre Scrum. O título não transmite maestria. Na sua forma mais simples, é apenas um indicador de como empregar a pessoa que o ostenta.</p>
]]></content:encoded>
			<wfw:commentRss>http://exocortex.com.br/blog/2011/03/um-problema-de-scrumntica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 habilidades imprescind&#237;veis para qualquer profissional</title>
		<link>http://exocortex.com.br/blog/2010/12/10-habilidades-imprescindveis-para-qualquer-profissional/</link>
		<comments>http://exocortex.com.br/blog/2010/12/10-habilidades-imprescindveis-para-qualquer-profissional/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 17:04:42 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Gerenciamento]]></category>
		<category><![CDATA[competências]]></category>
		<category><![CDATA[gestão]]></category>
		<category><![CDATA[pessoas]]></category>

		<guid isPermaLink="false">http://exocortex.com.br/blog/?p=249</guid>
		<description><![CDATA[Após meses sem um artigo, decidi escrever alguma coisa. Mas este não é um artigo de minha autoria. Recebi-o através do  mailing do departamento de Gestão de Pessoas da empresa onde trabalho. Achei tão interessante que resolvi divulgá-lo no meu blog, até para que eu mesmo possa consultá-lo de vez em quando. Cada uma das [...]]]></description>
			<content:encoded><![CDATA[<p>Após meses sem um artigo, decidi escrever alguma coisa. Mas este não é um artigo de minha autoria. Recebi-o através do  mailing do departamento de Gestão de Pessoas da empresa onde trabalho. Achei tão interessante que resolvi divulgá-lo no meu blog, até para que eu mesmo possa consultá-lo de vez em quando. Cada uma das habilidades que a autora Leila Navarro cita podem ser vistas como competências valiosas para qualquer equipe.</p>
<p>“Se eu fizesse parte dos Recursos Humanos de uma empresa, somente contrataria pessoas que tivessem brilho nos olhos, uma &#8220;cara de orgasmo&#8221;, ou seja, que fosse cheia de vitalidade, de energia, que não visse a hora de “arregaçar” as mangas e começar a fazer aquilo que ela tem de melhor, porque tem consciência do que pode agregar e o que pode fazer de diferente em seu ambiente profissional. Além desse brilho único no olhar e da consciência da relevância que ela tem no que faz, eu destaco ainda outras habilidades:”</p>
<p style="text-align: justify;"><strong>Flexibilidade.</strong> É a atitude para lidar com os imprevistos e contornar os momentos de crise. Para isso, tem que se “treinar” a improvisação. Mas como? Há alguns pontos que ajudam esse treinamento: reduzir o tempo que se emprega planejando uma tarefa; sempre que puder, troque um trabalho que exige minuciosidade e morosidade por ações; trabalhe com equipes que contenham uma diversidade de pessoas, que vai te ajudar a aceitar que não existem verdades absolutas; crie o costume de pedir a opinião para toda sua equipe e observe os vários pontos-de-vista para resolver um determinado problema; marque num papel os motivos que o levaram a determinar certa decisão e se você os mantém ou não quando a situação muda de rumo.</p>
<p style="text-align: justify;"><strong>Autoconfiança e Autoconhecimento.</strong> Essas habilidades são importantes para você assumir riscos e ter segurança, são ótimas para o espírito empresarial, visando ser um líder e empreendedor. Para isso, saia da sua zona de conforto e comece a ter uma visão mais ampla de até onde você pode chegar; marque num papel seus objetivos, circule os que já alcançou e sempre determine novos; fuja das pessoas muito protetoras e de superiores que não delegam tarefas, limitando sua capacidade; para melhorar seu autoconhecimento, tente enxergar como as pessoas ao seu redor o vêem ou procure um especialista no assunto, como um terapeuta, para melhorar suas capacidades pessoais.</p>
<p style="text-align: justify;"><strong>Iniciativa.</strong> Serve para tornar as ideias boas em prática. É agir com velocidade e inovação. Para potencializar essa habilidade: ofereça ajuda para resolver situações difíceis e imprevisíveis; se tem tendência a evitar os riscos, passe a considerar os erros cometidos no passado como novas oportunidades para aprender; desenvolva atividades que estão coligadas à iniciativa como delegar tarefas, análise de custo-benefício; clarifique suas prioridades para colocá-las em prática.</p>
<p style="text-align: justify;"><strong>Competitividade.</strong> Ter metas claras, não deter-se em chegar ao objetivo comum. Preocupar-se em realizar um excelente trabalho, ir além dos objetivos determinados por seus superiores, ter tendência a inovar e desfrutar coisas que antes não conseguia. Todos esses fatores referem-se a uma competitividade sadia, um passo para o sucesso. Esta habilidade está intimamente ligada às suas emoções e motivações pessoais. Questionar sobre seus objetivos e metas, sobre aquilo que realmente gosta de fazer e evitar rotinas de trabalho, sempre inovando, é um modo de potencializar essa habilidade.</p>
<p style="text-align: justify;"><strong>Visão no cliente.</strong> Descobrir os desejos ocultos do outro, investir tempo sobre as necessidades das outras pessoas e clientes, enfim, detectar aquilo que satisfaz o cliente. Para potencializar essa habilidade: controle suas emoções e tenha flexibilidade para relacionar-se com os diversos tipos de pessoas; quando tem que lidar com clientes que não são muito claros naquilo que desejam, aprenda a questioná-los, para detectar sua real necessidade e desejos; tente manter-se sempre disponível para o cliente; seja simpático; desenvolva um histórico de pedidos de todos os seus clientes, para que quando eles entrarem em contato, você possa otimizar a comunicação.</p>
<p style="text-align: justify;"><strong>Compreensão interpessoal e empatia.</strong> Ter sensibilidade para lidar com todos, satisfazer aos demais, tornar-se o líder do grupo graças à sua empatia. Esta é a habilidade-chave, principalmente para aqueles que lidam diretamente com o atendimento ao cliente e profissionais na área de prestação de serviços, pois cabe a esses profissionais identificar com empatia aquilo que seus clientes realmente necessitam. Na verdade, a empatia se desenvolve com a prática, primeiro conscientemente (tomando notas do que o outro diz, escutando dúvidas e necessidades), e depois convertendo isso num hábito diário.</p>
<p><strong>Capacidade de liderança.</strong> É a capacidade natural dos outros seguirem a você. Se você tem facilidade em motivar seus colegas de trabalho e eles sempre pedem a sua opinião para tomar decisões importantes, você já tem essa capacidade dentro de si. Fazer com que os superiores também te sigam é uma boa proposta. Para pontecializar ainda mais essa capacidade, dedique uma parte do seu tempo para escutar os demais da equipe, conhecer os problemas pelos quais estão passando e deixar claro que eles podem confiar em você para alcançarem suas metas; tente ganhar o respeito dos demais por meio de suas atitudes, trabalhando com coerência e dando sempre o bom exemplo.</p>
<p style="text-align: justify;"><strong>Persuasão.</strong> Influenciar e persuadir os demais para alcançar os objetivos propostos é uma habilidade muito poderosa. Alguns têm um inexplicável magnetismo com os outros membros da equipe para que eles dêem o melhor de si. Mas, para conseguir ganhar mais capacidade de persuasão, há algumas dicas: melhore sua capacidade de comunicação e a maneira de por no papel o planejamento das metas; seja coerente em tudo o que diz ou faz, pois é a segurança de sua credibilidade e, assim, poderá fazer com que os outros te sigam. Apenas não confunda essa poderosa habilidade de persuadir com a de manipular as pessoas, pois nesse caso essa capacidade deixa de trazer benefícios profissionais para você.</p>
<p style="text-align: justify;"><strong>Trabalho em Equipe.</strong> Se sentir bem em estar colaborando com todas as pessoas, em que elas também lhe digam o que deve fazer; escutar e respeitar as opiniões alheias diversas das suas; preferir trabalhar em conjunto para alcançar um objetivo comum a trabalhar sozinho para almejar por metas individuais. Essas são atitudes daqueles que possuem essa brilhante capacidade de trabalhar em equipe. Aprender a aceitar críticas; aprender a delegar tarefas; pedir opiniões para os demais e eliminar as barreiras formais em situações rotineiras são formas de você potencializar mais essa habilidade.</p>
<p style="text-align: justify;"><strong>Visão do Negócio.</strong> Para aqueles que se preocupam em estar sempre atualizados; têm a própria opinião sobre em qual lugar está sua organização e para onde ela irá caminhar e é capaz de prever as consequências das suas decisões antes que elas virem um problema. Essas são as características de quem já possui essa habilidade, de aguçar seu faro para um todo. Para potencializar ou começar a treiná-la: desenvolva seu lado e sua curiosidade intelectual, acostumando-se a ler livros, revistas e jornais periódicos; dedique uma parte do seu tempo para planejar, analisar e estabelecer prioridades na sua área de atuação; para prever possíveis consequências no futuro, passe a analisar a realidade do mercado em longo prazo, contrastando dados do passado com dados do presente.</p>
<ol></ol>
<p><span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium verdana; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px;"><span style="text-align: left; font-family: verdana, arial, helvetica; font-size: 10px;"><em>Leila Navarro é coach, escritora e palestrante há mais de 10 anos, tendo consolidado, neste tempo, um forte nome no Brasil e no exterior. Ao abordar temas Comportamentais, de Liderança, Gestão de Pessoas, Vendas e Empreendedorismo, já teve suas palestras assistidas por mais de um milhão de pessoas e hoje integra o ranking dos 20 maiores palestrantes do Brasil, segundo a Revista Veja. Além disso, já ganhou por duas vezes o Prêmio dos 100 Melhores Fornecedores de RH – Categoria Palestrante do Ano (2005 e 2009). </em>Para saber mais sobre Leila Navarro, acesse: <a style="text-decoration: none;" href="http://www.catho.com.br/jcs/www.leilanavarro.com.br" target="_blank"><span style="color: #0066cc;">www.leilanavarro.com.br</span></a></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://exocortex.com.br/blog/2010/12/10-habilidades-imprescindveis-para-qualquer-profissional/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como escrever um teste primeiro ajuda na arquitetura de um software?</title>
		<link>http://exocortex.com.br/blog/2010/08/como-escrever-um-teste-primeiro-ajuda-na-arquitetura-de-um-software/</link>
		<comments>http://exocortex.com.br/blog/2010/08/como-escrever-um-teste-primeiro-ajuda-na-arquitetura-de-um-software/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 01:39:18 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Testes]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://exocortex.com.br/blog/2010/08/como-escrever-um-teste-primeiro-ajuda-na-arquitetura-de-um-software/</guid>
		<description><![CDATA[Os princípios de arquitetura de software nos orientam a encontrar os limites corretos de um objeto e como ele se relacionará com os objetos vizinhos. Queremos que um objeto saiba o que outro objeto faz e quais são suas dependências, mas não queremos saber como ele realiza seu trabalho. Também queremos que um objeto represente [...]]]></description>
			<content:encoded><![CDATA[<p>Os princípios de arquitetura de software nos orientam a encontrar os limites corretos de um objeto e como ele se relacionará com os objetos vizinhos. Queremos que um objeto saiba o que outro objeto faz e quais são suas dependências, mas não queremos saber como ele realiza seu trabalho. Também queremos que um objeto represente uma unidade coesa que faça sentido em um ambiente mais amplo. Um sistema construído com estes componentes terá flexibilidade para se adaptar a qualquer mudança necessária.</p>
<p>No TDD existem 3 aspectos que nos ajudam a atingir este cenário. </p>
<p><strong>Primeiro</strong>, iniciar com um teste nos força a descrever <em>o que</em> queremos fazer antes de considerar <em>como </em>faremos. Isso nos ajuda a manter o nível correto de abstração para o objeto a ser criado. Se a intenção do teste unitário (o que queremos testar) não está clara, nós provavelmente confundimos alguns conceitos e não estamos prontos para iniciar a codificação do objeto. Iniciar com um teste também nos ajuda a descobrir que características precisam ser visíveis fora do objeto.</p>
<p><strong>Segundo</strong>, para manter os testes unitários fáceis de entender, temos que limitar a sua abrangência mantendo-o tão curto quanto possível. Testes com dúzias de linhas acabam enterrando em seu interior o próprio objetivo do teste. Tais testes nos dizem que o objeto que estamos testando é muito grande e complexo e precisa ser dividido em partes menores e mais simples. A composição resultante da divisão deve revelar uma clara separação de interesses conforme trazemos à tona sua estrutura interna, e podemos então escrever testes mais simples para os objetos extraídos.</p>
<p><strong>Terceiro</strong>, para construir um objeto durante o teste unitário, temos que resolver todas as suas dependências, o que significa que temos que saber quais são elas. Isto encoraja a independência de contexto, uma vez que temos de ser capazes de configurar o ambiente do objeto testado <em>antes</em> de poder testá-lo – o teste unitário na verdade é somente um outro contexto. Podemos notar que um objeto com dependências implícitas ou com muitas dependências dará uma bela dor de cabeça na preparação para o teste.</p>
<p>Com o TDD, podemos então utilizar uma abordagem incremental de testes que levará nosso código na direção correta, a diração dos princípios da arquitetura de software.</p>
]]></content:encoded>
			<wfw:commentRss>http://exocortex.com.br/blog/2010/08/como-escrever-um-teste-primeiro-ajuda-na-arquitetura-de-um-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O princípio 90:9:1</title>
		<link>http://exocortex.com.br/blog/2010/04/a-regra-9091-como-a-participao-dos-usurios-nas-redes-sociais/</link>
		<comments>http://exocortex.com.br/blog/2010/04/a-regra-9091-como-a-participao-dos-usurios-nas-redes-sociais/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 00:57:34 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Gerenciamento]]></category>
		<category><![CDATA[princípios]]></category>
		<category><![CDATA[redes-sociais]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://exocortex.wordpress.com/2010/04/06/a-regra-9091-como-a-participao-dos-usurios-nas-redes-sociais/</guid>
		<description><![CDATA[Se você tem gasto um pouco do seu tempo nas redes sociais on-line, então já tropeçou no princípio 90:9:1. A idéia é muito simples: nos grupos sociais, algumas pessoas participam ativamente mais do que outras. O pesquisador Jakob Nielsen chama isso de “desigualdade participativa” (Participation inequality). Esses três grupos constituem uma espécie de ecossistema. Mudanças [...]]]></description>
			<content:encoded><![CDATA[<p>Se você tem gasto um pouco do seu tempo nas redes sociais on-line, então já tropeçou no princípio 90:9:1. A idéia é muito simples: nos grupos sociais, algumas pessoas participam ativamente mais do que outras. O pesquisador Jakob Nielsen chama isso de “<strong>desigualdade participativa</strong>” (<em><a href="http://www.useit.com/alertbox/participation_inequality.html" target="_blank">Participation inequality</a></em>).</p>
<p>Esses três grupos constituem uma espécie de ecossistema. Mudanças em um grupo afetam a distribuição das pessoas nos outros. Não é possível alterar a distribuição de forma significativa, pois o aumento de participação em um dos grupos estimula o crescimento nos outros 2, mantendo a distribuição próxima a 90:9:1. A participação social tende a seguir a regra 90:9:1 quando:</p>
<ul>
<li>90% dos usuários constituem a audiência, ou ‘lurkers’. São as pessoas que tendem a ler ou observar, mas não contribuem ativamente na comunidade.</li>
<li>9% dos usuários são editores, ou ‘editors’. Essas pessoas  contribuem algumas vezes, modificando ou adicionando texto a um artigo já criado. Raramente criam algo novo.</li>
<li>1% dos usuários são criadores, ou ‘creators’. Eles conduzem grande parte das atividades da rede social, ditando o conteúdo e tendências dos textos e artigos do site.</li>
</ul>
<p>Observar este princípio e suas conseqüências é fundamental para qualquer organização que pretenda estabelecer um ambiente de colaboração e comunicação 2.0. Blogs, fóruns, wikis e redes sociais tendem a seguir a regra 90:9:1, e podem levar a uma grande agilidade na gestão e compartilhamento do conhecimento da empresa, atualmente uma questão estratégica.</p>
]]></content:encoded>
			<wfw:commentRss>http://exocortex.com.br/blog/2010/04/a-regra-9091-como-a-participao-dos-usurios-nas-redes-sociais/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gerenciando seu c&#243;digo-fonte</title>
		<link>http://exocortex.com.br/blog/2010/01/gerenciando-seu-cdigo-fonte/</link>
		<comments>http://exocortex.com.br/blog/2010/01/gerenciando-seu-cdigo-fonte/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 13:14:18 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Gerenciamento]]></category>
		<category><![CDATA[codigo-fonte]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[práticas]]></category>

		<guid isPermaLink="false">http://exocortex.wordpress.com/?p=117</guid>
		<description><![CDATA[Um código fonte ‘sadio’ é uma das chaves para o sucesso de um projeto, e um CVS (control version system) é uma ferramenta fundamental para manter a saúde do seu código fonte. No entanto, somente uma boa ferramenta não garante um bom controle de versão. Ela deve ser amparada por boas práticas que normatizam sua [...]]]></description>
			<content:encoded><![CDATA[<p>Um código fonte ‘sadio’ é uma das chaves para o sucesso de um projeto, e um CVS (control version system) é uma ferramenta fundamental para manter a saúde do seu código fonte. No entanto, somente uma boa ferramenta não garante um bom controle de versão. Ela deve ser amparada por boas práticas que normatizam sua utilização. Para analisar se você utiliza corretamente seu controle de versão, verifique se pelo menos as seguintes perguntas podem ser rapidamente atendidas:</p>
<ul>
<li>Como era o método XYZ da classe FooBar na versão 2.0.3.12 do projeto?</li>
<li>Quais foram as alterações feitas para incluir suporte à NF-e?</li>
<li>Quando esta linha de código foi adicionada ao método XYZ?</li>
<li>Consigo compilar e executar o sistema na versão 2.0.2.15 para reproduzir e consertar o bug de um cliente?</li>
</ul>
<p>Se o seu controle de versão não consegue responder a estas perguntas, então está na hora de rever as práticas do seu time. Uma ferramenta de controle de versão não deve servir somente como um backup do código fonte, onde, ao final do dia, o desenvolvedor deposita seu trabalho inacabado. Ela deve ser um santuário, o repositório sagrado que exige do desenvolvedor todo respeito e cuidado. Afinal, o artefato mais valioso de um projeto, o código fonte, está guardado ali. Portanto, não basta instalar um controle de versão e sair usando. O time deve rever seus conceitos e absorver as mudanças necessárias, que podem ser dolorosas. No entanto, após um tempo, o time começa a colher os frutos do terreno bem preparado.</p>
<p>Há pouco tempo li um artigo muito bom do <a href="http://eduardomiranda.net/blogs/dotnet" target="_blank">Eduardo Miranda</a> sobre gerência de versionamento, onde ele cita algumas práticas boas e ruins. Vamos a elas:</p>
<h4><strong>Boas práticas</strong></h4>
<ol>
<li><strong>O código-fonte no servidor deve estar sempre pronto para compilação. </strong>Ou seja, a qualquer momento do dia deve ser possível buscar a cópia da última versão disponível do servidor e compilar uma nova versão da aplicação.</li>
<li><strong>Toda <em>changelist </em>(conjunto de alterações que foram submetidas juntas) submetida visa <span style="text-decoration: underline;">melhorar</span> o produto, <span style="text-decoration: underline;">nunca piorar</span>.</strong> O código fonte é sagrado e deve ser total e completamente respeitado. Uma changelist corrige um defeito, adiciona uma funcionalidade, refatora um trecho de código. O desenvolvedor não pode submeter changelists que quebrem o build, seja pela adição de erros de compilação ou pela quebra dos testes automatizados. O time com o qual trabalho tem uma prática problemática que é fazer chekins parciais de código para compartilhar com outro desenvolvedor as alterações feitas. Não tem problema, desde que feito em um ramo de versão temporário especialmente criado para isso (também conhecido como <em>branch)</em>. Assim, o ramo principal (o chamado <em>trunk) </em>não fica ‘contaminado’ com códigos incompletos. Somente quando toda codificação estiver terminada e os testes unitários completos, podemos fazer um merge do ramo temporário com o ramo principal. Claro que o trabalho é maior devido ao merge, mas a maioria das atuais ferramentas de CVS oferecem um bom suporte para isso.</li>
<li><strong>Submeta suas alterações o mais rápido possível e com freqüência. </strong>Quanto mais tempo um arquivo fica em alteração mais difícil se torna seu merge e mais aumenta o risco de quebra do build. Divida suas alterações em pequenos pacotes compiláveis e testáveis e submeta sempre.</li>
<li><strong>Oh-oh! Atenção, build quebrado! </strong>Se o build está quebrado não submeta alterações nem sincronize sua cópia de trabalho. Um <em>build break</em> é um estado que deve ser tratado com a máxima prioridade. Neste estado não é possível garantir que a sua alteração compila e não quebra testes, portanto não é possível garantir sua qualidade. Por outro lado, sincronizar sua cópia de trabalho irá corrompê-la, o que te impedirá de compilar e testar as funções localmente.</li>
<li><strong>Controle tudo que é necessário para compilar e instalar a aplicação.</strong> Código-fonte não é a única matéria prima para compilação e instalação dos aplicativos. Sua aplicação pode depender de bibliotecas de terceiros. Neste caso, é necessário armazenar no repositório uma cópia do binário na versão utilizada pela aplicação. Em caso de atualização, a nova versão deve ser submetida junto com toda a alteração no código-fonte da sua aplicação necessária para suportar a versão.</li>
<li><strong>Estabeleça critérios de qualidade. </strong>Código sem erros de compilação é o mínimo aceitável. A partir do momento que o objetivo passa a ser melhorar a aplicação, novos parâmetros de qualidade devem ser adotados para aprovação de um check in: código sem <em>warnings</em> e <em>hints, </em>testes unitários executados, métricas de complexidade mantidas, etc.</li>
</ol>
<h4><strong>Práticas ruins</strong></h4>
<p>Qualquer prática que não vá de encontro ao objetivo de ter no repositório uma versão compilável, testada e sempre melhor da aplicação, é uma prática ruim e deve ser evitada. Mas algumas são típicas e merecem destaque:</p>
<ul>
<li><strong>Não submeta alterações em cima da hora.</strong> Sexta-feira, 18h, você louco para ir embora e não estará no sábado de amanhã de prontidão para resolver algum problema.</li>
<li><strong>Não segure as alterações em sua cópia de trabalho por muito tempo. </strong>Código-fonte fora de repositório estraga como comida fora da geladeira. Tentar submeter uma alteração feita há 2 meses no repositório gera um trabalho enorme e um elevado risco de quebra de build.</li>
<li><strong>Nunca ignore a política de check in. </strong>Mesmo alterações simples podem quebrar um build.</li>
</ul>
<h4><strong>Finalizando</strong></h4>
<p>O controle de versão é provavelmente a ferramenta mais útil e fundamental no desenvolvimento de software e uma das mais utilizadas no dia-a-dia do desenvolvedor. É necessário sempre se preocupar com a facilidade de uso, para que ela não atrapalhe a produtividade nem caia em desuso, sem, contudo, abrir mão dos seus objetivos primordiais.</p>
]]></content:encoded>
			<wfw:commentRss>http://exocortex.com.br/blog/2010/01/gerenciando-seu-cdigo-fonte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Os 12 mandamentos do agile</title>
		<link>http://exocortex.com.br/blog/2009/12/os-12-mandamentos-do-agile/</link>
		<comments>http://exocortex.com.br/blog/2009/12/os-12-mandamentos-do-agile/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 01:14:36 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[princípios]]></category>

		<guid isPermaLink="false">http://exocortex.wordpress.com/2009/12/22/os-12-mandamentos-do-agile/</guid>
		<description><![CDATA[A fim de ajudar as pessoas a entenderem melhor o desenvolvimento ágil de software, em 2001 os membros da Agile Alliance refinaram o enunciado do Manifesto Ágil, criando doze princípios que as metodologias ágeis devem seguir. Estes princípios são os seguintes: Nossa maior prioridade é satisfazer o cliente através de entregas rápidas e contínuas de [...]]]></description>
			<content:encoded><![CDATA[<p>A fim de ajudar as pessoas a entenderem melhor o desenvolvimento ágil de software, em 2001 os membros da Agile Alliance refinaram o enunciado do Manifesto Ágil, criando doze princípios que as metodologias ágeis devem seguir. Estes princípios são os seguintes:</p>
<ol>
<li>
<p><strong>Nossa maior prioridade</strong> é satisfazer o cliente através de entregas rápidas e contínuas de software funcional. </p>
</li>
<li>
<p><strong>Abrace as mudanças</strong> de requisitos do projeto, mesmo que ocorram tardiamente. Os processos ágeis apóiam a mudança como uma vantagem competitiva para o cliente. </p>
</li>
<li>
<p><strong>Entregue software funcionando</strong> com uma freqüência de duas semanas a dois meses, escolhendo sempre o menor escala de tempo possível. </p>
</li>
<li>
<p><strong>O pessoal de negócio e os desenvolvedore</strong>s devem trabalhar juntos no projeto diariamente. </p>
</li>
<li>
<p><strong>Construa os projetos com pessoas motivadas</strong>. Forneça o ambiente, os equipamentos e as ferramentas de que elas precisam e confie que elas farão o trabalho. </p>
</li>
<li>
<p><strong>Uma conversa cara a cara</strong> é a melhor forma de transmitir e receber informação do time de desenvolvimento. </p>
</li>
<li>
<p><strong>Software funcionando</strong> é a principal medida de progresso. </p>
</li>
<li>
<p><strong>Processos ágeis promovem um desenvolvimento sustentad</strong>o. Gerência, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente. </p>
</li>
<li>
<p><strong>A atenção contínua à excelência</strong> técnica e a um bom design aumentam a agilidade. </p>
</li>
<li>
<p><strong>Simplicidade </strong>– a arte de maximizar a quantidade de trabalho desnecessária – é essencial. </p>
</li>
<li>
<p>As melhores arquiteturas, designs e requisitos surgem de <strong>times auto-gerenciados</strong>. </p>
</li>
<li>
<p>A intervalos regulares, <strong>o time reflete sobre como se tornar mais efica</strong>z, e então ajusta seu comportamento de acordo com as reflexões. </p>
</li>
</ol>
<p>Pare por um momento e reflita sobre os princípios acima. Serão tão radicais e impossíveis como algumas pessoas acham ou simplesmente seguem o bom senso? Será tão difícil fazer os projetos funcionarem desta forma? Você realmente acredita que seu cliente prefere uma ótima e farta documentação a um sistema funcionando em um curto prazo? Ou que um e-mail substitua um bom bate-papo? E que tal fazer somente o necessário, sem ficar ‘viajando na maionese’?</p>
<p>Estes princípios formam um senso comum e prático, sobre o qual podemos alicerçar nossos esforços para a construção de um software de sucesso.</p>
<p><em>(Referência: Agile Modelling – Scott Ambler)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://exocortex.com.br/blog/2009/12/os-12-mandamentos-do-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Um dia na terra do Kanban</title>
		<link>http://exocortex.com.br/blog/2009/11/um-dia-na-terra-do-kanban/</link>
		<comments>http://exocortex.com.br/blog/2009/11/um-dia-na-terra-do-kanban/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 02:51:56 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://exocortex.wordpress.com/2009/11/30/um-dia-na-terra-do-kanban/</guid>
		<description><![CDATA[Como um amigo meu disse certa vez… ‘na internet nada se cria, tudo se copia’. Acabei me rendendo a essa frase, e publicarei uma estorinha já contada em outros blogs. Essa eu peguei do blog do André Dourado (blog muito bom, recomendo). O post original é de Henrik Kniberg, autor do livro ‘Scrum e XP [...]]]></description>
			<content:encoded><![CDATA[<p>Como um amigo meu disse certa vez… ‘na internet nada se cria, tudo se copia’. Acabei me rendendo a essa frase, e publicarei uma estorinha já contada em outros blogs. Essa eu peguei do blog do <a href="http://blog.adsystems.com.br/">André Dourado</a> (blog muito bom, recomendo). O post original é de Henrik Kniberg, autor do livro ‘<a href="http://www.infoq.com/br/minibooks/scrum-xp-from-the-trenches">Scrum e XP direto das trincheiras</a>’.</p>
<p>É uma historinha bem humorada do dia a dia de negociações com nossos Product Owners. O André fez uma tradução livre para o português. O post original pode ser visto em <a href="http://blog.crisp.se/henrikkniberg/2009/06/26/1246053060000.html">One Day in Kanban Land</a>.<span id="more-100"></span></p>
<p><a href="http://exocortex.com.br/blog/wp-content/uploads/2009/12/kanban1_ptbr.jpg" rel="lightbox[100]"><img style="display: inline; margin-left: 0; margin-right: 0; border: 0;" title="Kanban1_ptbr" src="http://exocortex.com.br/blog/wp-content/uploads/2009/12/kanban1_ptbr_thumb.jpg" border="0" alt="Kanban1_ptbr" width="504" height="619" /></a></p>
<p><a href="http://exocortex.com.br/blog/wp-content/uploads/2009/12/kanban2_ptbr.jpg" rel="lightbox[100]"><img style="display: inline; margin-left: 0; margin-right: 0; border: 0;" title="Kanban2_ptbr" src="http://exocortex.com.br/blog/wp-content/uploads/2009/12/kanban2_ptbr_thumb.jpg" border="0" alt="Kanban2_ptbr" width="504" height="610" /></a></p>
<p><a href="http://exocortex.com.br/blog/wp-content/uploads/2009/12/kanban3_ptbr.jpg" rel="lightbox[100]"><img style="display: inline; border: 0;" title="Kanban3_ptbr" src="http://exocortex.com.br/blog/wp-content/uploads/2009/12/kanban3_ptbr_thumb.jpg" border="0" alt="Kanban3_ptbr" width="504" height="610" /></a></p>
<p><a href="http://exocortex.com.br/blog/wp-content/uploads/2009/12/kanban4_ptbr.jpg" rel="lightbox[100]"><img style="display: inline; border: 0;" title="Kanban4_ptbr" src="http://exocortex.com.br/blog/wp-content/uploads/2009/12/kanban4_ptbr_thumb.jpg" border="0" alt="Kanban4_ptbr" width="504" height="636" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://exocortex.com.br/blog/2009/11/um-dia-na-terra-do-kanban/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porque o planejamento tradicional n&#227;o funciona?</title>
		<link>http://exocortex.com.br/blog/2009/10/porque-o-planejamento-tradicional-nao-funciona/</link>
		<comments>http://exocortex.com.br/blog/2009/10/porque-o-planejamento-tradicional-nao-funciona/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 23:19:09 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Metodologias]]></category>
		<category><![CDATA[planejamento]]></category>

		<guid isPermaLink="false">http://exocortex.wordpress.com/2009/10/27/porque-o-planejamento-tradicional-nao-funciona-2/</guid>
		<description><![CDATA[Estimativa e planejamento são passos críticos para o sucesso de qualquer projeto de desenvolvimento de software. No entanto, planejar é uma atividade difícil e os planos geralmente falham. Estimativas feitas no início de um planejamento ou projeto tem pouquíssima exatidão e a probabilidade de termos uma estimativa correta para um planejamento de 1 ano é [...]]]></description>
			<content:encoded><![CDATA[<p>Estimativa e planejamento são passos críticos para o sucesso de qualquer projeto de desenvolvimento de software. No entanto, planejar é uma atividade difícil e os planos geralmente falham. Estimativas feitas no início de um planejamento ou projeto tem pouquíssima exatidão e a probabilidade de termos uma estimativa correta para um planejamento de 1 ano é muito menor que a probabilidade de acertarmos a estimativa para um planejamento de 2 semanas. Esse refinamento na probabilidade do acerto das estimativas é chamado de <em>cone da incerteza (Boehm, 1981)</em>.</p>
<p>No entanto, a dificuldade em planejar não é desculpa para não fazê-lo. O planejamento reduz o risco, diminui a incerteza, ajuda na tomada de decisões, estabelece uma maior confiança e dissemina informações. Infelizmente, o planejamento tradicional não vem funcionando. Ao tentar combinar e responder às necessidades do trio escopo\cronograma\recursos, o planejamento tradicional não nos leva a respostas e produtos satisfatórios.</p>
<p>E por que o planejamento tradicional não funciona? Mike Cohn, em seu livro <em>Agile Estimating and Planning,</em> elenca 5 causas para as falhas de planejamento.</p>
<ol>
<li>
<p><strong>O planejamento é baseado nas tarefas necessárias e não nos recursos desejados. </strong>É vital o time manter o foco nos requisitos solicitados; são eles que agregam valor para o cliente (veja <a href="http://www.brasiltech.net/agilez/2009/10/12/voce-entrega-algo-de-valor-para-seu-cliente-fdd-desenvolvimento-orientado-a-funcionalidade/" target="_blank">&#8220;Você entrega algo de valor para seu cliente?&#8221;</a>). Tarefas por si só não agregam valor algum. Além disso, os planejamentos tradicionais, por basearem-se em tarefas, preocupam-se com a dependência entre elas. Assim, atrasos em qualquer tarefa acumulam-se no final do cronograma, pois são repassados pela cadeia de dependência.</p>
</li>
<li>
<p><strong>Executar tarefas simultaneamente agora acaba gerando atrasos no futuro. </strong>Com a melhor das intenções, o time pode ver a multitarefa como uma possível solução para atrasos. No entanto, ao trabalhar em duas tarefas ao mesmo tempo, um membro do time provavelmente prorrogará o término das duas. Como outras tarefas dependem das primeiras (lembra do item anterior?), é quase certo que um atraso será embutido na cadeia de dependência, refletindo-se no prazo de entrega final.</p>
</li>
<li>
<p><strong>Não se atende aos requisitos pela prioridade dos mesmos. </strong>O pensamento tradicional diz que, se todo trabalho é completado, não importa a ordem em que é feito. Nesse caso, é natural que a seqüência e priorização das tarefas siga a conveniência do time de desenvolvimento e não a importância dos requisitos para o cliente. Como conseqüência, é muito provável que no final do projeto, para manter o cronograma, o time acabe descartando requisitos importantes que não foram corretamente priorizados.</p>
</li>
<li>
<p><strong>O planejamento antecipado sempre contém um certo grau de incerteza que é ignorado. </strong>O planejamento tradicional não considera as incertezas presentes em todo projeto de software. Ele assume que a análise inicial será completa e perfeita e que coletará todos os requisitos do produto. Assume também que os usuários não mudarão de idéia, que nenhuma necessidade nova aparecerá durante a execução do projeto e que sabemos exatamente como os requisitos serão  implementados. É claro que isso não é verdade; tudo o que não sabemos no início do projeto é uma incerteza que deve ser considerada no planejamento, e a melhor forma de lidar com as incertezas é através de iterações curtas com feedbacks rápidos e constantes.</p>
</li>
<li>
<p><strong>Estimativas com alto nível de incertezas </strong><strong>e baixa probabilidade de acerto acabam se tornando compromissos. </strong>Dentro de cada estimativa está embutida uma <em>probabilidade </em>do trabalho ser finalizado no tempo previsto. Uma probabilidade varia de 0 a 100%. Portanto, ao estimar a duração de uma tarefa estamos dizendo que existe uma probabilidade de x % de terminarmos a tarefa em y dias. O problema é que compromissos não podem ser assumidos sobre probabilidades; eles são assumidos sobre uma data.</p>
</li>
</ol>
<p>O planejamento ágil ataca esses problemas focando nos requisitos. A unidade mínima de entrega é um requisito completo; não importa quantas tarefas foram terminadas, se um requisito não está completamente implementado, ele não está entregue. A priorização baseia-se nos requisitos de maior valor para o cliente e não nas tarefas do time de desenvolvimento. O time todo trabalha para entregar um requisito, por isso praticamente não existe multitarefa. O planejamento é incremental; assume-se que no início do projeto sabemos muito pouco sobre o que será feito e sobre como será feito. O time encontrará essas respostas gradativamente, conforme implementa requisito por requisito.</p>
<p>Parece utópico, mas funciona. Qualquer um que desenvolveu software sabe que nunca conseguimos levantar todos os requisitos necessários para um sistema, por maior que seja o esforço. Conheço uma pessoa que trabalha para uma grande empresa indiana que possui a famosa certificação CMM5. Há 2 anos ela realiza levantamento de requisitos para o sistema de um grande banco brasileiro. Dois longos anos de trabalho da equipe; nenhuma linha de código foi escrita, nenhum requisito foi entregue; somente algumas centenas de artefatos obrigatoriamente gerados pela especificação do CMM5. Claro, CMM5 garante qualidade, mesmo que a um custo altíssimo, certo? Mas qual a probabilidade dos requisitos levantados há dois anos ainda serem válidos? Será que ainda representam o que o cliente <em>quer</em> <em>atualmente</em>? Acho pouco provável.</p>
<p>E você, qual sua opinião?</p>
]]></content:encoded>
			<wfw:commentRss>http://exocortex.com.br/blog/2009/10/porque-o-planejamento-tradicional-nao-funciona/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

