<?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>dotNET Station &#187; Agile</title>
	<atom:link href="https://blog.developpez.com/dotnetstation/pcategory/agile/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/dotnetstation</link>
	<description></description>
	<lastBuildDate>Fri, 20 Apr 2012 08:55:56 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Agilité pour quête de la productivité !</title>
		<link>https://blog.developpez.com/dotnetstation/p10597/agile/agilite_pour_quete_productivite</link>
		<comments>https://blog.developpez.com/dotnetstation/p10597/agile/agilite_pour_quete_productivite#comments</comments>
		<pubDate>Fri, 20 Apr 2012 07:00:00 +0000</pubDate>
		<dc:creator><![CDATA[rad_hass]]></dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[On entend souvent dire que la mise en place de l&#8217;agilité doit être suivi d&#8217;une période d&#8217;adaptation du processus à celui de l&#8217;équipe et à plus large échelle à celle de l&#8217;entreprise. Mais comment savoir ce qu&#8217;il faut retenir et comment adapter ? Quelle est la quête ? Peut on mettre des objectifs et se donner un feedback&#8230; D’abord celui de l&#8217;équipe, expérimenter et améliorer&#8230; Les rétrospectives sont là pour ça, l&#8217;amélioration continue est une [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>On entend souvent dire que la mise en place de l&rsquo;agilité doit être suivi d&rsquo;une période d&rsquo;adaptation du processus à celui de l&rsquo;équipe et à plus large échelle à celle de l&rsquo;entreprise. Mais comment savoir ce qu&rsquo;il faut retenir et comment adapter ? Quelle est la quête ? Peut on mettre des objectifs et se donner un feedback&#8230;</p>
<p>D’abord celui de l&rsquo;équipe, expérimenter et améliorer&#8230; Les rétrospectives sont là pour ça, l&rsquo;amélioration continue est une des garanties de la performance dans un projet.</p>
<p>Mais au finale qu&rsquo;elle est notre désir et ce qui pousse à adopter de nouvelle méthode ? La valeur, la motivation, la productive et la qualité. Pour que l&rsquo;agilité ne reste pas qu&rsquo;une promesse, il faut se fixer des objectifs élevées et les suivre.</p>
<p><span id="more-56"></span></p>
<p>Pour commencer, je voudrais juste dire de ce qu&rsquo;est l&rsquo;agilité pour moi et ce que ça représente. L&rsquo;agilité est un ensemble de pratiques et de principes (cf <a href="http://fr.wikipedia.org/wiki/Manifeste_agile">manifeste agile</a>) qu&rsquo;on applique de manière pragmatique afin d&rsquo;atteindre les objectifs projet, ce n&rsquo;est pas une méthode miracle qui s&rsquo;utilise de la même manière quelques soit le projet. Scrum par exemple est un Framework qui permet de donner un cadre à l&rsquo;équipe de développement sans apporter de réponse quand à la phase de spécification et d&rsquo;analyse. Mais ceci ne veux pas dire qu&rsquo;elles ne sont pas utiles ou qu&rsquo;elles n&rsquo;ont pas de sens c&rsquo;est juste que Scrum ne donne pas les outils pour le faire. L&rsquo;agilité nous pousse à trouver des solutions à nos problèmes pour lesquels encore une fois il n&rsquo;existe pas de solution miracle et pour ce faire on part du minimum, on part donc d&rsquo;un processus léger (cf Scrum ou encore plus frappant avec Kanban) et on doit utiliser d&rsquo;autres pratiques sans les imposer pour répondre aux éventuels problématique dans un projet cf Scrum et XP tirer les meilleurs des deux ou encore Scrum et CMMI&#8230; Le culte d&rsquo;une méthode n&rsquo;a plus beaucoup de sens aujourd&rsquo;hui, c&rsquo;est pour cette raison qu&rsquo;il faut cesser de suivre aveuglement les différentes modes et tirer le meilleur de ce qui existe pour la bonne conduite de nos projets.<br />
Donc non, agile ne veut pas dire manque de prédictibilité ou encore de documentation ou d&rsquo;analyse, bien au contraire si le projet le nécessite.</p>
<p><strong>La valeur</strong></p>
<p>Produire de la valeur, obtenir de la valeur le plus rapidement possible, revient à développer les éléments les plus prioritaires et ceux apportant le plus de valeur tout en constituant un ensemble cohérent et livrable, à valider le plus tôt et livrer aussitôt. Il est bien question ici de Time To market.<br />
Alors entendre dire que dans l&rsquo;agilité il n&rsquo;y a pas de place à l&rsquo;analyse est pour moi un non sens totale, comment penser qu&rsquo;on peut constituer une première liste d&rsquo;éléments pour la première version du produit sans faire un énorme travail d&rsquo;analyse ? Alors oui, il faut définir une liste de fonctionnalité, les priorisés, définir un plan de release (valider avec l&rsquo;ensemble de l&rsquo;équipe projet), être sûre que ce premier plan contient une liste cohérente et suffisante pour avoir un produit exploitable, apportant une valeur, avec l&rsquo;ensemble des critères d&rsquo;acceptation associés. Non seulement il y a une phase d&rsquo;analyse mais en plus elle est faite à chaque incrément du produit. Voici un des défis de l&rsquo;agilité, à savoir recueillir le besoin, l&rsquo;exprimer et passer en production le plus rapidement possible.</p>
<p><strong>La productivité</strong></p>
<p>La productivité d&rsquo;une équipe est étroitement lié à la quantité de valeur que l&rsquo;équipe produit pendant un sprint/release livré en production. Plus l&rsquo;équipe est productive, moins elle met de temps à pousser des fonctionnalité en production (donc raccourcir et améliorer les processus de livraisons) avec des fonctionnalités qui répondent au besoin de l&rsquo;utilisateur/client, l&rsquo;implication ici du métier dans l&rsquo;équipe est vitale et la notion de test automatisé est primordiale, voir <a href="http://fr.wikipedia.org/wiki/Test_Driven_Development">Test Driven Requierment (TDR)</a>/<a href="http://fr.wikipedia.org/wiki/Behavior_Driven_Development">Behavior Driven Development (BDD)</a>. Le test est le seul garant d&rsquo;un Refactoring sans casse et le Refactoring est la seul garant d&rsquo;une productivité qui ne baisse pas avec le temps. </p>
<p><strong>La motivation</strong></p>
<p>Une équipe productive est une équipe motivé, l&rsquo;agilité a besoin d&rsquo;individu motivé, investi et moteur. Une des valeurs de l&rsquo;agilité est de donner de l&rsquo;autonomie à l&rsquo;équipe, ce qui donne le champs libre à l’épanouissement personnel et avec des individus épanouis on forme des équipes performantes. Si en plus de la motivation l&rsquo;accomplissement ou le désir de l&rsquo;excellence fait partie des attentes des développeurs, nous avons alors une équipe qui innovera, se souciera de la qualité et proposera des solutions d&rsquo;améliorations.</p>
<p>Voici une excellente vidéo sur le sujet : http://www.youtube.com/watch?v=u6XAPnuFjJc</p>
<p><strong>La qualité</strong> </p>
<p>Faire de la qualité pour de la qualité n&rsquo;est pas une quête en soit, par contre faire de la qualité pour maintenir un niveau de production malgré une quantité de code grandissante est essentiel. Il faut chercher continuellement à rendre le code évolutif et facile à maintenir, en limitant les régressions avec une bonne couverture en test et une architecture/design facile à enrichir, l&rsquo;ajout d&rsquo;une nouvelle fonctionnalitée avec un impacte minimale sur le code existant permet d&rsquo;éviter le code spaghetti.</p>
<p>Voici quelques facteurs importants pour garantir une productivité qui dure <img src="https://blog.developpez.com/dotnetstation/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p>
<p>Article précédent, <a href="http://blog.developpez.com/dotnetstation/p10964/agile/vers-la-production-agile-construire-une/">Vers la production agile : Construire une usine logicielle .NET efficace</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Unitaire et couche d&#8217;accès</title>
		<link>https://blog.developpez.com/dotnetstation/p9019/divers/test_unitaire_et_couche_d_acces</link>
		<comments>https://blog.developpez.com/dotnetstation/p9019/divers/test_unitaire_et_couche_d_acces#comments</comments>
		<pubDate>Tue, 22 Jun 2010 09:28:07 +0000</pubDate>
		<dc:creator><![CDATA[rad_hass]]></dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Divers]]></category>
		<category><![CDATA[Ma récap .NET]]></category>
		<category><![CDATA[Test]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voici un des grands classiques des tests unitaires, la fameuse couche d&#8217;accès et la problématique lié à la base de donnée &#8230; Comme pour tout problème non trivial, il existe une multitude de solutions, d&#8217;ailleurs il n y a pas longtemps une liste des solutions possibles a été donnée dans un des blogs de developpez : http://blog.developpez.com/nico-pyright/p8194/c/tests-unitaires-comment-tester-sa-couche/ Pour moi la base de donnée fait partie intégrante du système et pour cette raison je ne conçois [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voici un des grands classiques des tests unitaires, la fameuse couche d&rsquo;accès et la problématique lié à la base de donnée &#8230;</p>
<p>Comme pour tout problème non trivial, il existe une multitude de solutions, d&rsquo;ailleurs il n y a pas longtemps une liste des solutions possibles a été donnée dans un des blogs de developpez :</p>
<p>http://blog.developpez.com/nico-pyright/p8194/c/tests-unitaires-comment-tester-sa-couche/</p>
<p>Pour moi la base de donnée fait partie intégrante du système et pour cette raison je ne conçois pas des test indépendant de la base (en tout cas en ce qui concerne la DAL), quitte à rendre cette partie de mes test moins unitaires.<br />
Et la meilleure façon de tester en évitant les surprises est de tester dans des conditions proches de l&rsquo;environnement de production. Mais ceci pose un problème majeur, comment peut on garantir le même résultat pour plusieurs exécutions ?</p>
<p><span id="more-28"></span></p>
<p>Pour remédier à cela, il existe des Frameworks qui permettent de faire certaines choses (DBunit &#8230;), initialiser les données avant de lancer les tests, par exemple.<br />
Mais de toutes les approches, je préfère celle qui manipule directement le contenu de la base sans altérer son contenu, évitant par ailleurs le télescopage entre plusieurs test.</p>
<p>Certains Frameworks permettent l&rsquo;utilisation de l&rsquo;attribut Rollback, Nunit permet de le faire mais seulement avec une extension (xtUnit pour qui ça intéresse), l&rsquo;autre solution serait d&rsquo;utiliser TransactionScope :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[Test] <br />
&nbsp; &nbsp; &nbsp; &nbsp; public void InsertCustomer_CheckQuantityClientInsert_CorrectInsertion() <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Customer customer = new Customer(&quot;Nicolas&quot;,&quot;Paris&quot;); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (TransactionScope transaction = new TransactionScope()) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int nbInserted = customerDAL.InsertCustomer(customer); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Assert.That(nbInserted, Is.EqualTo(1)); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; }</div></div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[Test] <br />
&nbsp; &nbsp; &nbsp; &nbsp; public void InsertCustomer_CustomerExistsInDatabase_FailureInsertion() <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Customer customer = new Customer(&quot;Nicolas&quot;,&quot;Paris&quot;); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (TransactionScope transaction = new TransactionScope()) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int nbInserted = customerDAL.InsertCustomer(customer); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Assert.That(nbInserted, Is.EqualTo(0)); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; }</div></div>
<p>Pour exécuter un tel test il faut :</p>
<p>&#8211; Référencer System.transactions<br />
&#8211; Avoir une entité Customer<br />
&#8211; Une class d&rsquo;accès customerDAL ayant une méthode InsertCustomer qui retourne le nombre de lignes affectées.</p>
<p><strong>Autre scénario</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[Test] <br />
&nbsp; &nbsp; &nbsp; &nbsp; public void InsertCustomer_CheckQuantityClientInsert_CorrectInsertion() <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Customer customer = new Customer(5, &quot;Nicolas&quot;,&quot;Paris&quot;); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (TransactionScope transaction = new TransactionScope()) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int nbInserted = customerDAL.InsertCustomer(customer); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Customer customerResult = = customerDAL.GetCustomerById(5); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Assert.That(customerResult.City , Is.EqualTo(&quot;Paris&quot;)); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; customer.City = &quot;London&quot;; <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int nbUpdated = customerDAL.UpdateCustomer(customer); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; customerResult = customerDAL.GetCustomerById(5); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Assert.That(nbUpdated, Is.EqualTo(1)); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Assert.That(customerResult.City , Is.EqualTo(&quot;London&quot;)); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; }</div></div>
<p>Voici un scénario pas forcément très unitaire, mais qui permet de tester efficacement une mise à jour, à condition que l&rsquo;insertion et la sélection soit bien tester également.<br />
La condition de l&rsquo;utilisation de TransactionScope ici est que la IDBConnection soit partager entre les différentes méthodes appelées de la DAL.</p>
<p>Donc pour conclure ma solution n&rsquo;est pas forcément un Test Unitaire, mais pour l&rsquo;instant c&rsquo;est la seule qui m&rsquo;est vraiment convaincu <img src="https://blog.developpez.com/dotnetstation/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Article sur une transformation agile, mon retour d&#8217;expérience</title>
		<link>https://blog.developpez.com/dotnetstation/p9304/agile/scrum_et_xp_mon_retour_d_experience</link>
		<comments>https://blog.developpez.com/dotnetstation/p9304/agile/scrum_et_xp_mon_retour_d_experience#comments</comments>
		<pubDate>Tue, 05 Oct 2010 10:40:27 +0000</pubDate>
		<dc:creator><![CDATA[rad_hass]]></dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[y a quelques jours j&#8217;ai enfin publié mon article sur l&#8217;agilité et il a déjà atteint plus de 1900 visualisation. http://rad-hass.developpez.com/tutoriels/conception/route-vers-agilite-scrum-et-xp-retour-experience/ Cet article, revient sur ma transformation agile, mais aussi la transformation agile de mon équipe. La pratique de l&#8217;agilité m&#8217;a permis d&#8217;améliorer mon quotidien, mais aussi la qualité de mes développements, refactoring, test, amélioration continue, participation du client&#8230; Sont quelques clés de cette transformation. Cette expérience, m&#8217;a donné la possibilité de voir les bénéfices [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>y a quelques jours j&rsquo;ai enfin publié mon article sur l&rsquo;agilité et il a déjà atteint plus de 1900 visualisation.</p>
<p>http://rad-hass.developpez.com/tutoriels/conception/route-vers-agilite-scrum-et-xp-retour-experience/</p>
<p>Cet article, revient sur ma transformation agile, mais aussi la transformation agile de mon équipe. La pratique de l&rsquo;agilité m&rsquo;a permis d&rsquo;améliorer mon quotidien, mais aussi la qualité de mes développements, refactoring, test, amélioration continue, participation du client&#8230; Sont quelques clés de cette transformation.</p>
<p>Cette expérience, m&rsquo;a donné la possibilité de voir les bénéfices de l&rsquo;agilité, mais aussi les difficultés lié aux changements.</p>
<p><span id="more-44"></span></p>
<p>Au delà des pratiques, l&rsquo;agilité constitue un ensemble de principes qui sont parfois heurté à des réticences, liées aux mentalités. La transparence, l&rsquo;absence de hiérarchie forte dans une équipe sont parfois perçu comme des menaces pour les individus. Et l&rsquo;organisation des équipes avec la présence d&rsquo;un représentant client, peuvent être un défi compte tenu des hiérarchisations de certaines grandes structures.<br />
Dans le vaste domaine qu&rsquo;est la conduite du changement, on parle parfois de résistance naturel, le changement doit être progressif, il faut convaincre et accompagné.</p>
<p>Dans les premières étapes de l&rsquo;introduction de l&rsquo;agilité dans une équipe, la dynamique que peut apporter une nouvelle pratique apporte un effet levier indispensable au démarrage, mais ceci n&rsquo;a qu&rsquo;une durée limitée et tant que l&rsquo;ensemble de l&rsquo;entreprise ne pratique pas et adhère pas à ces principes, la courbe de progression risque de stagner, voir régresser. Car tant que la MOA sera MOA et toujours aussi loin de l&rsquo;équipe MOE, le bénéfice totale de l&rsquo;agilité ne se fera pas, sans parler des équipes de productions qui sont parfois totalement indépendantes des équipes projets.</p>
<p>Et à ce propos on voit beaucoup de livre et de conférence à ce sujet, prochainement Valtech organise un afterwork (à Paris) sur cette thématique le 13 Octobre, après cela vous pouvez retrouver des sessions sur l&rsquo;agilité et la transformation agile en particulier dans l&rsquo;Agile Tour 2010 prévu le 28 Octobre.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le commentaire : Signe que le code sens mauvais ?</title>
		<link>https://blog.developpez.com/dotnetstation/p9284/agile/le_commentaire_signe_que_le_code_sens_ma</link>
		<comments>https://blog.developpez.com/dotnetstation/p9284/agile/le_commentaire_signe_que_le_code_sens_ma#comments</comments>
		<pubDate>Thu, 16 Sep 2010 19:50:39 +0000</pubDate>
		<dc:creator><![CDATA[rad_hass]]></dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voilà un titre à bien des égards trollesque, je me souviens il y a quelque temps d&#8217;un débat dans le forum développez autour du commentaire et ce n&#8217;était pas de tout repos, mais au delà d&#8217;être pour ou contre le commentaire, certains ne trompent pas, ils sont bien là pour masquer les mauvaises odeurs. Voilà ici une figure de style que j&#8217;affectionne particulièrement, elle n&#8217;est pas de moi alors il faut rendre à césar ce [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voilà un titre à bien des égards trollesque, je me souviens il y a quelque temps d&rsquo;un débat dans le forum développez autour du commentaire et ce n&rsquo;était pas de tout repos, mais au delà d&rsquo;être pour ou contre le commentaire, certains ne trompent pas, ils sont bien là pour masquer les mauvaises odeurs. Voilà ici une figure de style que j&rsquo;affectionne particulièrement, elle n&rsquo;est pas de moi alors il faut rendre à césar ce qu&rsquo;est à césar :</p>
<p><span id="more-41"></span></p>
<blockquote><p>Dont&rsquo;s worry, we aren&rsquo;t saying that people shouldn&rsquo;t write comments. In our olfactory analogy, comments aren&rsquo;t a bad smell; indeed they are a sweet smell. the reason we mention comments here is that comments often are used as a deodorant. It&rsquo;s suprising how often you look at thickly commented code and notice that the comments are the because the code is bad.</p>
<p>Comments lead us to bad code that has all the rotten whiff&rsquo;s we&rsquo;ve discussed in the rest of this chapter. Our first action is to remove bad smells by refactoring. Wehn we&rsquo;re finished, we often find that the comments are superfluous.</p>
<p>If you need a comment to explain what a block of code does, try extract method. If the method is already extracted but you still need a comment to explain what it does, use rename method. if you need to state some rules about the required state of system, use introduce assertion.</p>
<p>When you feel the need to write a comment, first try to refactor the code so that any comment becomes superfluous.</p>
<p>A good time to use a comment is when you don&rsquo;t know what to do. In addition to describing what is going on, comments can indicate areas in which you aren&rsquo;t sure. A comment is a good place to say why you did something. This kind of information helps future modifiers, especially forgetful ones.</p></blockquote>
<p><em>Extrait de &laquo;&nbsp;Refactoring: improving the design of existing code&nbsp;&raquo;</em></p>
<p>L&rsquo;idée est que certains commentaires sont utilisés comme du déodorant pour masquer les mauvaises odeurs, alors avant de commenter voyez si votre code ne peut pas être amélioré, Refactoring Inside. Un commentaire superflue, nuit plus qu&rsquo;il ne contribue, alors essayer d&rsquo;extraire le code à commenter, si c&rsquo;est déjà fait renommer la méthode pour rendre plus explicite ce qu&rsquo;elle fait&#8230;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Scrum] Générer un Burdown chart de Sprint</title>
		<link>https://blog.developpez.com/dotnetstation/p9139/agile/generer_un_burdown_chart_de_sprint</link>
		<comments>https://blog.developpez.com/dotnetstation/p9139/agile/generer_un_burdown_chart_de_sprint#comments</comments>
		<pubDate>Thu, 12 Aug 2010 11:45:04 +0000</pubDate>
		<dc:creator><![CDATA[rad_hass]]></dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si vous n&#8217;êtes pas un artiste dans l&#8217;âme et que les séances de dessin ne vous emballe guère alors, vous avez certainement recherché à automatiser la génération du Burndown ou autres artéfacts Scrum. Après avoir fait le tour de la question, je suis revenu à la solution d&#8217;automatisation la plus simple : Excel. D&#8217;abord l&#8217;étape exploration d&#8217;outils : Parmi la multitude d&#8217;outils disponibles deux avaient retenu particulièrement mon attention d&#8217;abord GreenHopper un plugin pour Jira [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Si vous n&rsquo;êtes pas un artiste dans l&rsquo;âme et que les séances de dessin ne vous emballe guère alors, vous avez certainement recherché à automatiser la génération du Burndown ou autres artéfacts Scrum.</p>
<p>Après avoir fait le tour de la question, je suis revenu à la solution d&rsquo;automatisation la plus simple : Excel.</p>
<p><span id="more-62"></span></p>
<p><strong>D&rsquo;abord l&rsquo;étape exploration d&rsquo;outils :</strong></p>
<p>Parmi la multitude d&rsquo;outils disponibles deux avaient retenu particulièrement mon attention d&rsquo;abord GreenHopper un plugin pour Jira (l&rsquo;outil utilisé chez mon client) et IceScrum.<br />
Pour mon expérimentation j&rsquo;ai choisi IceScrum, qui avait l&rsquo;avantage d&rsquo;être totalement gratuit et les graphiques proposées sont plutôt réussi. Ayant déjà un environnement de travail Scrum (mur blanc, backlog de produit &#8230;), j&rsquo;ai voulu utiliser IceScrum comme complément, solution peu évidente puisque l&rsquo;utilisation partiel des fonctionnalités désirées était impossible. Mais séduit par l&rsquo;outil et par le panel de fonctionnalités, j&rsquo;ai convaincu mon équipe de l&rsquo;expérimenter comme outil principale &#8230; Solution vite abandonnée (au bout de 3 sprints) tant l&rsquo;adoption de l&rsquo;outil fut un échec, quelques éléments de l&rsquo;échec ont été sa complexité (peut être il aurait fallu mieux former), des lourdeurs &#8230; Au finale une utilisation beaucoup moins instinctive et automatisable que l&rsquo;est le mur blanc <img src="https://blog.developpez.com/dotnetstation/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /></p>
<p><strong>Ensuite les templates excels :</strong></p>
<p>Souvent payant (chose qui m&rsquo;a beaucoup étonné), parfois gratuit, les modèles trouvés m&rsquo;ont souvent frappés par leurs complexités &#8230; Ne répondant pas à mon besoin assez simpliste du départ.</p>
<p>Après ces explorations forts enrichissantes des outils Agiles utilisés, je me suis rendu compte que je m&rsquo;éloignai de mon besoin initial et que les solutions proposées ne répondait pas à mon besoin le plus agilement possible, alors je suis reparti d&rsquo;une simple feuille excel qui me génère juste ce dont j&rsquo;ai besoin. Et oui j&rsquo;ai réinventé la roue, et si c&rsquo;est le prix à payer pour ne pas devenir esclave d&rsquo;un outil ? </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Les stars de l&#8217;actualité informatique : Cloud et Agilité &#8230;</title>
		<link>https://blog.developpez.com/dotnetstation/p9134/regard-sur-lactualite/les_stars_de_l_actualites_cloud_et_agile</link>
		<comments>https://blog.developpez.com/dotnetstation/p9134/regard-sur-lactualite/les_stars_de_l_actualites_cloud_et_agile#comments</comments>
		<pubDate>Wed, 21 Jul 2010 13:01:15 +0000</pubDate>
		<dc:creator><![CDATA[rad_hass]]></dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Regard sur l&#039;actualité]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si l&#8217;informatique aujourd&#8217;hui devient incontournable dans toutes entreprises, les coûts de développement et de maintenance d&#8217;une application et son hébergement, deviennent des enjeux majeurs dans la stratégie d&#8217;entreprise. Et à ses préoccupations, il y a deux sujets d&#8217;actualités qui ont le vent en poupe d&#8217;une part le Cloud Computing, désigné comme étant la prochaine évolution majeure du Web et d&#8217;autres part l&#8217;Agile Testing (les tests agiles). Comme le démontre la récente étude réaliser par Capgemini [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Si l&rsquo;informatique aujourd&rsquo;hui devient incontournable dans toutes entreprises, les coûts de développement et de maintenance d&rsquo;une application et son hébergement, deviennent des enjeux majeurs dans la stratégie d&rsquo;entreprise. </p>
<p>Et à ses préoccupations, il y a deux sujets d&rsquo;actualités qui ont le vent en poupe d&rsquo;une part le Cloud Computing, désigné comme étant la prochaine évolution majeure du Web et d&rsquo;autres part l&rsquo;Agile Testing (les tests agiles). Comme le démontre la récente étude réaliser par Capgemini et Sogeti <a href="http://bourse.lci.fr/bourse-en-ligne.hts?urlAction=bourse-en-ligne.hts&amp;idnews=HUG100623_00167706&amp;numligne=4&amp;date=100623">World Quality Report</a>.</p>
<p><span id="more-43"></span></p>
<p><strong>Cloud Computing </strong></p>
<p>Le Cloud Computing répond aux multiples besoins d&rsquo;externalisation, mobilité, délocalisation et dématérialisation &#8230; Des études vont mêmes jusqu&rsquo;à affirmer qu&rsquo;une entreprise sur trois sera dans les nuages d&rsquo;ici 2012, on comprend aisément alors les investissements consentis par les acteurs majeurs de l&rsquo;informatique. Google a eu un grand succès avec Google Apps qui représentent une des applications les plus réussis du Cloud Computing, rendant même l&rsquo;utilisation offline possible.</p>
<p>Mais les critiques n&rsquo;ont pas épargné ce modèle, autre le fait que les utilisateurs perdent le contrôle de leurs applications, d&rsquo;autres voient en lui un simple phénomène de mode, gonflé à grand coup de marketing.</p>
<p>Alors solution miracle ou écran de fumer ? La vérité est probablement entres les deux.</p>
<p><strong>Agile Testing </strong></p>
<p>Le besoin est simple avoir des logiciels qui marchent le plus tôt possible, pour avoir un retour rapide sur investissement.<br />
Alors la réponse est de tester le plus rapidement et le plus souvent, pour d&rsquo;une part avoir un logiciel qui fonctionne et qui continue à fonctionner. Car au delà du fait qu&rsquo;un logicielle répondent aux exigences à l&rsquo;instant T, les régressions et la maintenance restent des grands consommateurs de coût dans la vie d&rsquo;un produit.</p>
<p>Ainsi les méthodes agiles deviennent une solution séduisante pour améliorer les délais de mises à disposition des applications, ainsi que l&rsquo;augmentation de la qualité des livrables.<br />
Et pour rendre vos tests plus efficaces, il faut les exécuter très tôt dans le processus de développement (Test Driven Development) et continuer à les exécuter continuellement (Intégration continue). Et pour aller plus loin, il y a la possibilité d&rsquo;avoir des spécifications fonctionnel exécutable (Test Driven Requirement ou encore <del>Dehavior</del> Behaviour-Driven  Development), spécifier l&rsquo;application en scénario de test et les traduire en test fonctionnel, garantis que l&rsquo;application non seulement fonctionne mais qu&rsquo;elle répond aux bons besoins. Et le fait que l&rsquo;exécution soit automatisé rend cet outil redoutable quand à la détection des régressions.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Organiser sa journée de travail ? Efficacité et productivité sans stress c&#8217;est possible</title>
		<link>https://blog.developpez.com/dotnetstation/p9077/divers/organiser_sa_journee_de_travail_efficace</link>
		<comments>https://blog.developpez.com/dotnetstation/p9077/divers/organiser_sa_journee_de_travail_efficace#comments</comments>
		<pubDate>Mon, 05 Jul 2010 14:24:06 +0000</pubDate>
		<dc:creator><![CDATA[rad_hass]]></dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Divers]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Il vous arrive souvent de vous éparpiller dans votre travail ? Vous êtes solliciter de toute part et votre focalisation et productivité s&#8217;en trouve handicapé ? Il existe une multitude de méthodologie permettant d&#8217;améliorer votre organisation, mais il est souvent difficile de garder l&#8217;effet levier de productivité, une fois que l&#8217;euphorie de la découverte et la motivation initiale ne soit dissipé. C&#8217;est pour cette raison que la simplicité de la méthodologie de travail a une [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Il vous arrive souvent de vous éparpiller dans votre travail ?<br />
Vous êtes solliciter de toute part et votre focalisation et productivité s&rsquo;en trouve handicapé ?</p>
<p>Il existe une multitude de méthodologie permettant d&rsquo;améliorer votre organisation, mais il est souvent difficile de garder l&rsquo;effet levier de productivité, une fois que l&rsquo;euphorie de la découverte et la motivation initiale ne soit dissipé.</p>
<p>C&rsquo;est pour cette raison que la simplicité de la méthodologie de travail a une importance primordiale.</p>
<p>Pour ma part, travaillant dans un cadre Scrum, nous avons des rituels quotidien permettant d&rsquo;orchestrer notre rythme de travail, la mêlée quotidienne en est une, dans laquelle chaque membre répond aux trois questions : Ce que j&rsquo;ai fais la veille ? Ce que je fais aujourd&rsquo;hui ? Et les problèmes rencontrer ? Pour avoir une visibilité quotidienne sur le travail effectué, nous veillons à faire un découpage en tâche le facilitant.</p>
<p>Reste que ceci ne nous permet pas d&rsquo;entrer dans le détail du programme journalier &#8230; Nous avons mis en place sans appliquer de réelles méthodologies, un travail d&rsquo;énumération des tâches à faire dans la journée. Mais à ceci il a manqué une vraie rigueur d&rsquo;une méthodologie permettant de mieux respecter le  plan initial.</p>
<p><span id="more-42"></span></p>
<p>C&rsquo;est à ce moment que je me suis intéresser aux méthodologies existantes et pour ceci je m&rsquo;étais intéressé à deux d&rsquo;entre elles, qui revenaient souvent dans les communautés agiles ; Getting Things Done (GTD) et Pomodoro.</p>
<p>Ces deux méthodes, essai d&rsquo;inculquer une discipline, un processus continue de priorisation des tâches courantes et la réalisation d&rsquo;une et une seul tâche en s&rsquo;y consacrant pleinement.</p>
<p>Pour ma part c&rsquo;est la seconde qui a le plus retenu mon attention, d&rsquo;une grande facilité d&rsquo;application, Pomodoro m&rsquo;a permis de mieux structurer mon travail journalier et d&rsquo;augmenter mon facteur de focalisation. Il n y a pas de magie, c&rsquo;est surtout une gymnastique souvent difficile à respecter, mais qu&rsquo;il faut appliquer le plus rigoureusement possible, pour espérer voir des résultats positifs sur la longue.</p>
<p>Des itérations successives de 25mn (pomodori) pour réaliser ses tâches, le plan de travail est le suivant :</p>
<p>&#8211; Découpage en tâches du travail à faire pour la journée.<br />
&#8211; Priorisation.<br />
&#8211; Estimer les tâches en pomodori.<br />
&#8211; Faire 4 pomodori de 25mn séparer d&rsquo;environ 5mn de pause.<br />
&#8211; Au bout de 4 pomodori, prendre une longue pause d&rsquo;environ 15 à 30mn.</p>
<p>Pendant un pomodori on s&rsquo;engage à faire une seul tâche, on se focalise pleinement sur celle-ci, le fait de n&rsquo;avoir que 25mn pour le faire aide beaucoup à augmenter le focus sur la tâche, surtout que toute autre distraction ou courte tâche (mail, téléphone &#8230;) peuvent probablement attendre la pause de 5mn &#8230;</p>
<p><strong>Autres bénéfices</strong></p>
<p>&#8211; On ne peut pas être concentré pleinement sur une très longue période, donc ces cycles avec des pauses régulières permettent une concentration accrue sur les tâches. Et se traduit sur la journée souvent avec un meilleur rendement.<br />
&#8211; Ne plus courir derrière le temps, cette méthode permet d&rsquo;avoir une meilleure visibilité sur le temps qui passe, on maîtrise en détail le temps passé et le temps restant sur nos tâches.<br />
&#8211; On renonce à l&rsquo;idée qu&rsquo;on peut tout faire en même temps, car ceci est le plus grand facteur de stress et au finale d&rsquo;une productivité effective largement inférieur aux efforts consentis.</p>
<p>Et vous ? Comment vous organisez vous ?</p>
<p>Quelques liens :</p>
<p>http://www.pomodorotechnique.com/ : Site officiel de la méthode. Vous trouverez <a href="http://www.pomodorotechnique.com/resources/cirillo/ThePomodoroTechnique_v1-3.pdf">ici</a> un article complet.<br />
Quelques blogs intéressant : <a href="http://lifehacker.com/5554725/the-pomodoro-technique-trains-your-brain-away-from-distractions">lifehacker</a>, <a href="http://www.etre-meilleur.com/gestion-du-temps/la-technique-pomodoro-ou-lart-de-gerer-son-temps-grace-a-une-tomate.html">etre-meilleur</a> ou <a href="http://www.aubryconseil.com/post/Un-pomodoro,-des-pomodori">aubryconseil</a><br />
Une dernière référence du <a href="http://online.wsj.com/article/SB10001424052748704538404574541590534797908.html">Wall Street Journal</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[Agile][Scrum] Comment spécifiez vous une tâche ?</title>
		<link>https://blog.developpez.com/dotnetstation/p8411/divers/agile_scrum_specification_tache_acceptat</link>
		<comments>https://blog.developpez.com/dotnetstation/p8411/divers/agile_scrum_specification_tache_acceptat#comments</comments>
		<pubDate>Wed, 09 Dec 2009 10:06:33 +0000</pubDate>
		<dc:creator><![CDATA[rad_hass]]></dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Divers]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les users stories sont le standard quand à la présentation des tâches dans une méthodologie agile SCRUM on est un bon exemple, où notre liste des tâches (Backlog de produit) est une liste d&#8217;user stories. Une User Storie est en générale présenté sous cette forme : &#171;&#160;En tant qu&#8217;utilisateur je peux m&#8217;identifier afin d&#8217;administrer mon compte&#160;&#187; &#171;&#160;En tant que comptable je peux calculer le reste à payer&#160;&#187; Elle permet de décrire en 1 ou 2 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Les users stories sont le standard quand à la présentation des tâches dans une méthodologie agile SCRUM on est un bon exemple, où notre liste des tâches (Backlog de produit) est une liste d&rsquo;user stories.</p>
<p>Une User Storie est en générale présenté sous cette forme :</p>
<p>&laquo;&nbsp;En tant qu&rsquo;utilisateur je peux m&rsquo;identifier afin d&rsquo;administrer mon compte&nbsp;&raquo;<br />
&laquo;&nbsp;En tant que comptable je peux calculer le reste à payer&nbsp;&raquo;</p>
<p>Elle permet de décrire en 1 ou 2 phrases une fonctionnalité qui représente l&rsquo;apport de la tâche du point de vue de l&rsquo;utilisateur, elle est complété par les critères d&rsquo;acceptation qui sont sous cette forme :<br />
<span id="more-61"></span><br />
&laquo;&nbsp;Vérifier que l&rsquo;utilisateur connecté est un comptable&nbsp;&raquo;<br />
&laquo;&nbsp;Vérifier que le comptable connecté est le gestionnaire du porte feuille du département concerné&nbsp;&raquo;<br />
&laquo;&nbsp;Vérifier que la somme du reste à payer ne fait pas dépasser le budget initial sinon levé une alerte&nbsp;&raquo;</p>
<p>Un autre façon d&rsquo;écrire des critères d&rsquo;acceptation serait la suivante :</p>
<p>&laquo;&nbsp;<strong>Étant </strong>donné un utilisateur connecté ayant le rôle de comptable dans le département du projet ouvert <strong>Quand </strong>le comptable calcule les prévisions des prochaines échéances <strong>Alors </strong> une alerte est levé si cette prévisions fait dépasser le budget initial&nbsp;&raquo;.</p>
<p>Bien sûre au préalable il faut veiller que les users stories ne soient pas de taille trop importante et ne pas hésiter à les découper en users stories de plus petites tailles.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Scrum]De la rétrospective à l&#8217;amélioration</title>
		<link>https://blog.developpez.com/dotnetstation/p8520/divers/de_la_retrospective_a_l_amelioration</link>
		<comments>https://blog.developpez.com/dotnetstation/p8520/divers/de_la_retrospective_a_l_amelioration#comments</comments>
		<pubDate>Fri, 22 Jan 2010 01:09:53 +0000</pubDate>
		<dc:creator><![CDATA[rad_hass]]></dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Divers]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Parfois il est suffisant d&#8217;identifier un problème pour commencer à le résoudre &#8230; Mais souvent il faut déterminer des axes d&#8217;amélioration, qu&#8217;on traduit en tâches d&#8217;améliorations ou choix de méthode à mettre en place. Un des constats c&#8217;est que parfois la traduction de la rétrospective* en une réel amélioration n&#8217;est pas aisé et certains points votés ne sont toujours pas efficacement mis en place. Il n&#8217;est pas toujours évident d&#8217;identifier un cadre à la mise [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Parfois il est suffisant d&rsquo;identifier un problème pour commencer à le résoudre &#8230; Mais souvent il faut déterminer des axes d&rsquo;amélioration, qu&rsquo;on traduit en tâches d&rsquo;améliorations ou choix de méthode à mettre en place.</p>
<p>Un des constats c&rsquo;est que parfois la traduction de la rétrospective* en une réel amélioration n&rsquo;est pas aisé et certains points votés ne sont toujours pas efficacement mis en place.<br />
<span id="more-60"></span><br />
Il n&rsquo;est pas toujours évident d&rsquo;identifier un cadre à la mise en place d&rsquo;une amélioration, si une intervention ne nécessite qu&rsquo;une intervention ponctuel, il est suffisant de la prendre en compte dans un sprint (ex : Notre serveur de sources n&rsquo;est pas performant, il est suffisant d&rsquo;avoir un tâche de migration dans un sprint pour améliorer &#8230;).</p>
<p>Donc pour éviter que des points d&rsquo;amélioration qui ont été retenu lors d&rsquo;une rétrospective ne soit délaisser par l&rsquo;équipe, on a mis en place un système de responsable de point d&rsquo;amélioration pour ça on mise sur le volontariat ;-), cette personne doit proposer un cadre et des actions concrètes à mettre en place pour faciliter la vie de l&rsquo;équipe, bien sûre en collaborant avec le reste de l&rsquo;équipe.</p>
<p>Le meilleur moment pour le faire ? Entre la rétrospective et la réunion de lancement, il est intéressant de laisser un temps de battement pour faire ce qu&rsquo;on a pu traiter pendant le sprint.</p>
<p>quel intérêt ? Tout ce que j&rsquo;ai dis au dessus, mais surtout lancer le débat <img src="https://blog.developpez.com/dotnetstation/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p>
<p><em>*La rétrospective de Sprint est une des réunions majeure dans la pratique de Scrum, elle permet d&rsquo;inspecter un Sprint pour en déduire les axes d&rsquo;améliorations (les points d&rsquo;améliorations sont votés par l&rsquo;équipe en fin de réunion), elle s&rsquo;inscrit dans l&rsquo;axe de l&rsquo;amélioration continue et permet d&rsquo;adapter et améliorer le processus.</em></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
