<?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>Pereira&#039;s blog &#187; SCRUM</title>
	<atom:link href="http://jpereira.eu/category/scrum/feed/" rel="self" type="application/rss+xml" />
	<link>http://jpereira.eu</link>
	<description>It&#039;s just that, a blog, my blog :)</description>
	<lastBuildDate>Wed, 09 May 2012 12:18:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>How to improve productivity when developing JEE based web applications</title>
		<link>http://jpereira.eu/2011/12/06/how-to-improve-productivity-when-developing-jee-based-web-applications/</link>
		<comments>http://jpereira.eu/2011/12/06/how-to-improve-productivity-when-developing-jee-based-web-applications/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 19:01:38 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=482</guid>
		<description><![CDATA[The title of this post was stolen from Stackoverflow, from this discussion: http://stackoverflow.com/questions/645746/how-to-improve-productivity-when-developing-jee-based-web-applications I really like and agree with this point: Being “the enterprise stack”, it is often used to create boring, ugly, “good enough” applications and, in general, enterprises tend not to attract great developers who love programming, and think and care about what [...]]]></description>
			<content:encoded><![CDATA[<p>The title of this post was stolen from Stackoverflow, from this discussion:</p>
<p> <a href="http://stackoverflow.com/questions/645746/how-to-improve-productivity-when-developing-jee-based-web-applications">http://stackoverflow.com/questions/645746/how-to-improve-productivity-when-developing-jee-based-web-applications</a></p>
<p>I really like and agree with this point:</p>
<p><strong>Being “the enterprise stack”, it is often used to create boring, ugly, “good enough” applications and, in general, enterprises tend not to attract great developers who love programming, and think and care about what they do. The quality of software in the enterprise world is not great.</strong></p>
<p>There are exceptions, of course, but mainly from what I&#8217;ve seen from the past 10 years, this is, sadly, true. Why?</p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2011/12/06/how-to-improve-productivity-when-developing-jee-based-web-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programmer testing</title>
		<link>http://jpereira.eu/2011/12/03/programming-testing/</link>
		<comments>http://jpereira.eu/2011/12/03/programming-testing/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 17:59:15 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=476</guid>
		<description><![CDATA[Recently I&#8217;ve researched a little about programmer testing, which resulted in a slide set that I&#8217;m now sharing with you. These slides are the basis for a training, which included a lot of exercises, as I like to do. It includes some information about: Agile testing Test driven development Unit testing with JUnit Test doubles [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve researched a little about programmer testing, which resulted in a slide set that I&#8217;m now sharing with you. These slides are the basis for a training, which included a lot of exercises, as I like to do.</p>
<p>
It includes some information about:
</p>
<ul>
<li>
Agile testing</li>
<li>Test driven development</li>
<li>Unit testing with JUnit</li>
<li>Test doubles and Mockito</li>
<li>Code coverage</li>
</ul>
<div style="width:425px" id="__ss_10448283"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/joaomiguel.pereira/programmer-testing-10448283" title="Programmer testing">Programmer testing</a></strong><object id="__sse10448283" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=programmertestingblog-111203114534-phpapp02&#038;stripped_title=programmer-testing-10448283&#038;userName=joaomiguel.pereira" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"/><embed name="__sse10448283" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=programmertestingblog-111203114534-phpapp02&#038;stripped_title=programmer-testing-10448283&#038;userName=joaomiguel.pereira" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/joaomiguel.pereira">Joao Pereira</a>.</div>
</div>
<p>
If you have any feedback or question, please let me know by leaving a comment or send me an email.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2011/12/03/programming-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fluent interfaces while trying to make sense of Prototype Pattern</title>
		<link>http://jpereira.eu/2011/10/12/fluent-interfaces-while-trying-to-make-sense-of-prototype-pattern/</link>
		<comments>http://jpereira.eu/2011/10/12/fluent-interfaces-while-trying-to-make-sense-of-prototype-pattern/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 23:18:43 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=464</guid>
		<description><![CDATA[Sometimes I don&#8217;t have great opportunities to apply some nice concepts, but I have some time to learn them. While trying to make some sense of the Prototype Pattern, I was doing some experiments and I needed, of course, the tests to prove my experiments. It was when coding the tests, trying to define the [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes I don&#8217;t have great opportunities to apply some nice concepts, but I have some time to learn them.</p>
<p>While trying to make some sense of the Prototype Pattern, I was doing some experiments and I needed, of course, the tests to prove my experiments. </p>
<p>It was when coding the tests, trying to define the client interface (not user interface <img src='http://jpereira.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ), that to my mind came this article from Martin Fowler: <a href="http://martinfowler.com/bliki/FluentInterface.html">Fluent Interface</a>. </p>
<p>Well, what it matters are these two points:</p>
<ul>
<li>
Making your tests first helps you, a lot, to define not only the behavior, but also importantly, the client API.</li>
<li>Using Fluent Interface with a Builder, it&#8217;s a great way to send our message to the objects implementing the API. </li>
</ul>
<p>Example of using a fluent interface:</p>
<pre class="brush: java; title: ; notranslate">
package eu.jpereira.trainings.designpatterns.creational.prototype;

import static org.junit.Assert.*;

import java.util.List;
import java.util.Properties;

import org.junit.Test;

import eu.jpereira.trainings.designpatterns.creational.prototype.exception.CannotHaveZeroPartsException;
import eu.jpereira.trainings.designpatterns.creational.prototype.exception.CouldNotCloneLastObjectException;
import eu.jpereira.trainings.designpatterns.creational.prototype.exception.NeedToPackLastVehicleException;
import eu.jpereira.trainings.designpatterns.creational.prototype.exception.VehicleDoesNotHavePartsException;
import eu.jpereira.trainings.designpatterns.creational.prototype.model.Shell;
import eu.jpereira.trainings.designpatterns.creational.prototype.model.Tire;
import eu.jpereira.trainings.designpatterns.creational.prototype.model.Vehicle;
import eu.jpereira.trainings.designpatterns.creational.prototype.model.VehiclePartEnumeration;
import eu.jpereira.trainings.designpatterns.creational.prototype.model.VehiclePartPropertiesEnumeration;
import eu.jpereira.trainings.designpatterns.creational.prototype.model.Window;
/**
 * @author jpereira
 *
 */

public class ClientTest {

	/**
	 * Integration Test
	 * @throws CouldNotCloneLastObjectException
	 * @throws CannotHaveZeroPartsException
	 * @throws NeedToPackLastVehicleException
	 * @throws VehicleDoesNotHavePartsException
	 */
	@Test
	public void testCreateBUS() throws CouldNotCloneLastObjectException, CannotHaveZeroPartsException, NeedToPackLastVehicleException, VehicleDoesNotHavePartsException {
		Client client = new Client();

		//create a bus car
		//Create props for tire
		Properties tiresProps = new Properties();
		tiresProps.put(VehiclePartPropertiesEnumeration.SIZE,10);

		//Create props for shell
		Properties shellProps = new Properties();
		shellProps.put(VehiclePartPropertiesEnumeration.COLOR,&quot;blue&quot;);

		Properties windowProps = new Properties();
		windowProps.put(VehiclePartPropertiesEnumeration.WIDTH,20);
		windowProps.put(VehiclePartPropertiesEnumeration.WIDTH,20);

		//client.createVehicle().with(new Tires()).times(4).
		Vehicle vehicle = client.vehicleBuilder().createVehicle().with(new Tire(tiresProps)).times(3).with(new Window(windowProps)).times(8).with(new Shell(shellProps)).times(1).packIt();

		//Get all windows
		List&lt;VehiclePart&gt; parts = vehicle.getParts(VehiclePartEnumeration.WINDOW);
		assertEquals(8, parts.size());

	}
}
</pre>
<p>A hypothetical Builder implementation with a fluent interface:</p>
<pre class="brush: java; title: ; notranslate">
package eu.jpereira.trainings.designpatterns.creational.prototype;

import java.util.ArrayList;
import java.util.List;

import eu.jpereira.trainings.designpatterns.creational.prototype.exception.CouldNotCloneLastObjectException;
import eu.jpereira.trainings.designpatterns.creational.prototype.exception.CannotHaveZeroPartsException;
import eu.jpereira.trainings.designpatterns.creational.prototype.exception.NeedToPackLastVehicleException;
import eu.jpereira.trainings.designpatterns.creational.prototype.model.Vehicle;

/**
 * @author jpereira
 *
 */
public class SimpleVehicleBuilder implements VehicleBuilder {

	private List&lt;VehiclePart&gt; vehicleParts;

	public SimpleVehicleBuilder() {
		this.vehicleParts = createNewPartsBag();
	}

	@Override
	public VehicleBuilder createVehicle() throws NeedToPackLastVehicleException{
		//Just check this is allways the first call on the builder
		if (vehicleParts.size()!= 0) {
			throw new NeedToPackLastVehicleException();
		}
		return this;
	}

	@Override
	public VehicleBuilder with(VehiclePart part) {
		this.vehicleParts.add(part);
		return this;
	}

	@Override
	public VehicleBuilder times(int times) throws CouldNotCloneLastObjectException, CannotHaveZeroPartsException {
		if (times==0) {
			throw new CannotHaveZeroPartsException();
		}
		//get the last one and clone it xtimes
		if ( this.vehicleParts.size()&gt;0) {

			VehiclePart lastObject = this.vehicleParts.get(this.vehicleParts.size()-1);
			//add it xtimes
			for (int i=0; i&lt; times-1; i++) {
				//new object
				try {
					this.vehicleParts.add((VehiclePart)lastObject.clone());
				} catch (CloneNotSupportedException e) {
					//Could not clone it. Wrap exception
					throw new CouldNotCloneLastObjectException(e);
				}
			}
		}
		return this;

	}

	@Override
	public Vehicle packIt() {
		Vehicle vehicle = new Vehicle();
		vehicle.setParts(this.vehicleParts);
		//clear this reference for the chicle parts.
		this.vehicleParts = createNewPartsBag();
		return vehicle;

	}

	//Can be overriden by subclasses
	protected List&lt;VehiclePart&gt; createNewPartsBag() {
		return new ArrayList&lt;VehiclePart&gt;();
	}

}
</pre>
<p>That&#8217;s it</p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2011/10/12/fluent-interfaces-while-trying-to-make-sense-of-prototype-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You do not understand, yet, why do you need tests!</title>
		<link>http://jpereira.eu/2011/09/14/you-do-not-understand-yet-why-do-you-need-tests/</link>
		<comments>http://jpereira.eu/2011/09/14/you-do-not-understand-yet-why-do-you-need-tests/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 13:18:16 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=454</guid>
		<description><![CDATA[Why do I need tests in my software project? Keep bugs away? Yes! Keep quality high? Maybe. Can you define quality? I see that people often justify the demand for a high test coverage with their desire to have quality in software projects, however they&#8217;re only seeing a part of the quality, the bugs visible [...]]]></description>
			<content:encoded><![CDATA[<p>Why do I need tests in my software project? Keep bugs away? Yes! Keep quality high? Maybe. Can you define quality?</p>
<p>I see that people often justify the demand for a high test coverage with their desire to have quality in software projects, however they&#8217;re only seeing a part of the quality, the bugs visible to the customer. Quality, that word alone, can be very subjective, meaning different things to different people. Of course, having a bug free software means a high quality software, but if I have a bug free software and cannot add new features or improve existing ones, is this software a high quality software?</p>
<p>Now that we&#8217;re all doing &#8220;agile development&#8221; (right? at least you may think you&#8217;re doing, because you have daily meetings, review, sprints, etc), everyone should bear in mind one of the critical purposes of tests. </p>
<p>Big up-front designs do not work anymore, never worked for that matter (you soon loose integrity between the code and the design in the papers). We&#8217;re no able to make decisions based on the unknown (though some people may think they can), so we leave every decision to the last possible moment, until we have all, or most, information needed to make a reasonable decision.</p>
<p>One fundamental aspect of agile development is that you evolve your system as you go, you do it in iterations and every iteration is focusing only on what is needed to deliver the features you committed for that iteration. Your system will evolve, iteration after iteration. </p>
<p>With this evolution of your system, you will also evolve your architecture and design. You will not add database support on the first iteration if you don&#8217;t need a database, right? It&#8217;s waste. Right? So, from iteration to iteration your architecture and design will evolve, based on the features you have to develop and those you have developed. This is what <a href="http://martinfowler.com/articles/designDead.html">evolutionary architecture and deign</a> looks like, according to <a href="http://martinfowler.com/">Martin Fowler</a>. </p>
<p>But, how do you evolve your design and architecture? One of the key practices to do that is refactoring. Refactoring, again using Fowler&#8217;s knowledge, is &#8220;the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure. It is a disciplined way to clean up code that minimizes the changes of introducing bugs.&#8221;</p>
<p>Refactoring is one of the key practice of any project using any kind of agile development methodology, backed by testing and continuous integration. There is no way you can refactor your code if you do not have a safety net, i.e., if you don&#8217;t have something that keep you away from breaking existing functionality. <strong>This is a key point of tests, to allow you to evolve your system design and architecture.</strong>. Of course these test must be automated, needless to say that. </p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2011/09/14/you-do-not-understand-yet-why-do-you-need-tests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ahh, a responsabilidade&#8230;</title>
		<link>http://jpereira.eu/2011/01/30/ahh-a-responsabilidade/</link>
		<comments>http://jpereira.eu/2011/01/30/ahh-a-responsabilidade/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 15:39:47 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Gestão]]></category>
		<category><![CDATA[Gestão de Projecto]]></category>
		<category><![CDATA[SCRUM]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=349</guid>
		<description><![CDATA[Na semana passada estive presente numa formação onde se tocaram em temas bastante interessantes. Um dos temas abordados e que me chamou a atenção foi o &#8220;Modelo de Responsabilidade&#8220;. O &#8220;Modelo de Responsabilidade&#8221; tenta descrever como nós, humanos,  geralmente nos comportamos face aos problemas que encontramos diariamente. Acho que este modelo descreve algo que nasce [...]]]></description>
			<content:encoded><![CDATA[<p>Na semana passada estive presente numa formação onde se tocaram em temas bastante interessantes. Um dos temas abordados e que me chamou a atenção foi o &#8220;<strong>Modelo de Responsabilidade</strong>&#8220;.</p>
<p>O &#8220;<strong>Modelo de Responsabilidade</strong>&#8221; tenta descrever como nós, humanos,  geralmente nos comportamos face aos problemas que encontramos diariamente. Acho que este modelo descreve algo que nasce conosco, as atitudes e sentimentos que foram cultivados durante milhões de anos de evolução.</p>
<p><span id="more-349"></span></p>
<p>Ora vamos lá ao modelo&#8230;</p>
<p>Quando encontramos um problema, começamos com a &#8220;<strong>Negação</strong>&#8220;:<br />
<strong> Negação</strong>: O código compila no meu computador, não há problema nenhum.</p>
<p>Depois da negação, passamos para a fase de &#8220;<strong>Atirar com as culpas</strong>&#8220;:<br />
&#8220;<strong>Atirar com as culpas</strong>&#8220;: O problema é da especificação Java que deveria permitir fazer isso&#8230;</p>
<p>E continuamos para a fase seguinte, a &#8220;<strong>justificação</strong>&#8220;:<br />
&#8220;<strong>Justificação</strong>&#8220;: Ah, pensava que era possível fazer isto, uma vez vi isso no código do António&#8230;</p>
<p>A &#8220;<strong>Vergonha</strong>&#8221; é a fase que se segue, onde muitos vêm a oportunidade de desistir:<br />
&#8220;<strong>Vergonha</strong>&#8220;: Aii, sou mesmo mau programador, não nasci para isto&#8230;. (Boa oportunidade para &#8220;<strong>Desistir</strong>&#8220;: Vou mudar para manager <img src='http://jpereira.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<p>Depois destas fases, se não desistirmos, temos dois caminhos que podemos seguir: A &#8220;<strong>Obrigação</strong>&#8221; ou a &#8220;<strong>Responsabilização</strong>&#8220;:</p>
<p>&#8220;<strong>Obrigação</strong>&#8221; : Ok, já percebi que tenho de corrigir o erro&#8230; Diz-me o que posso fazer para o corrigir.</p>
<p>&#8220;<strong>Responsabilização</strong>&#8220;: Não vou ficar aqui à espera que alguém corrija este erro, vou ler a especificação Java para ver como posso resolver o problema e vou corrigir este erro ainda hoje.</p>
<p>Ficam alguns links com mais sobre o assunto;</p>
<p><a href="http://www.selfishprogramming.com/2008/09/26/challenge-your-personal-agility/">http://www.selfishprogramming.com/2008/09/26/challenge-your-personal-agility/</a></p>
<p><a href="http://www.christopheravery.com/responsibility-process">http://www.christopheravery.com/responsibility-process</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2011/01/30/ahh-a-responsabilidade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porque é que eu gosto das metodologias ágeis para desenvolvimento de Software?</title>
		<link>http://jpereira.eu/2009/12/13/porque-e-que-eu-gosto-das-metodologias-ageis-para-desenvolvimento-de-software/</link>
		<comments>http://jpereira.eu/2009/12/13/porque-e-que-eu-gosto-das-metodologias-ageis-para-desenvolvimento-de-software/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 00:00:53 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Gestão de Projecto]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Agile Developemnt]]></category>
		<category><![CDATA[Agile Product Development]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=182</guid>
		<description><![CDATA[Nesta história a equipa estava a trabalhar no lançamento de um produto para o mercado. O projecto já dura à um ano e é gerido com técnicas &#8220;tradicionais&#8221;* de desenvolvimento de software. Uma das iniciativas (ou sub-projecto, ou projecto no contexto de um programa) inclui um site,  um blog e um perfil no Facebook, no [...]]]></description>
			<content:encoded><![CDATA[<p>Nesta história a equipa estava a trabalhar no lançamento de um produto para o mercado. O projecto já dura à um ano e é gerido com técnicas &#8220;tradicionais&#8221;* de desenvolvimento de software. Uma das iniciativas (ou sub-projecto, ou projecto no contexto de um programa) inclui um site,  um blog e um perfil no Facebook, no Twitter e no Youtube, onde se irá anunciar o grande lançamento do produto para o mercado.</p>
<p>Um mês antes do grande lançamento a equipa responsável pela comunicação pergunta ao desenvolvimento: &#8220;Quando é que o produto vai estar pronto? Precisamos de uma data para comunicar ao público o grande lançamento&#8221;.</p>
<p>A equipa de desenvolvimento respondeu qualquer coisa como: &#8220;Já está 85% feito.&#8221;</p>
<p>Com uma contas, o gestor de projecto prevê que dentro de um mês o produto estará pronto para o mercado. E foi com esse pressuposto que a equipa de comunicação anunciou a data do lançamento &#8220;imprevisível&#8221; do grande lançamento no site, no blog, no Facebook, no Twitter e no Youtube.</p>
<p>Mas será que aconteceu o pior?</p>
<p>No dia de lançamento (segundo as expectativas da equipa de comunicação), a equipa de desenvolvimento diz que não é possível lançar o produto hoje.</p>
<p>Infelizmente para a equipa, a data de lançamento calhou a uma Sexta-Feira, quando já todos andavam atacados com o stress <em>pre-release. </em>Depois do problema escalado, a direcção da empresa pede gentilmente que se esforcem ao máximo durante o fim de semana para lançar o produto na próxima Segunda-Feira. Até lhes ofereceu recompensas financeiras.</p>
<p>O produto é lançado na Segunda-Feira, mas apesar do incentivo financeiro,  a equipa perdeu muita motivação com este acontecimento. O <em>overtime</em> e sensação de &#8220;falha&#8221; é sempre um desmotivador e não há dinheiro que &#8220;mexa&#8221; nessa psicologia.</p>
<p>Agora, porque é que eu gosto das metodologias ágeis para desenvolvimento de software? Não vou aqui falar de tudo, é claro, mas apenas de um ponto que acho importante no contexto desta história tão comum.</p>
<p><strong>Disciplina nas entregas (e tudo que o processo traz de borla)</strong></p>
<ul>
<li>A trabalhar com iterações que produzem Software &#8220;utilizável&#8221;  e com um conjunto de funcionalidades conhecidas, a equipa ganharia disciplina nas datas de entrega (Com uma gestão apropriada da equipa).</li>
<li>Se as iterações tivessem duração de 3 semanas e a equipa confiasse que necessitava de uma iteração para atingir um conjunto de funcionalidades, que somadas às produzidas nas iterações anteriores igualavam as funcionalidades mínimas para lançar o produto, então a equipa de comunicação poderia estar confiante ao anunciar a data do grande lançamento</li>
</ul>
<p>Será este ponto importante para repensar algumas metodologias de desenvolvimento de Software? Ou assumimos a postura da  negação: &#8220;Ahh, podia ser pior se tivéssemos marcado um evento com a comunicação social e grandes investidores.&#8221;?  :)</p>
<p>* Refiro-me aqui às técnicas que apenas são reconhecidas como boas práticas dentro da empresa um por um grupo restrito de empresas. <img src='http://jpereira.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2009/12/13/porque-e-que-eu-gosto-das-metodologias-ageis-para-desenvolvimento-de-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>O poder do &#8220;E&#8221; e do &#8220;Mas&#8221;</title>
		<link>http://jpereira.eu/2009/12/12/o-poder-do-e-e-do-mas/</link>
		<comments>http://jpereira.eu/2009/12/12/o-poder-do-e-e-do-mas/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 17:31:39 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Gestão de Projecto]]></category>
		<category><![CDATA[PMP]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=205</guid>
		<description><![CDATA[Acho que existe um poder psicológico no &#8220;E&#8221; e no &#8220;Mas&#8221;. O &#8220;E&#8221; tem um poder positivo, de criatividade e colaboração enquanto o &#8220;Mas&#8221;  tem um poder negativo e cria barreiras para a criatividade e colaboração. Para o demonstrar, considerem as seguinte conversas: Programador &#8211; &#8220;Vou conseguir terminar o módulo A a tempo&#8221; Gestor de [...]]]></description>
			<content:encoded><![CDATA[<p>Acho que existe um poder psicológico no &#8220;E&#8221; e no &#8220;Mas&#8221;. O &#8220;E&#8221; tem um poder positivo, de criatividade e colaboração enquanto o &#8220;Mas&#8221;  tem um poder negativo e cria barreiras para a criatividade e colaboração.</p>
<p>Para o demonstrar, considerem as seguinte conversas:</p>
<blockquote><p><strong>Programador</strong> &#8211; &#8220;Vou conseguir terminar o módulo A a tempo&#8221;</p>
<p><strong>Gestor de Projecto</strong> &#8211; &#8220;Sim, muito bem. <strong>Mas</strong> conseguirás fazer também a documentação a tempo?&#8221;</p></blockquote>
<p>Pensem que isto vos está a acontecer e tentem perceber o roadblock que foi colocado apenas no vosso caminho?</p>
<p>Agora no mesmo cenário mas como uma atitude mais positiva:</p>
<blockquote><p><strong>Programador</strong> &#8211; &#8220;Vou conseguir terminar o módulo A a tempo&#8221;</p>
<p><strong>Gestor de Projecto</strong> &#8211; &#8220;Sim, muito bem <strong>e</strong> agora temos de nos focar também em entregar a documentação a tempo? Do que precisamos?&#8221;</p></blockquote>
<p>Pensem agora nesta última conversa. Qual delas será a mais construtiva, colaborativa, positiva e inteligente?</p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2009/12/12/o-poder-do-e-e-do-mas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>O que faz uma boa equipa?</title>
		<link>http://jpereira.eu/2009/12/10/o-que-faz-uma-boa-equipa/</link>
		<comments>http://jpereira.eu/2009/12/10/o-que-faz-uma-boa-equipa/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 18:48:05 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Gestão]]></category>
		<category><![CDATA[Gestão de Projecto]]></category>
		<category><![CDATA[PMP]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Gestão de Projectos]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=161</guid>
		<description><![CDATA[Num artigo do Financial Post de Setembro, pode ler-se o seguinte: &#8220;An effective team has to be able to respond quickly[...] And for that, we need a forum for robust dialogue. A formally constituted team comes from the desire to work collaboratively [...] There is a shared commitment to goals that has the support of individual team [...]]]></description>
			<content:encoded><![CDATA[<p>Num artigo do <a href="http://www.financialpost.com/story.html?id=2258320">Financial Post de Setembro</a>, pode ler-se o seguinte:</p>
<p>&#8220;An effective team has to be able to respond quickly[...] And for that, we need a forum for<strong> robust dialogue</strong>.</p>
<p>A formally constituted team comes from the <strong>desire to work collaboratively</strong> [...] There is a <strong>shared commitment to goals</strong> that has the support of individual team members, and in turn supports them.</p>
<p>An effective team [...] contrasts with a more common hierarchical approach to business goals, &#8220;the command-and-control approach.&#8221;</p>
<p>The effective team are [...] <strong>The Magnificent Seven</strong> rather than The Good, The Bad and The Ugly.</p>
<p>To have and effective teams [...]Businesses need to shift from individual bonuses to team-based bonuses, to flatten out their reporting structure.</p>
<p>What may not be a Team? [...] A committee is a weak variant of a team [...] A team [...] is the opposite of a committee in that it <strong>has a unifying purpose and values to which all members ascribe, despite</strong> their position within the organization.</p>
<p>How to build a team? [...] <strong>Peer mentoring is a team learning system</strong> that lets people teach each other [...] Workshops have their place in leadership development, but most corporations don&#8217;t have a significant way to transfer that knowledge into skills.&#8221;</p>
<p>Peer Mentorig [...] challenges people to <strong>take ownership of their careers</strong>. As long as no direct reporting is involved, it works magically.</p>
<p>How a effective team looks like?[...] include enough people, and a good <strong>cross-section of skills</strong>. We call it <strong>collective intelligence</strong>. The worst thing to do is try to figure out things by yourself.</p>
<p>Ainda no mesmo artigo são sugeridas oito características de uma boa equipa:</p>
<p><strong>EIGHT TEAM MUST-HAVES</strong></p>
<ol>
<li><strong>Must have a meaningful purpose that all members care about.</strong></li>
<li><strong>Can&#8217;t be too large. Some experts suggest capping at 20. Field cautions against there being too little work for all members.</strong></li>
<li><strong>Needs a diverse set of skills appropriate to the goals.</strong></li>
<li><strong>Needs to be physically together. Even having some team members on different floors can hurt the team.</strong></li>
<li><strong>Succeeds or fails together. No stars or scapegoats.</strong></li>
<li><strong>Shares leadership. Of course there is one leader, but he or she should be willing to step aside when another team member&#8217;s skills are required.</strong></li>
<li><strong>Has strong shared norms and expectations of behaviour. These are soft skills that often need to be taught.</strong></li>
<li><strong>Needs time. &#8220;You lose advantages if you hurry,&#8221; Prof. Field says. &#8220;Slow it down for the process to work.&#8221;</strong></li>
</ol>
<p>Artigo original:</p>
<p><a href="http://www.financialpost.com/story.html?id=2258320">http://www.financialpost.com/story.html?id=2258320</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2009/12/10/o-que-faz-uma-boa-equipa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrum Guide por Ken Schwaber</title>
		<link>http://jpereira.eu/2009/09/30/scrum-guide-por-ken-schwaber/</link>
		<comments>http://jpereira.eu/2009/09/30/scrum-guide-por-ken-schwaber/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 08:00:47 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Gestão de Projecto]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=119</guid>
		<description><![CDATA[Ken Schwaber escreveu em Maio de 2009 o Scrum Guide. É uma excelente introdução ao Scrum pelo seu inventor. O Scrum Guide: http://www.scrumalliance.org/resource_download/598 Para uma rápida introdução ao Scrum deixo também este vídeo:]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.controlchaos.com/" target="_blank">Ken Schwaber</a> escreveu em Maio de 2009 o Scrum Guide. É uma excelente introdução ao Scrum pelo seu inventor.</p>
<p>O Scrum Guide<a href="http://www.scrumalliance.org/resource_download/598" target="_blank">: http://www.scrumalliance.org/resource_download/598</a></p>
<p>Para uma rápida introdução ao Scrum deixo também este vídeo:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Q5k7a9YEoUI&amp;hl=en&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/Q5k7a9YEoUI&amp;hl=en&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2009/09/30/scrum-guide-por-ken-schwaber/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Release Management &#8211; Chapter 8 Available</title>
		<link>http://jpereira.eu/2009/06/04/release-management-chapter-8-available/</link>
		<comments>http://jpereira.eu/2009/06/04/release-management-chapter-8-available/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 16:46:25 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Gestão]]></category>
		<category><![CDATA[Gestão de Projecto]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=92</guid>
		<description><![CDATA[It&#8217;s now available for review the 8th chapter of the book &#8220;Agile Product Management: Turning Ideas into Winning Products with Scrum&#8220;. I&#8217;ve introduced this book here in Portuguese. I haven&#8217;t read it, but I will, I promise and I hope you, as an agile wannabe, read it too so you will not make anything stupid [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s now available for review the 8th chapter of the book &#8220;<a title="http://www.mikecohnsignatureseries.com/books/agile-product-management" href="http://www.mikecohnsignatureseries.com/books/agile-product-management" target="_blank">Agile Product Management: Turning Ideas into Winning Products with Scrum</a>&#8220;.</p>
<p>I&#8217;ve introduced this book <a title="Agile product management" href="http://jpereira.eu/2009/03/11/agile-product-management/" target="_blank">here </a>in Portuguese.</p>
<p>I haven&#8217;t read it, but I will, I promise and I hope you, as an agile wannabe, read it too so you will not make anything stupid when planning your releases <img src='http://jpereira.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>This chapter deals with release management.  What is covered:</p>
<ul>
<li>Planning the release and creating the release plan</li>
<li>Estimating product backlog items</li>
<li>Determining velocity</li>
<li>Managing cost</li>
<li>Dealing with risk</li>
<li>Tracking and reporting the progress</li>
<li>Practices for large projects including lookahead planning and pipelining</li>
</ul>
<p>Have a nive reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2009/06/04/release-management-chapter-8-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
