<?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; Agile</title>
	<atom:link href="http://jpereira.eu/category/agile/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>Yeahh, I&#8217;m building it with enterprise ready technologies&#8230; who cares?</title>
		<link>http://jpereira.eu/2011/02/05/yeahh-ia-building-it-with-enterprise-grade-technologies-who-cares/</link>
		<comments>http://jpereira.eu/2011/02/05/yeahh-ia-building-it-with-enterprise-grade-technologies-who-cares/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 14:45:57 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WEB 2.0]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=372</guid>
		<description><![CDATA[If you have an web product idea and want to test it, i.e. put it in front of your users, what it&#8217;s the most critical aspect to consider first? I usually get my head into a conflict, because I&#8217;m used to work with the so-called &#8220;enterprise ready technologies&#8221;, namely JEE. My mind if formatted to [...]]]></description>
			<content:encoded><![CDATA[<p>If you have an web product idea and want to test it, i.e. put it in front of your users, what it&#8217;s the most critical aspect to consider first? I usually get my head into a conflict, because I&#8217;m used to work with the so-called &#8220;enterprise ready technologies&#8221;, namely JEE.  My mind if formatted to think about all aspects that a good enterprise product should have.  I start giving more attention to a set of quality attributes like performance, usability, reusability, testability, portability, modifiability, etc, etc, and give less attention to one critical aspect, if I want to get a product in front of the users fast: productivity.</p>
<p>So, I start looking to what is out there that is enterprise ready, like EJBs, JSF, Hibernate, JBoss, Tomcat, whatever, and start getting the pieces together&#8230;. out there in the world there was some a guy with the same product idea, but  considered first the productivity aspect of the equation and started to materialize the idea with, let&#8217;s say, Ruby on Rails&#8230;. guess who&#8217;s the winner?</p>
<p>I&#8217;m not against the use of JEE, of course, I just think that in some cases it does not make sense. I also have this false argument in my mind: What if I start building it with PHP and then hit a performance problem with my 1Million users? Well, If I ever had one million users, I&#8217;ll be happy to deal with these performance issues <img src='http://jpereira.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2011/02/05/yeahh-ia-building-it-with-enterprise-grade-technologies-who-cares/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 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>The Waterfall Manifesto (Just for fun)</title>
		<link>http://jpereira.eu/2009/10/21/the-waterfall-manifesto-just-for-fun/</link>
		<comments>http://jpereira.eu/2009/10/21/the-waterfall-manifesto-just-for-fun/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 13:40:59 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://jpereira.eu/?p=149</guid>
		<description><![CDATA[Our experience has taught us to value: Processes and tools over individuals and interactions Comprehensive documentation over quality software Contract negotiation over customer collaboration Following THE initial plan over responding to change That is, while you could be very lucky to work in a project with the items on the right (intelligent developers and customers [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Our experience has taught us to value:</p>
<ul>
<li>Processes and tools over individuals and interactions</li>
<li>Comprehensive documentation over quality software</li>
<li>Contract negotiation over customer collaboration</li>
<li>Following THE initial plan over responding to change</li>
</ul>
<p>That is, while you could be very lucky to work in a project with the items on the right (intelligent developers and customers working together, what are these agilists smoking?!?), you will never be fired for applying items on the left (or if you are, this is very unlucky or because you didn&#8217;t choose IBM).</p></blockquote>
<p><a href="http://www.waterfallmanifesto.org/" target="_blank">http://www.waterfallmanifesto.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jpereira.eu/2009/10/21/the-waterfall-manifesto-just-for-fun/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>
	</channel>
</rss>
