[prev in list] [next in list] [prev in thread] [next in thread] 

List:       extremeprogramming
Subject:    Re: [XP] Re: XP is a philosophy not a religion
From:       Steven Gordon <sgordonphd () gmail ! com>
Date:       2009-10-31 15:49:38
Message-ID: 709b71310910310849m72ca3bc3l5b858e3d7d8af110 () mail ! gmail ! com
[Download RAW message or body]

On Sat, Oct 31, 2009 at 2:13 AM, zdnfa <zdnfa@yahoo.com> wrote:
> 

> 
> You are right, But as you just said, we need a self-documenting code in order to \
> comprehend what has been done. This is exactly an explicit knowledge. The question \
> is: is that enough? can code reveal all what we need to know? We all know that a \
> picture is worth 1000 words, don't you think that a reverse engineered code (one \
> that has passed acceptance test) to a class diagram, use case, or swim lane diagram \
> is easier to understand than reading a 1000 lines of code.

Of course!  Automated reverse engineering of the code can be done
whenever anybody needs that particular view of the software.  It does
not need to be saved as a permanent document, nor does the process
have to prescribe always producing it or using it.  Under XP, we trust
the developers to be responsible enough to use the tools appropriate
to what they are working on.  Sometimes reverse-engineered UML would
be appropriate, sometimes it would be a total waste of time. If we
have to prescribe this, we have 'programmers' not developers.

> 
> Moreover, if we rely only on tacit knowledge, what happens if the expert \
> programmer- the one who left his knowledge in term of code only- just leaves the \
> organization?

I have been in this position many times.  I have found that the design
documentation left behind a project is never more than 80% accurate,
usually much less.  Filtering truth from fiction is so much wasted
work compared to proceeding with readable, well-organized code and
working, readable automated tests.  Automated reverse-engineered UML
diagram are very useful if the programming language supports it.

I have found user documentation much more helpful than design
documentation, because generally it accurately reflects what the
system actually does (more than requirements documentation do).

> 
> What you are saying right now is code and only code, what i'm saying is code is the \
> most important artifact but models are laso helpful.

Code and automated unit tests are the minimum.  Often they are
sufficient.  It is up to the team to decide what additional artefacts
are worthwhile for what they are doing at each specific point in time
in their specific context.

> 
> regards
> 


[Attachment #3 (text/html)]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" \
"http://www.w3.org/TR/html4/strict.dtd"> <html>
<head>
</head>





<body style="background-color: #ffffff;">
<span style="display:none">&nbsp;</span>
<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="width:655px; position:relative;">
<div id="ygrp-msg" style="width: 470px; margin:0; padding:0 25px 0 0; float:left; \
z-index:1;"> <!--~-|**|PrettyHtmlEndT|**|-~-->
    <div id="ygrp-text" >
                  <p>On Sat, Oct 31, 2009 at 2:13 AM, zdnfa &lt;<a \
href="mailto:zdnfa%40yahoo.com">zdnfa@yahoo.<wbr>com</a>&gt; wrote:<br> &gt;<br>
<br>
&gt;<br>
&gt; You are right, But as you just said, we need a self-documenting code in order to \
comprehend what has been done. This is exactly an explicit knowledge.<br> &gt; The \
question is: is that enough? can code reveal all what we need to know? We all know \
that a picture is worth 1000 words, don't you think that a reverse<br> &gt; \
engineered code (one that has passed acceptance test) to a class diagram, use case, \
or swim lane diagram is easier to understand than reading a 1000<br> &gt; lines of \
code.<br> <br>
Of course!  Automated reverse engineering of the code can be done<br>
whenever anybody needs that particular view of the software.  It does<br>
not need to be saved as a permanent document, nor does the process<br>
have to prescribe always producing it or using it.  Under XP, we trust<br>
the developers to be responsible enough to use the tools appropriate<br>
to what they are working on.  Sometimes reverse-engineered UML would<br>
be appropriate, sometimes it would be a total waste of time. If we<br>
have to prescribe this, we have 'programmers' not developers.<br>
<br>
&gt;<br>
&gt; Moreover, if we rely only on tacit knowledge, what happens if the expert \
programmer- the one who left his knowledge in term of code only- just leaves the \
organization?<br> <br>
I have been in this position many times.  I have found that the design<br>
documentation left behind a project is never more than 80% accurate,<br>
usually much less.  Filtering truth from fiction is so much wasted<br>
work compared to proceeding with readable, well-organized code and<br>
working, readable automated tests.  Automated reverse-engineered UML<br>
diagram are very useful if the programming language supports it.<br>
<br>
I have found user documentation much more helpful than design<br>
documentation, because generally it accurately reflects what the<br>
system actually does (more than requirements documentation do).<br>
<br>
&gt;<br>
&gt; What you are saying right now is code and only code, what i'm saying is code is \
the most important artifact but models are laso helpful.<br> <br>
Code and automated unit tests are the minimum.  Often they are<br>
sufficient.  It is up to the team to decide what additional artefacts<br>
are worthwhile for what they are doing at each specific point in time<br>
in their specific context.<br>
<br>
&gt;<br>
&gt; regards<br>
&gt;<br>
</p>
 

    </div>  

    <!--~-|**|PrettyHtmlStart|**|-~-->
    <div width="1" style="color: white; clear: both;">__._,_.___</div>

           
  
    
    <!-- Start the section with Message In topic -->
    <div id="ygrp-actbar" style="clear: both; margini-bottom: 25px; \
white-space:nowrap; color: #666; text-align: right;">  <span class="left" \
style="float: left; white-space:nowrap;">  <a \
href="http://groups.yahoo.com/group/extremeprogramming/message/152165;_ylc=X3oDMTM4bmh \
nMm0xBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BG1zZ0lkAzE1MjIxNQRzZWMDZnRyBHNsawN2dHBjBHN0aW1lAzEyNTcwMDQyMDkEdHBjSWQDMTUyMTY1">
                
            Messages in this topic          </a> (<span class="bld" \
style="font-weight:bold;">22</span>)  </span>
        <a href="http://groups.yahoo.com/group/extremeprogramming/post;_ylc=X3oDMTJyNj \
drNWs4BF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BG1zZ0lkAzE1MjIxNQRzZWMDZnRyBHNsawNycGx5BHN0aW1lAzEyNTcwMDQyMDk-?act=reply&messageNum=152215">
  <span class="bld" style="font-weight:bold;">
            Reply          </span> (via web post)
        </a>  | 
        <a href="http://groups.yahoo.com/group/extremeprogramming/post;_ylc=X3oDMTJlZG \
9kZjN0BF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTI1NzAwNDIwOQ--" \
class="bld" style="font-weight:bold;">  Start a new topic        </a>
          </div> 
    <!-------     Start Nav Bar  ------>
    <!-- |**|begin egp html banner|**| -->
    <div id="ygrp-vitnav" style="padding-top: 10px; font-family: Verdana; font-size: \
77%; margin: 0;">  <a \
href="http://groups.yahoo.com/group/extremeprogramming/messages;_ylc=X3oDMTJlaXQ1YTZjB \
F9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA21zZ3MEc3RpbWUDMTI1NzAwNDIwOA--">Messages</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/files;_ylc=X3oDMTJmdT \
ZmZGN2BF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2ZpbGVzBHN0aW1lAzEyNTcwMDQyMDg-">Files</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/photos;_ylc=X3oDMTJlN \
GUwMDkxBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA3Bob3QEc3RpbWUDMTI1NzAwNDIwOA--">Photos</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/links;_ylc=X3oDMTJmMT \
BtMmt0BF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2xpbmtzBHN0aW1lAzEyNTcwMDQyMDg-">Links</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/database;_ylc=X3oDMTJ \
jajg0b2ljBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2RiBHN0aW1lAzEyNTcwMDQyMDg-">Database</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/polls;_ylc=X3oDMTJmcm \
9yNDV2BF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA3BvbGxzBHN0aW1lAzEyNTcwMDQyMDg-">Polls</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/members;_ylc=X3oDMTJl \
YWF1bHF2BF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA21icnMEc3RpbWUDMTI1NzAwNDIwOA--">Members</a> \
  
    </div>  
    <!-- |**|end egp html banner|**| -->

                        <div id="ygrp-grft" style="font-family: Verdana; font-size: \
77%; padding: 15px 0;">  
<!-- |**|begin egp html banner|**| -->

          To Post a message, send it to:&nbsp;&nbsp; \
extremeprogramming@eGroups.com<BR> <BR>
To Unsubscribe, send a blank message to: \
extremeprogramming-unsubscribe@eGroups.com<BR> <BR>
ad-free courtesy of objectmentor.com          
<!-- |**|end egp html banner|**| -->

        </div>
      
                  <div id="ygrp-mkp">
      <div id="hd">MARKETPLACE</div>
      <div id="ads">
                  <div class="ad" style="color:#628C2A; font-family:Arial; \
font-weight:bold;">  <a \
href="http://us.ard.yahoo.com/SIG=14k7o5q4l/M=493064.12016295.13271503.10835568/D=grou \
ps/S=1707276718:MKP1/Y=YAHOO/EXP=1257011409/L=/B=L3CJEkSO5_M-/J=1257004209534957/K=1jw \
074_iwTDo51ZkXHHvfQ/A=5697381/R=0/SIG=11eaa5dke/*http://groups.yahoo.com/group/mompowergroup/">Mom \
Power: Discover the community of moms doing more for their families, for the world \
and for each other</a>          </div>  </div>
    </div>
      
    <!-- yahoo logo -->
    <!-- |**|begin egp html banner|**| -->
    <div id="ygrp-ft" style="font-family: verdana; font-size: 77%; border-top: 1px \
solid #666; padding: 5px 0;">  <a \
href="http://groups.yahoo.com/;_ylc=X3oDMTJkcnM4MDlwBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMjU3MDA0MjA5">
                
      <img src="http://us.i1.yimg.com/us.yimg.com/i/yg/img/logo/ma_grp_160.gif" \
height="15" width="106" border="0" alt="Yahoo! Groups"></a> <br>  <a \
href="http://groups.yahoo.com/group/extremeprogramming/join;_ylc=X3oDMTJmMzM0Y3BuBF9TA \
zk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA3N0bmdzBHN0aW1lAzEyNTcwMDQyMDk-">Change \
settings via the Web</a> (Yahoo! ID required) <br>  Change settings via email: <a \
href="mailto:extremeprogramming-digest@yahoogroups.com?subject=Email Delivery: \
Digest">Switch delivery to Daily Digest</a> | <a href = \
"mailto:extremeprogramming-traditional@yahoogroups.com?subject=Change Delivery \
Format: Traditional">Switch format to Traditional</a> <br>

      <a href="http://groups.yahoo.com/group/extremeprogramming;_ylc=X3oDMTJkcWVucGxiB \
F9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2hwZgRzdGltZQMxMjU3MDA0MjA5">
  Visit Your Group 
      </a> |
      <a href="http://docs.yahoo.com/info/terms/">
        Yahoo! Groups Terms of Use      </a> |
      <a href="mailto:extremeprogramming-unsubscribe@yahoogroups.com?subject=">
        Unsubscribe      </a> 
    </div>     <!-- |**|end egp html banner|**| -->
  </div> <!-- ygrp-msg -->

  
  <!-- Sponsor -->
  <!-- |**|begin egp html banner|**| -->
  <div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px \
0; background: white;">  <!-- Network content -->
    
<!-- Start Recommendations -->
<div id="ygrp-reco">
     </div>
<!-- End Recommendations -->

	    <!-- Start vitality -->
	    <div id="ygrp-vital" style="background-color: #e0ecee; margin-bottom: 20px; \
                padding: 2px 0 8px 8px;">
	      		<div id="vithd" style="font-size: 77%; font-family: Verdana; font-weight: \
bold; color: #333; text-transform: uppercase;">Recent Activity</div>  <ul \
                style="list-style-type:none; padding: 0; margin: 2px 0;">
		        <li style="clear: both; list-style-type: none; border: 1px solid #e0ecee;">
      <div class="ct" style="float: right; font-weight: bold; color: #ff7900; float: \
right; width: 2em; text-align:right; padding-right: .5em;"><span \
style="display:none">&nbsp;</span>7</div>  <div class="cat" style="font-weight: \
bold;"><a href="http://groups.yahoo.com/group/extremeprogramming/members;_ylc=X3oDMTJm \
ZGpzZ24xBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzEyNTcwMDQyMDg-">New \
Members</a></div>  </li>
  
		    
		    
		    
		    
		    
		</ul>
	      	      <a href="http://groups.yahoo.com/group/extremeprogramming;_ylc=X3oDMTJlY \
jJwb3FlBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTI1NzAwNDIwOA--">
  Visit Your Group	      </a>
	    </div> 
	    	    	      
	    <!-- Network content -->
	    	      <div style="background-color:#EEEEEE; margin-bottom:20px; padding:10px \
                8px;">    <div id="nc">
              <div class="ad" style="color:#628C2A; font-family:Arial; \
font-weight:bold;">  <div id="hd1">Yahoo! Finance</div> 
<p><a href="http://us.ard.yahoo.com/SIG=14hooq3g2/M=493064.12016257.12445664.8674578/D \
=groups/S=1707276718:NC/Y=YAHOO/EXP=1257011409/L=/B=MHCJEkSO5_M-/J=1257004209534957/K= \
1jw074_iwTDo51ZkXHHvfQ/A=4507179/R=0/SIG=12de4rskk/*http://us.rd.yahoo.com/evt=50284/*http://finance.yahoo.com/personal-finance">It's \
Now Personal</a></p>  <p>Guides, news,</p> 
<p>advice & more.</p>                   </div>
                    <div class="ad" style="color:#628C2A; font-family:Arial; \
font-weight:bold;">  <div id="hd1">New business?</div> 
<p><a href="http://us.ard.yahoo.com/SIG=14hss37m6/M=493064.12016308.12445700.8674578/D \
=groups/S=1707276718:NC/Y=YAHOO/EXP=1257011409/L=/B=MXCJEkSO5_M-/J=1257004209534957/K= \
1jw074_iwTDo51ZkXHHvfQ/A=3848640/R=0/SIG=131an6mds/*http://searchmarketing.yahoo.com/arp/srchv2.php?o=US2002&cmp=Yahoo&ctv=Groups1&s=Y&s2=&s3=&b=50">Get \
new customers.</a></p>  <p>List your web site</p> 
<p>in Yahoo! Search.</p>                  </div>
                    <div class="ad" style="color:#628C2A; font-family:Arial; \
font-weight:bold;">  <div id="hd1">Yahoo! Groups</div> 
<p><a href="http://us.ard.yahoo.com/SIG=14hkf2ij6/M=493064.12662709.13497510.8674578/D \
=groups/S=1707276718:NC/Y=YAHOO/EXP=1257011409/L=/B=MnCJEkSO5_M-/J=1257004209534957/K= \
1jw074_iwTDo51ZkXHHvfQ/A=5689702/R=0/SIG=11eaa5dke/*http://groups.yahoo.com/group/mompowergroup/">Mom \
Power</a></p>  <p>Community just for Moms</p> 
<p>Join the discussion</p>                  </div>
          </div>
</div>
	    
	  </div> 	  <!-- |**|end egp html banner|**| -->
	  <div style="clear:both; color: #FFF; font-size:1px;">.</div>
	</div> 		  <img src="http://geo.yahoo.com/serv?s=97359714/grpId=1505409/grpspId=1707276718/msgId=152215/stime=1257004209/nc1=4507179/nc2=3848640/nc3=5689702" \
width="1" height="1"> <br>  
	<div style="color: white; clear: both;">__,_._,___</div>
	<!--~-|**|PrettyHtmlEnd|**|-~-->
	</body>
	<!--~-|**|PrettyHtmlStart|**|-~-->
	<head>
<style type="text/css">
<!--
#ygrp-mkp{
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 14px 0px;
  padding: 0px 14px;
}
#ygrp-mkp hr{
  border: 1px solid #d8d8d8;
}
#ygrp-mkp #hd{
  color: #628c2a;
  font-size: 85%;
  font-weight: bold;
  line-height: 122%;
  margin: 10px 0px;
}
#ygrp-mkp #ads{
  margin-bottom: 10px;
}
#ygrp-mkp .ad{
  padding: 0 0;
}
#ygrp-mkp .ad a{
  color: #0000ff;
  text-decoration: none;
}
-->
</style>
</head>
	<head>
<style type="text/css">
<!--
#ygrp-sponsor #ygrp-lc{
  font-family: Arial;
}
#ygrp-sponsor #ygrp-lc #hd{
  margin: 10px 0px;
  font-weight: bold;
  font-size: 78%;
  line-height: 122%;
}
#ygrp-sponsor #ygrp-lc .ad{
  margin-bottom: 10px;
  padding: 0 0;
}
-->
</style>
</head>
	<head>
	<style type="text/css">
	<!--
	#ygrp-mlmsg {font-size:13px; font-family: \
arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}  #ygrp-mlmsg table \
{font-size:inherit;font:100%;}  #ygrp-mlmsg select, input, textarea {font:99% \
arial,helvetica,clean,sans-serif;}  #ygrp-mlmsg pre, code {font:115% \
monospace;*font-size:100%;}  #ygrp-mlmsg * {line-height:1.22em;}
	#ygrp-text{
	    font-family: Georgia;	
	}
	#ygrp-text p{
	    margin: 0 0 1em 0;
	}

	dd.last p a {
          font-family: Verdana;
          font-weight: bold;
	}

	#ygrp-vitnav{
		padding-top: 10px;
		font-family: Verdana;
		font-size: 77%;
		margin: 0;
	}
	#ygrp-vitnav a{
		padding: 0 1px;
	}
	#ygrp-mlmsg #logo{
	  padding-bottom: 10px;
	}

	#ygrp-reco {
	margin-bottom: 20px;
	padding: 0px;
	}
	#ygrp-reco #reco-head {
		font-weight: bold;
		color: #ff7900;
	}

	#reco-category{
        	font-size: 77%;
	}
	#reco-desc{
        	font-size: 77%;
	}

	#ygrp-vital a{
		text-decoration: none;
	}

	#ygrp-vital a:hover{
	  text-decoration: underline;
	}

	#ygrp-sponsor #ov ul{
		padding: 0 0 0 8px;
		margin: 0;
	}
	#ygrp-sponsor #ov li{
		list-style-type: square;
		padding: 6px 0;
		font-size: 77%;
	}
	#ygrp-sponsor #ov li a{
		text-decoration: none;
		font-size: 130%;
	}
	#ygrp-sponsor #nc{
	  background-color: #eee;
	  margin-bottom: 20px;
	  padding: 0 8px;
	}
	#ygrp-sponsor .ad{
		padding: 8px 0;
	}
	#ygrp-sponsor .ad #hd1{
		font-family: Arial;
		font-weight: bold;
		color: #628c2a;
		font-size: 100%;
		line-height: 122%;
	}
	#ygrp-sponsor .ad a{
		text-decoration: none;
	}
	#ygrp-sponsor .ad a:hover{
		text-decoration: underline;
	}
	#ygrp-sponsor .ad p{
		margin: 0;
		font-weight: normal;
		color: #000000;
	}
	o{font-size: 0; }
	.MsoNormal{
	   margin: 0 0 0 0;
	}
	#ygrp-text tt{
	  font-size: 120%;
	}
	blockquote{margin: 0 0 0 4px;}
	.replbq{margin:4}

dd.last p span {
  margin-right: 10px;
  font-family: Verdana;
  font-weight: bold;
}

dd.last p span.yshortcuts {
  margin-right: 0;
}

div.photo-title a,
div.photo-title a:active,
div.photo-title a:hover,
div.photo-title a:visited {
    text-decoration: none;
}

div.file-title a,
div.file-title a:active,
div.file-title a:hover,
div.file-title a:visited {
    text-decoration: none;
}

#ygrp-msg p#attach-count {
    clear: both;
    padding: 15px 0 3px 0;
    overflow: hidden;
}

#ygrp-msg p#attach-count span {
    color: #1E66AE;
    font-weight: bold;
}

div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
    font-family: Verdana;
    font-size: 10px;
    font-weight: normal;
}

#ygrp-msg p a {
    font-family: Verdana;
}

#ygrp-mlmsg a {
    color: #1E66AE;
}

div.attach-table div div a {
    text-decoration: none;
}

div.attach-table {
    width: 400px;
}

	-->
	</style>
	</head>
	<!--~-|**|PrettyHtmlEnd|**|-~-->
	</html><!--End group email -->



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic