<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Carlo Pecchia's blog</title>
 <link href="/atom.xml" rel="self"/>
 <link href="/"/>
 <updated>2011-12-09T15:15:51+01:00</updated>
 <id>http://carlopecchia.eu/</id>
 <author>
   <name>Carlo Pecchia</name>
   <email>info@carlopecchia.eu</email>
 </author>

 
 <entry>
   <title>On Products selection</title>
   <link href="/blog/2011/12/01/on-products-selection"/>
   <updated>2011-12-01T17:02:03+01:00</updated>
   <id>http://carlopecchia.eu/blog/2011/12/01/on-products-selection</id>
   <content type="html">&lt;br /&gt;&lt;img class='align-left' src='/uploads/2011/12/balance.jpg' alt='Balance' style='padding: 5px;' /&gt;
&lt;p&gt;Often we face &lt;em&gt;the problem of selecting a right product&lt;/em&gt; for us (middleware, utility programs, COTS, and so on). What should we do in order to make an informed and managed choice? Here I&amp;#8217;d like to propose a little no non-sense approach.&lt;/p&gt;

&lt;p&gt;Basically we need to know what we want, what are &lt;strong&gt;our needs&lt;/strong&gt;. Then we can collect characteristics and factoids about the solution the market provides. It&amp;#8217;s worth noticing that at this point we select only the products that &lt;strong&gt;could match our needs&lt;/strong&gt;, and nothing more (hopefully). Now the question become &amp;#8220;how much well do they match our needs?&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Now, for each selected product, we can study it, prove it and collect data to analyze its behaviour: for each features we can assign a score (eg: from 1 to 5). Using sandboxes can also help us to refine the previously done needs analysis.&lt;/p&gt;

&lt;p&gt;Of course features/needs are scored too: we don&amp;#8217;t give to all of them the same importance. So each scored features is also weighted.&lt;/p&gt;

&lt;p&gt;At this point we have a score for each product: we are able to make an informed choice with a little qualitative analysis. A (little) time worth spent!&lt;/p&gt;

&lt;p&gt;To summarize:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;features and needs analysis (= WHAT we need)&lt;/li&gt;

&lt;li&gt;products gathering (= what COULD match my needs)&lt;/li&gt;

&lt;li&gt;products analysis and scoring (= HOW MUCH do they match, and need analysis refinement)&lt;/li&gt;

&lt;li&gt;weighted choice (= THE best for us)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Some example of characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;product age (more stable, young, not well tested/adopted)&lt;/li&gt;

&lt;li&gt;cost of installation, education, maintenance and operations&lt;/li&gt;

&lt;li&gt;how &amp;#8220;stable&amp;#8221; is the product owner (company or open source community)&lt;/li&gt;

&lt;li&gt;available documentation (generally easy to evaluate)&lt;/li&gt;
&lt;/ul&gt;
&lt;img src='/uploads/2011/12/sample_scoring.jpg' /&gt;
&lt;p&gt;Simple, but often forgotten!&lt;/p&gt;

&lt;p&gt;(photo credits &lt;a href='http://www.flickr.com/photos/imcomeimperia/'&gt;Marzacas&lt;/a&gt;)&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>IAD2011 follow up</title>
   <link href="/blog/2011/11/21/iad2011-follow-up"/>
   <updated>2011-11-21T18:06:27+01:00</updated>
   <id>http://carlopecchia.eu/blog/2011/11/21/iad2011-follow-up</id>
   <content type="html">&lt;p&gt;As stated before this year edition of &lt;strong&gt;Italian Agile Day&lt;/strong&gt; was dense of interesting talks. For detailed comments for every talk - and links to slide - see &lt;a href='http://joind.in/event/view/767'&gt;here&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Italian Agile Day 2011</title>
   <link href="/blog/2011/11/11/iad-2011"/>
   <updated>2011-11-11T11:59:32+01:00</updated>
   <id>http://carlopecchia.eu/blog/2011/11/11/iad-2011</id>
   <content type="html">&lt;a href='http://www.agileday.it/front/2011/italian-agile-day-2011/'&gt;
&lt;img src='/uploads/2011/11/IAD468.gif' alt='IAD' style='padding: 5px;' /&gt;
&lt;/a&gt;
&lt;p&gt;On 19.11.2011 there is the &lt;a href='http://www.agileday.it/front/2011/italian-agile-day-2011/'&gt;8th edition of the Italian Agile Day&lt;/a&gt;, an event rich of interesting talks (26) about Agile, XP, Scrum, UX.&lt;/p&gt;

&lt;p&gt;Participation fee? It&amp;#8217;s FREE!&lt;/p&gt;

&lt;p&gt;Target audience? Managers, Developers, Project leaders, Coaches&amp;#8230; everyone!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>SCM rules</title>
   <link href="/blog/2011/10/31/scm-rules"/>
   <updated>2011-10-31T12:37:26+01:00</updated>
   <id>http://carlopecchia.eu/blog/2011/10/31/scm-rules</id>
   <content type="html">&lt;p&gt;SCM (Software Configuration Management) tools are considered a cornerstone for every good software production environment today. Despite that a lot of problems can be &lt;em&gt;introduced&lt;/em&gt;: branches messing, lack of policies and purposes.&lt;/p&gt;

&lt;p&gt;In his &lt;a href='http://www.infoq.com/articles/agile-version-control'&gt;excellent paper&lt;/a&gt; Henrik Kniberg show us some simple rules in order to avoid main problems. Here I don&amp;#8217;t want to just repeat the rules, rather I&amp;#8217;d like to show how important, appropiate and useful are &lt;strong&gt;simple rules&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We have some goals: (1) we want to fail fast so code conflicts and integration problem pops up near the event that caused them; (2) there should be always something releasable (within a good definition of &amp;#8220;done&amp;#8221;); (3) rules and this &amp;#8220;mini process&amp;#8221; must be simple, so team(s) can&amp;#8217;t avoid them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Rule: each branch in SCM repository has an &lt;em&gt;owner&lt;/em&gt; and a &lt;em&gt;policy&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The owner unsures the policy is applied and the branch is coherent with its purpose. The policy describes what kind of code goes in the branch. That forces also to avoid braches proliferation without any meaning: need a branch? Ok, but what is the purpose, the policy, the owner?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Trunk is the &lt;em&gt;Done&lt;/em&gt; branch (can release at any time)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;Rule: whoever touch the Trunk is responbile that everything works well (previous functionalities included!)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;Development branch: code compiles without errors, all unit test passes, builds happean successfully&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This ensure in this branch only tested code is allowed: simple and clean. This forces also to synchronize often with the Trunk in order to lately discover that we have to recode something (interfaces change, new classes, &amp;#8230;).&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Learn by Doing</title>
   <link href="/blog/2011/10/31/learn-by-doing"/>
   <updated>2011-10-31T12:35:54+01:00</updated>
   <id>http://carlopecchia.eu/blog/2011/10/31/learn-by-doing</id>
   <content type="html">&lt;img class='align-left' src='/uploads/2011/10/mario_lego.jpg' alt='mario lego' style='padding: 5px;' /&gt;
&lt;p&gt;What about if you are an house builder and you buyer can&amp;#8217;t (I reply CAN&amp;#8217;T) tell you &lt;em&gt;exactly&lt;/em&gt; how she want the house to be made?&lt;/p&gt;

&lt;p&gt;Of course she has a simple sketch in her mind: house typology, the usage she will do (single vs family with children) how many floors and rooms&amp;#8230; but you can&amp;#8217;t have too much details in advance: the buyer simply don&amp;#8217;t yet know them.&lt;/p&gt;

&lt;p&gt;So, is &lt;em&gt;your&lt;/em&gt; interest to promote a &amp;#8220;conversation&amp;#8221; within both you and her, so you can learn as much as possible. In doing so you should also build &amp;#8220;something&amp;#8221; and - of course - you can&amp;#8217;t build a real house, but you can experiment with sketches, prototypes or you can take and propose ideas from other houses.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;you&lt;/strong&gt; have to learn as much as possible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is - in my opinion - a primary building block for every (software) project manager: &lt;strong&gt;learn as you go&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After all if you apply some iterative/incremental approach (Scrum) you do exactly that: you gain a little more knowledge of your evolving problem step-by-step.&lt;/p&gt;

&lt;p&gt;I found a related article (sorry, only in Italian) by Gabriele Lana &lt;a href='http://www.gabrielelana.it/archives/105'&gt;here&lt;/a&gt; about estimation in Agile environments. It&amp;#8217;s a really interesting elevator pitch where I can clearly see the concept of &amp;#8220;learn by doing&amp;#8221;.&lt;/p&gt;</content>
 </entry>
 
 
</feed>
