<?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>Sadek Drobi's Blog &#187; Methodologies</title>
	<atom:link href="http://sadekdrobi.com/category/methodologies/feed/" rel="self" type="application/rss+xml" />
	<link>http://sadekdrobi.com</link>
	<description>Sadek Drobi</description>
	<lastBuildDate>Tue, 08 Mar 2011 22:56:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>You&#8217;ve got 100 pages to convince me of your shiny language!</title>
		<link>http://sadekdrobi.com/2009/01/05/youve-got-100-pages-to-convince-me-in-your-shiny-language/</link>
		<comments>http://sadekdrobi.com/2009/01/05/youve-got-100-pages-to-convince-me-in-your-shiny-language/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 20:42:37 +0000</pubDate>
		<dc:creator>Sadache</dc:creator>
				<category><![CDATA[Agile Programming]]></category>
		<category><![CDATA[Delivering Value]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Methodologies]]></category>
		<category><![CDATA[Multi-Paradigm Design]]></category>
		<category><![CDATA[Multi-languages projects]]></category>
		<category><![CDATA[Paradigm Oriented Programming Language]]></category>
		<category><![CDATA[Polyglot Programming]]></category>
		<category><![CDATA[Useability]]></category>

		<guid isPermaLink="false">http://sadekdrobi.com/2009/01/05/youve-got-100-pages-to-convince-me-in-your-shiny-language/</guid>
		<description><![CDATA[ In the rapidly spanning world of programming languages, I find myself buying and reading a lot of books about new and old programming languages. There are a few interesting concepts in each language, and if you think about employing more than one language in your projects then you better know about the existence of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sadekdrobi.com/wp-content/uploads/2009/01/dsc-01501.jpg"><img style="border-right: 0px; border-top: 0px; margin: 0px 10px 5px 0px; border-left: 0px; border-bottom: 0px" height="322" alt="DSC_0150-" src="http://sadekdrobi.com/wp-content/uploads/2009/01/dsc-0150-thumb1.jpg" width="470" align="left" border="0"></a> In the rapidly spanning world of programming languages, I find myself buying and reading a lot of books about new and old programming languages. There are a few interesting concepts in each language, and if you think about employing more than one language in your projects then you better know about the existence of these concepts (see <a href="http://www.infoq.com/articles/paradigm-based-polyglot-prog">Paradigm based Polyglot Programming</a>).
<p>One thing that annoys me though about most programming language books is how raw they often are.</p>
<p><span id="more-575"></span></p>
<p>&nbsp; Probably constrained by time, authors and book teams seem to invest less on editorial stuff and teaching methodology and more on explaining details of technical and behind the scenes stuff. This often results in more manual-like books where you have a great wealth of material that you are not able to exploit anyway because of, well, lack of time. I am not sure I can invest time in reading 500+ manual of a new, or at least non mainstream, language that I might decide not to use by the end.&nbsp;
<p>I am not saying here that technical and behind the scene stuff does not matter, quite the opposite. I just think that manual, important it is, should not be the introduction to the programming language. A rather 100 to 200 pages brief book that is carefully edited to introduce paradigm, concepts, and strengths of the programming language is a more attractive choice , accompanied with a wordy but well organized reference book with examples and more in-depth explanation of language features. I guess this is a more pragmatic approach to programming language learning in the presence of WWW and Google search.
<p>PS: I personally find <a href="http://www.amazon.com/Haskell-School-Expression-Functional-Programming/dp/0521644089/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1231187744&amp;sr=8-1">Paul Hudak&#8217;s Haskell book</a> a very good example of an enjoyable, brief, nicely and carefully edited programming language book. Also <a href="http://www.amazon.com/Programming-Lua-Second-Roberto-Ierusalimschy/dp/8590379825/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1231187997&amp;sr=1-1">LUA&#8217;s programming book</a> is nicely done.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadekdrobi.com/2009/01/05/youve-got-100-pages-to-convince-me-in-your-shiny-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Architecture Is Not Fragile Architecture</title>
		<link>http://sadekdrobi.com/2008/06/11/agile-architecture-is-not-fragile-architecture/</link>
		<comments>http://sadekdrobi.com/2008/06/11/agile-architecture-is-not-fragile-architecture/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 22:07:03 +0000</pubDate>
		<dc:creator>Sadache</dc:creator>
				<category><![CDATA[Agile Programming]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Methodologies]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sadekdrobi.com/2008/06/11/agile-architecture-is-not-fragile-architecture/</guid>
		<description><![CDATA[http://www.infoq.com/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney
Making the tough decisions early make the other decisions easier   To do agile you should be standing on a firm foundation    Stability != Static
YAGNI?&#160; not extremely!   Fainting Ignorance :Don&#8217;t Play dumb! If you know some stuff celebrate that you know it and put a peg in the ground. [...]]]></description>
			<content:encoded><![CDATA[<p><a title="http://www.infoq.com/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney" href="http://www.infoq.com/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney">http://www.infoq.com/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney</a></p>
<p>Making the tough decisions early make the other decisions easier   <br />To do agile you should be standing on a firm foundation    <br />Stability != Static</p>
<p>YAGNI?&#160; not extremely!   <br />Fainting Ignorance :Don&#8217;t Play dumb! If you know some stuff celebrate that you know it and put a peg in the ground.    <br />It is ok to know stuff, it is alright.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadekdrobi.com/2008/06/11/agile-architecture-is-not-fragile-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Religion driven industry: buzzwords and checklists vs. thinking and inspection</title>
		<link>http://sadekdrobi.com/2007/10/11/religion-driven-industry-buzzwords-and-checklists-vs-thinking-and-inspection/</link>
		<comments>http://sadekdrobi.com/2007/10/11/religion-driven-industry-buzzwords-and-checklists-vs-thinking-and-inspection/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 17:23:50 +0000</pubDate>
		<dc:creator>Sadache</dc:creator>
				<category><![CDATA[Agile Programming]]></category>
		<category><![CDATA[Agile in the Enterprise]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Delivering Value]]></category>
		<category><![CDATA[JAOO]]></category>
		<category><![CDATA[Methodologies]]></category>
		<category><![CDATA[Useability]]></category>

		<guid isPermaLink="false">http://sadekdrobi.com/2007/10/11/religion-driven-industry-buzzwords-and-checklists-vs-thinking-and-inspection/</guid>
		<description><![CDATA[This post has been originally posted on infoQ on Religion driven industry: buzzwords and checklists vs. thinking and inspection
James O. Coplien has recently argued that todayâ€™s industry is based on buzzwords and checklists. The use of some techniques and methodologies, TDD for instance, has become â€œa religious issueâ€. This prevents from inspecting possible tradeoffs and [...]]]></description>
			<content:encoded><![CDATA[<p>This post has been originally posted on infoQ on <a href="http://www.infoq.com/news/2007/10/religous-industry" title="Religous Industry">Religion driven industry: buzzwords and checklists vs. thinking and inspection</a></p>
<p>James O. Coplien has recently argued that todayâ€™s industry is based on buzzwords and checklists. The use of some techniques and methodologies, TDD for instance, has become â€œa religious issueâ€. This prevents from inspecting possible tradeoffs and focusing on finding solutions that would be the most appropriate and the most cost-effectiveÂ .<span id="more-434"></span></p>
<p>â€œFor some reason, we have invented and are following religions [â€¦].â€ This is how <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=216434">James O. Coplien describes todayâ€™s industry</a> which, he believes, is based on buzzwords and checklists rather than on thinking, inspection and efforts to find solutions that would be the most appropriate and the most cost-effective for a given project:</p>
<blockquote><p>How much thought did you put into the tradeoffs of the last technique you brought into your organization: Ajax, TDD, On-Site Customer, or other buzzwords? Did you research its track record? Or did you go to the buzzword yellow pages?</p></blockquote>
<p>James uses the example of the <a href="http://agiletesting.blogspot.com/2007/10/whats-more-important-tdd-or-acceptance.html">debate around TDD which has occurred in the blog space</a> in the wake of Jaoo 2007 conference. When the discussion focuses on what approach to testing is the best (i.e. TDD or acceptance testing), it essentially addresses the wrong question. It obfuscates the real objective which is â€œto deliver what the customer wanted while optimizing qualityâ€ and to create value for the client. Testing is what we have on todayâ€™s checklist for quality but it is far from covering all the issues that actually affect quality:</p>
<blockquote><p>Quality suffers if you misunderstand what the customer wanted, or if the code has internal interactions that are difficult to foresee, or if local code violates array boundaries or uses untethered pointers. It also suffers if the interface makes it possible for the user to commit errors, or if it takes too many keystrokes to enter a small amount of common information.</p></blockquote>
<p>Focusing on quality requires considering every weapon in the arsenal:</p>
<blockquote><p>That means using Use Cases (which are an Agile way of engaging customers [â€¦]) instead of XP-style user stories (so you understand feature interactions up-front), doing pair programming or desk-check code inspections, doing design by contract, driving the process with usability experts and doing good usability testing, and a host of other things.</p></blockquote>
<p>Coplien emphasizes that it is impossible to do everything and that it is â€œa matter of cost effectivenessâ€. But being focused on techniques and driven by buzzwords we get stuck in practices that might not be optimal. The use of some techniques and methodologies, e.g. TDD, has become â€œa religious issueâ€, according to James:</p>
<blockquote><p>We are told that you have to do TDD to be a professional [â€¦] and yet are given no reason to believe this, no substantiation, and no evidence. Just believe.</p></blockquote>
<p>Coplien argues, for instance, that â€œintegration and system testing have long been demonstrated to be the least efficient way of finding bugsâ€, that TDD â€œdeteriorates the architectureâ€, and that â€œacceptance testing is orders of magnitude less efficient than good old-fashioned code inspections, extremely expensive, and comes too late to keep the design clean.â€ But he stresses how difficult it is to engage a challenging discussion on such â€œreligiousâ€ topics because any criticism is met with a lot of emotion.</p>
<blockquote><p>People have tied their Agile success to their introduction of TDD practices into their work. It&#8217;s the one thing they can do as individuals rather than as an enterprise.</p></blockquote>
<p>Coplien advocates for focusing on quality rather than testing and, more generally speaking, on thinking rather than checklists. He highlights however that â€œsorting these things out requires a system viewâ€, which often times lacks in todayâ€™s industry. He believes that â€œNew Age Agile movements consistently move away fromâ€ systems engineering. According to Coplien, â€œone root of the problem lies in modern education, which has increased its focus on technique and reduced its focus on thinking.â€ Todayâ€™s students â€œfewer and fewer understand software historyâ€ and â€œhave stronger memories [â€¦]on exactly when to use <code>--v</code> and when to use <code>v--</code> than they recall anything about logical design.â€</p>
<p>Close links which exist between academia and industry are also a part of the problem. Universities tend to adapt curricula to industryâ€™s needs in order to facilitate studentsâ€™ placement. Hence, it becomes difficult for academics to challenge predominate views, probably â€œas difficult as it was for Newtonâ€ to prevail â€œwith new insights on the working of the universeâ€:</p>
<blockquote><p>In fighting the broad misunderstandings that industry has chosen to adopt from selected interpretations of Agile, SOA, and programming language buzzwords, we face no less a religion, and no less threat to our cozy industry-financed academic positions, than he did.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://sadekdrobi.com/2007/10/11/religion-driven-industry-buzzwords-and-checklists-vs-thinking-and-inspection/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

