<?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>Wavyx &#187; Methodology</title>
	<atom:link href="http://www.wavyx.net/category/methodology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wavyx.net</link>
	<description>Wavyx blog - Eric Rodriguez website</description>
	<lastBuildDate>Sun, 07 Aug 2011 20:48:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Occam&#8217;s Razor Debugging</title>
		<link>http://www.wavyx.net/2007/10/05/occams-razor-debugging/</link>
		<comments>http://www.wavyx.net/2007/10/05/occams-razor-debugging/#comments</comments>
		<pubDate>Fri, 05 Oct 2007 21:54:53 +0000</pubDate>
		<dc:creator>Eric Rodriguez</dc:creator>
				<category><![CDATA[Methodology]]></category>

		<guid isPermaLink="false">http://www.wavyx.net/?p=66</guid>
		<description><![CDATA[I was reading an article about a right way to handle the &#8220;Debugging process&#8221; (as some project manager could call it) : Do It Yourselft!. And I must confess I quite agree with these ideas (quite is to make sure &#8230; <a href="http://www.wavyx.net/2007/10/05/occams-razor-debugging/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was reading an article about a right way to handle the &#8220;Debugging process&#8221; (as some project manager could call it) : <a href="http://sebastien-arbogast.com/do-it-yourself/" title="Do It Yourself!" target="_blank">Do It Yourselft!</a>. And I must confess I quite agree with these ideas (quite is to make sure I can switch my beliefs if it turns out google doesn&#8217;t help anymore in the process, or some other external factor). By the way, this article may really useful next time I get something asked which I don&#8217;t want to reply because it&#8217;s too simple, too long, too pathetic, too obvious, &#8230; or simply if I don&#8217;t know the answer and don&#8217;t want the guy to know. So I could seem really smart by pointing out an elegant and simple procedure to follow. (Of course I would never do that, or well maybe&#8230; just try me!)</p>
<p>Anyway, I would like to add my 2 cents: the solution of a debugging process (or simpler a bug fix) should be ASAP, which here means As SIMPLE As Possible.<span id="more-66"></span></p>
<p>Why simple ? Because every developer does know the world is flat! and so are the bugs.  Convinced? Not really huh, me neither ! So I will give you my 3 reasons to think bug fixing should end in a simple explanation:</p>
<ol>
<li>If you have a wealthy development environment, you should use some unit testing library. So when writing your test before the code, running them will lead you to discover bug. This <strong>early detection</strong> is a kind of warranty that bug fixing should be simple or easy, since you don&#8217;t have already a bunch of thousand code lines with multiple FIX ME later todo&#8217;s. This early detection phase is even better if you apply a Stop The Line principle (cfr <a href="http://community.ative.dk/blogs/ative/archive/2007/01/08/Lean-Software-Development.aspx" title="Lean Software Development" target="_blank">Lean Software Development</a>, <a href="http://community.ative.dk/blogs/ative/archive/2007/01/29/The-Waste-of-Defects-_2D00_-Bugs-are-Stop_2D00_the_2D00_Line-Issues.aspx" title="Bugs are Stop-the-Line Issues" target="_blank">Bugs are Stop-the-Line Issues</a> and also this book <a href="http://http://www.amazon.com/Implementing-Lean-Software-Development-Addison-Wesley/dp/0321437381" title="Amazon" target="_blank">ref1</a>-<a href="http://www.poppendieck.com/ilsd.htm" title="Poppendieck" target="_blank">ref2</a>). This means: fix the bug(s) before coding more. This way you keep your project clean instead of using couple of bug fixing weeks at the project&#8217;s end.</li>
<li>This point is more or less related to the &#8220;<strong>Fix First then Code</strong>&#8220;. You probably know how bug fixing can be cumbersome when you have multiple causes. Indeed, when you try to identify the problem and discover that there are a lot of function points causing the disease, you will probably do some cumulative messy patch to achieve the correct behaviour. But the real problem is that you some way let this mess happen. So again, keeping a clean code should avoid fix of cumulative defaults and provide rather quick and direct solution to appearing bugs.</li>
<li>When reading the article from Sébastien, it remind me the episode 103 of House MD &#8211; Occam&#8217;s Razor (<a href="http://www.tv.com/house/occams-razor/episode/349017/summary.html" title="TV.com" target="_blank">tv.com</a>, <a href="http://en.wikipedia.org/wiki/Occam%27s_Razor_%28House_episode%29" title="Wikipedia - Occam's House" target="_blank">wikpedia</a>, <a href="http://www.housemd-guide.com/season1/103occams.php" title="HouseMD" target="_blank">housemd</a>). Why House MD? Because, as a physician, he extensively uses what&#8217;s these docs call <a href="http://en.wikipedia.org/wiki/Differential_diagnosis" title="Wikipedia - Differential Diagnosis" target="_blank">Differential Diagnosis</a> (or DD) . And the procedure proposed by Sébastien is well a DDD, <strong>Differential Diagnosis for Debug</strong>. Use symptoms to try to list the possible causes and proceed by elimination until you get the right one. The 3 same steps !<br />
By the way, I also get the notion of Occam&#8217;s razor in some Computer Science course. Just as a quick reminder, the <a href="http://en.wikipedia.org/wiki/Occam's_Razor" title="Wikipedia - Occam's Razor" target="_blank">idea </a>is very appealing: the simplest solution tends to be the right one. IMHO, I think this DDD is the right approach but I would enphase the idea that the causes and effects inherent to the bug, should be solved by the<strong> simplest correction possible</strong>.</li>
<li>Oups&#8230; here is the 4th hidden extra reason! If a debug is tricky this may due to poor design, bad coding habits, wrong specifications, no documentation or tests, &#8230;  So let&#8217;s stick to the <a href="http://en.wikipedia.org/wiki/KISS_principle" title="KISS Principle" target="_blank">KISS principle</a> (<strong>Keep It Simple, Stupid</strong>). In definitive, the debug phase should be simple because you should never have some obscure, monolithic, incomprehensible specified, undocumented, untested, 10000+ lines of code to say &#8220;Hello World!&#8221;. Thus applying simple and well known principle, will probably help you to have easier debug processes.</li>
</ol>
<p>Last, I will never say you will have no bugs&#8230; well because it&#8217;s a lie. We are all simple error-prone humans. Nevertheless, following the procedure described in this <a href="http://sebastien-arbogast.com/do-it-yourself/" title="Do It Yourself!" target="_blank">article </a>and following some of my humble advices here, should help you to acquire good developer&#8217;s reflexes.<br />
I should also admit that sometimes there is no simple explanation or solution. Yeah, sometimes you have to work it out for hours to finally get your piece of code working. But that&#8217;s life too!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wavyx.net/2007/10/05/occams-razor-debugging/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Responsibility in work</title>
		<link>http://www.wavyx.net/2007/09/18/responsibility-in-work/</link>
		<comments>http://www.wavyx.net/2007/09/18/responsibility-in-work/#comments</comments>
		<pubDate>Tue, 18 Sep 2007 18:02:10 +0000</pubDate>
		<dc:creator>Eric Rodriguez</dc:creator>
				<category><![CDATA[Methodology]]></category>

		<guid isPermaLink="false">http://www.wavyx.net/?p=61</guid>
		<description><![CDATA[As some of you may have notice, I have some interest in the developers&#8217; world. I should definitely add some &#8220;About Me&#8221; page soon, to describe a little more who I am (and not). Anyway, this is my first post &#8230; <a href="http://www.wavyx.net/2007/09/18/responsibility-in-work/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As some of you may have notice, I have some interest in the developers&#8217; world. I should definitely add some &#8220;About Me&#8221; page soon, to describe a little more who I am (and not).</p>
<p>Anyway, this is my first post about methodology (and I hope not the last one). I will here consider the importance of responsibility among developers, and how they like to handle their work till its full completion. My idea could be summarized as: <strong>competent developers love to hold full responsibility for their work</strong> (until completion).<span id="more-61"></span></p>
<p>This idea was reinsured after a little chat with some dev geek I know. The key point for good developers is somewhat linked to the acknowledgement of their work. Indeed good developers are valuable, and it is worth saying out loud (I should probably go a little deeper in a next post). And one of the basic needs of such craftsmen relies on the acknowledgment of their work. But how could you feel happy to be consulted as some expert in a specific field if, over the end, the &#8220;evil&#8221; manager or CEO ruled you out.</p>
<p>This may sound caricatured but there are many ways, the good fellow would feel excluded from his expertise field: cost-related decision (money first), someone else put in charge instead of you, client&#8217;s inability to understand/capture the value of your advice, project manager convinced he knows it better, company policy about some imperative technical requirement/restriction, &#8230; and even sometimes your advice may simply be trashed away because of your youth and pretended inexperienced or simply forgotten under specification bible from some external self-proclaimed guru.</p>
<p>So what&#8217;s the real problem: this hurts the poor developer&#8217;s feelings ! Oh yeah I know he is no <a href="http://en.wikipedia.org/wiki/Cosette" title="Wikipedia - Cosette" target="_blank">Cosette</a>, moreover he is some interchangeable piece of low cost coder. Make no mistake, the guy is a robust geek so he is used to this behaviour. Anyway, I really believe that this will finally appears in bad moon resulting in less valuable experience, lower productivity, unworthy work, &#8230; and resignation. And you don&#8217;t want to loose your technical mindpower, would you?</p>
<p>So, let&#8217;s say you want to keep technical experts within the walls. How could this responsible way help? Because competent people <strong>love </strong>to take full responsibility. Why so ? Why competent people are not found of hiding behind some pyramidal bureaucracy delegation? Simply because they learned that by doing things you may exposed to problems or responsibilities, but it also worth it all. By taking responsibility of a task or project, there is also a very gratifying feeling along with the accomplishment. You sense your work is useful and appreciated.</p>
<p>Another key point is linked to the philosophical concept of <a href="http://en.wikipedia.org/wiki/Freewill" title="Free Will" target="_blank">Free Will</a> (libre arbitre). As human being, we mostly like to have control, or at least feel that way. Free will (versus determinism) gathers the idea, that someway we have some power/control on our own existence. I would advance that a developer&#8217;s expertise is an expression of its Free Will in the work environment.</p>
<p>The relation  between  Freedom and a developer&#8217;s advice may sound obscure. But think again: if your decisions about some piece of technology is the expression of your ideas (and thus yourself), people should really take attention to what you conscientiously  say before torning it apart by throwing your experience away.</p>
<p>Lastly, if you&#8217;re still unsure about full delegation of technical matter to technical people, you may be interested in <a href="http://en.wikipedia.org/wiki/Adhocracy" title="Wikipedia - Adhocracy" target="_blank">Adhocracy</a>, which in some sort extend this concept to company organization. In a few words: the one to do should be the one most capable of it. But you&#8217;re still in the need to define what you hide under &#8220;most capable&#8221;, and for now I will let this as it.</p>
<p>As a conclusion, I think that letting competent people doing what they are good at, will lead your company&#8217;s  projects to better highs and produce a wealthy work environment. A place where everyone implies him/her self so that the global effort lead to better results. The hard part may be to delegate your control area, or at least share it with the adhoc persons. This may sounds easy to write, but if you have been a Java Guru for 8 years, and you move to some management position, would you think it&#8217;s easy to let go and offer the decision part of a project to someone else? Maybe not, but as it&#8217;s sometimes harsh to endorse responsibilities, you&#8217;ll have your load too by restricting your area of expertise to your current role in order to let everyone handle its own parcel of freedom&#8230;</p>
<p>And after all, &#8220;<a href="http://en.wikiquote.org/wiki/Stan_Lee" title="WikiQuote" target="_blank">With great power, come great responsibilities</a>&#8220;.  So don&#8217;t make it wrong within your company <img src='http://www.wavyx.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.wavyx.net/2007/09/18/responsibility-in-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

