<?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; Agile in the Enterprise</title>
	<atom:link href="http://sadekdrobi.com/category/agile-in-the-enterprise/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>Yet another clueless manager</title>
		<link>http://sadekdrobi.com/2008/11/18/yet-another-clueless-manager/</link>
		<comments>http://sadekdrobi.com/2008/11/18/yet-another-clueless-manager/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 04:23:45 +0000</pubDate>
		<dc:creator>Sadache</dc:creator>
				<category><![CDATA[Agile in the Enterprise]]></category>
		<category><![CDATA[InfoQ]]></category>

		<guid isPermaLink="false">http://sadekdrobi.com/2008/11/18/yet-another-clueless-manager/</guid>
		<description><![CDATA[Yet another clueless manager
Nov 17, 2008 9:33 AM by Ilya Sterin
First, methodologies are only as good as the people that apply them. I hate the thought of process over people. Intelligent people will find a way to produce good software, agile or not. Morons will fail even with the process. Software development is more art [...]]]></description>
			<content:encoded><![CDATA[<blockquote><h6><a href="http://www.infoq.com/#view_35237" name="35237">Yet another clueless manager</a></h6>
<p>Nov 17, 2008 9:33 AM by <strong>Ilya Sterin</strong>
<p>First, methodologies are only as good as the people that apply them. I hate the thought of process over people. Intelligent people will find a way to produce good software, agile or not. Morons will fail even with the process. Software development is more art than it is science, though I wish the people that never made it as software developers would stop trying to pile process on top of process and think that engineers are code monkeys that can develop good software by following some process. Process is good, but smart people are better.<br />Also, it&#8217;s not that agile is failing, software projects are failing and have been failing before agile and will be failing after. Again, this is art and creativity is required not process.</p>
</blockquote>
<p>Thanks Ilya for the comment!</p>
]]></content:encoded>
			<wfw:commentRss>http://sadekdrobi.com/2008/11/18/yet-another-clueless-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RefX:: ORMs, Relational Data, Mismatch, LinQ and DSLs</title>
		<link>http://sadekdrobi.com/2008/11/10/refx-orms-relational-data-mismatch-linq-and-dsls/</link>
		<comments>http://sadekdrobi.com/2008/11/10/refx-orms-relational-data-mismatch-linq-and-dsls/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 02:42:22 +0000</pubDate>
		<dc:creator>Sadache</dc:creator>
				<category><![CDATA[Agile in the Enterprise]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[D90]]></category>
		<category><![CDATA[DOTNET]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[Domain Driven Design]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[LinQ]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[Model Mismatch]]></category>
		<category><![CDATA[Multi-Paradigm Design]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[Polyglot Programming]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://sadekdrobi.com/2008/11/10/refx-orms-relational-data-mismatch-linq-and-dsls/</guid>
		<description><![CDATA[   
Having worked with several Object-Relational mapping frameworks in the last few years, I got to a point where I couldn&#8217;t justify their complexity in my project. We often talk about the mismatch between the database and the object worlds, and that is where ORMs are often stated and referenced for &#8220;bridging the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sadekdrobi.com/wp-content/uploads/2008/11/raw000781.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="361" alt="Raw00078" src="http://sadekdrobi.com/wp-content/uploads/2008/11/raw00078-thumb1.jpg" width="534" border="0"></a> <a href="http://sadekdrobi.com/wp-content/uploads/2008/11/raw001701.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="379" alt="Raw00170" src="http://sadekdrobi.com/wp-content/uploads/2008/11/raw00170-thumb1.jpg" width="258" border="0"></a> <a href="http://sadekdrobi.com/wp-content/uploads/2008/11/dsc-01911.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="378" alt="DSC_0191" src="http://sadekdrobi.com/wp-content/uploads/2008/11/dsc-0191-thumb1.jpg" width="257" border="0"></a> </p>
<p>Having worked with several Object-Relational mapping frameworks in the last few years, I got to a point where I couldn&#8217;t justify their complexity in my project. We often talk about the mismatch between the database and the object worlds, and that is where ORMs are often stated and referenced for &#8220;bridging the gap&#8221;!</p>
<p>Well I prefer to call it lifting the gap, or highering the gap, to have it now between DAOs and the rest of the code than having it between database and code.But I wouldn&#8217;t call this in any way reducing the gap.</p>
<p><span id="more-538"></span></p>
<p>First thing to mention here, is that data structures are not evil. We often deal with XML data structure but we absolutely refuse to deal with relational data structures. The problem might be related to time, XML came with a whole arsenal of managed APIs that represent its model in a way that makes it more comfortable for you to manipulate these documents. All together with transformation APIs that made it a lot easier to fill your object model out of an XML. Relational data structure on the other hand did not have the luxury of standard APIs and representation models in mainstream languages, and that made dealing with a database request result so arbitrary (Datasets existed in .Net but they have been cursed heavily and has been forced out of the cool toolbox, do not know yet why!) .&nbsp; </p>
<p>In some way, I guess that the &#8220;mismatch&#8221; between Relational data structures and objects exists much similarly between XML and objects, however we didn&#8217;t think for so long of a doing a mapping between XML and object OXM? (no we are starting to do so, writing some XML to map XML to objects!).</p>
<p>With the experience I had with mapping technologies, I can say that they do not solve the problem for me. They merely add yet another useless level of abstraction where your domain types look nothing like relational data structures, but yet nothing like your target domain model! They have gone a half way, and now its your turn to poison your application with a lot of absurd ORM code trying to stretch this bridge to reduce the gap&#8230; </p>
<p>Geeks love talking about intrusivty of an ORMs and compare level of intrusivty in different terms. Intrusivty is much more than the lack of an interface or methods to implement in your domain objects. I guess I am ok to deal with that kind of intrusivity. However all ORMs I tried do not give me the opportunity to express my domain model in the way I would like to. I have to deal with notions of Lazy Loading, Attached/Detached entities, Entity sets, ids, back fields and a lot of other things that I don&#8217;t want to appear in my model and that make the resulting code so ugly and complex that I don&#8217;t wish to visit soon.</p>
<p>As Bob Martin said before, we are missing the opportunity to do oop, I would enforce and say we are missing the opportunity to model at all. And I guess we have gone too far with ORMs and it is time to go back to the basics, in the same way we have done after the EJB great abstraction.</p>
<p>It is very contradictory, while we are so excited about DSLs and the goodness they can potentially bring to enterprise development that results in a declarative semanticful style of programming, we can&#8217;t help but to engage all of our means in trying to bury SQL (and effective, semanticful, declarative powerful domain specific language) behind a dumb API to &#8220;abstract database access&#8221;! I guess we got to chose one strategy, either we keep SQL and we&nbsp; keep marketing DSLs or we hope for a new advanced GPL compiler that will hide all of this in the same way modern languages did with garbage collection, concurrency and synchronization.</p>
<p>Since I am not yet a compiler writer, and I aint got around an effective way of integrating database in mainstream languages (there is actually a very productive in memory database on Haskell that worth trying), I decide to keep the DSL, and to work with them without the need to hide them, but rather to get a better tooling to help converting between difference data structures.</p>
<p>I guess you&#8217;ve guessed it by now. For me LinQ is the mid-term solution for the data structure mismatch. No not LinQ to sql, nor Ado.Net entities (they are helpful and we might use them but lets focus on the solution). LinQ is a very productive tool that halps effectively transform anything to anything in few lines of code. I mean that I can still use powerful SQL to get data effeciently and then convert them with one line of LinQ into the destination data structure. No abstraction leak, less complexity: Use the right tool where it applies. </p>
<p>So what I would actually do is to use a framework that will execute my SQL or SQL like query on the database and get me the records in much the same way they are in the database,Much in the same way Active Record gets you records as they are in the database. No useless efforts from the framework to bend the data to make it look untruthfully like the destination model.&nbsp; I guess I know better my domain model, and with this better tooling I can get it done with no problem.</p>
<p>&nbsp;</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f663d4e1-de43-4d9c-9f89-7b45ec5b5a86" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Mots clÃ©s Technorati : <a href="http://technorati.com/tags/mapping" rel="tag">mapping</a>,<a href="http://technorati.com/tags/orm" rel="tag">orm</a>,<a href="http://technorati.com/tags/linq" rel="tag">linq</a>,<a href="http://technorati.com/tags/mismatch" rel="tag">mismatch</a>,<a href="http://technorati.com/tags/relational.%20data%20structure" rel="tag">relational. data structure</a>,<a href="http://technorati.com/tags/abstraction" rel="tag">abstraction</a>,<a href="http://technorati.com/tags/domain%20model" rel="tag">domain model</a>,<a href="http://technorati.com/tags/deseign" rel="tag">deseign</a></div>
]]></content:encoded>
			<wfw:commentRss>http://sadekdrobi.com/2008/11/10/refx-orms-relational-data-mismatch-linq-and-dsls/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Coplien and Martin Debate TDD, CDD and Professionalism</title>
		<link>http://sadekdrobi.com/2008/02/18/coplien-and-martin-debate-tdd-cdd-and-professionalism/</link>
		<comments>http://sadekdrobi.com/2008/02/18/coplien-and-martin-debate-tdd-cdd-and-professionalism/#comments</comments>
		<pubDate>Mon, 18 Feb 2008 10:41:34 +0000</pubDate>
		<dc:creator>Sadache</dc:creator>
				<category><![CDATA[Agile Programming]]></category>
		<category><![CDATA[Agile in the Enterprise]]></category>
		<category><![CDATA[Delivering Value]]></category>
		<category><![CDATA[JAOO]]></category>
		<category><![CDATA[Useability]]></category>

		<guid isPermaLink="false">http://sadekdrobi.com/2008/02/18/coplien-and-martin-debate-tdd-cdd-and-professionalism/</guid>
		<description><![CDATA[On JAOO 2007 I could, with the help of Floyd, organize a debate between Bob Martin and James Coplien about TDD and DbC. This is the most interesting debate about the subject I&#8217;ve ever heard of. A lot of things I wanted to say have been said here. And I am proud to announce it [...]]]></description>
			<content:encoded><![CDATA[<p>On JAOO 2007 I could, with the help of Floyd, organize a debate between Bob Martin and James Coplien about TDD and DbC. This is the most interesting debate about the subject I&#8217;ve ever heard of. A lot of things I wanted to say have been said here. And I am proud to announce it :)</p>
<p><a title="http://www.infoq.com/interviews/coplien-martin-tdd" href="http://www.infoq.com/interviews/coplien-martin-tdd">http://www.infoq.com/interviews/coplien-martin-tdd</a></p>
<p>Thanks Cope, thanks Bob.</p>
<p><a title="http://www.infoq.com/interviews/coplien-martin-tdd" href="http://www.infoq.com/interviews/coplien-martin-tdd">&#160;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sadekdrobi.com/2008/02/18/coplien-and-martin-debate-tdd-cdd-and-professionalism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can architecture create gap between developers and software they build?</title>
		<link>http://sadekdrobi.com/2007/12/15/can-architecture-create-gap-between-developers-and-software-they-build/</link>
		<comments>http://sadekdrobi.com/2007/12/15/can-architecture-create-gap-between-developers-and-software-they-build/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 00:17:34 +0000</pubDate>
		<dc:creator>Sadache</dc:creator>
				<category><![CDATA[Agile in the Enterprise]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Delivering Value]]></category>
		<category><![CDATA[Useability]]></category>

		<guid isPermaLink="false">http://sadekdrobi.com/2007/12/15/can-architecture-create-gap-between-developers-and-software-they-build/</guid>
		<description><![CDATA[Today, many software project management and architecture approaches tend to parcel out&#160; work on a project creating hierarchical layers. This helps to simplify both developers work and management. However, the undelying information shielding among layers can&#160; potentially create a gap between developers and the software they are working on, if developers task are totally taken [...]]]></description>
			<content:encoded><![CDATA[<p>Today, many software project management and architecture approaches tend to parcel out&#160; work on a project creating hierarchical layers. This helps to simplify both developers work and management. However, the undelying information shielding among layers can&#160; potentially create a gap between developers and the software they are working on, if developers task are totally taken out of functional context. </p>
<p><span id="more-440"></span></p>
<p>Many efforts in today&#8217;s software community are targeted at bridging the gap between software professionals and business people. Several blogspace authors look at the issue from a slightly different perspective, highlighting the gap between developers and the software they are building. </p>
<p>According to Jeff Attwood, Amazon&#8217;s experience of regularly <a href="http://www.codinghorror.com/blog/archives/001013.html">involving its developers with costumer service</a> is a valuable means for improving quality and usability of software.&#160; He believes indeed that &#8220;all too often, software developers are merely tourists in their own codebase&#8221; because they lack a basic understanding of software users, their problems and concerns. This is what he has earlier referred to as&#160; &#8220;<a href="http://www.codinghorror.com/blog/archives/000206.html">ivory tower software development</a>&#8221;: </p>
<blockquote><p>In the absence of any other compelling evidence, developers assume everyone else is a developer. [...] The more isolated the developers, the worse the resulting end product. It doesn&#8217;t help that most teams have a layer of business analysts who feel it is their job it to shield developers from users [...] It&#8217;s dangerous to create an environment where developers have no idea who the users are. </p>
</blockquote>
<p>However, today&#8217;s industry is characterized, according to Abhijit Nadgouda, by <a href="http://ifacethoughts.net/2007/12/11/why-we-still-stink-at-software-development/">hierarchy, existence of multiple layers and information shielding among those layers</a>. He highlights that this simplifies management and makes business safer, but has rather negative implications on software quality: </p>
<blockquote><p>We create a hierarchy in our projects, and every level shields the lower levels from some information. How many members of the software development team know value of the software they are working on, or its importance to the client&#8217;s business? How many of them even know about pieces other the one they are working on? </p>
<p>[...] </p>
<p>There seems to be a disconnect between better business and better software development. Which is why, I believe, most of us are doing good business, but we as an industry still stink at software development. </p>
</blockquote>
<p>In his attempt to identify the reasons why &#8220;<a href="http://weblog.raganwald.com/2007/12/somethings-fishy.html">we still stink at software development</a>&#8221;, Reg Braithwaite also raises this issue arguing that it might be wrong to divide up work on a project in a way &#8220;that the people with the least experience are protected from damaging the code&#8221;. </p>
<p>Architecture based on such approach tends to simplify developers work through abstaction. If this is pushed to the extreme, developers tasks are taken out of functional context to become purely technical, which can potentially create a gap between developers and the software they are working on. </p>
<p>What is your opinion? Is such a protectionist architecture an impediment for software usability? Can architecture with developers ignorant of the full picture be effective? Does it deliver sofware and value?&#160; </p>
]]></content:encoded>
			<wfw:commentRss>http://sadekdrobi.com/2007/12/15/can-architecture-create-gap-between-developers-and-software-they-build/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Debate: Scaling teams up in productivity rather than in personnel</title>
		<link>http://sadekdrobi.com/2007/12/01/debate-scaling-teams-up-in-productivity-rather-than-in-personnel/</link>
		<comments>http://sadekdrobi.com/2007/12/01/debate-scaling-teams-up-in-productivity-rather-than-in-personnel/#comments</comments>
		<pubDate>Sat, 01 Dec 2007 15:59:36 +0000</pubDate>
		<dc:creator>Sadache</dc:creator>
				<category><![CDATA[Agile Programming]]></category>
		<category><![CDATA[Agile in the Enterprise]]></category>
		<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://sadekdrobi.com/2007/12/01/debate-scaling-teams-up-in-productivity-rather-than-in-personnel/</guid>
		<description><![CDATA[Larger team size prevents from adopting the whole range of language abstraction tools and puts constraints on productivity. Reg Braithwaite believes that tools should not be tuned to the size of the team. He advocates for building teams around the tools and keeping them small. It appears however that team growth is often inevitable. What [...]]]></description>
			<content:encoded><![CDATA[<p>Larger team size prevents from adopting the whole range of language abstraction tools and puts constraints on productivity. Reg Braithwaite believes that tools should not be tuned to the size of the team. He advocates for building teams around the tools and keeping them small. It appears however that team growth is often inevitable. What can be done then to maintain quality and productivity?</p>
<p>&#160;</p>
<p><span id="more-439"></span></p>
<p>An interesting debate has occurred in the blogspace around the issue of team sizes. It started with Reg Braithwaite&#8217;s post <a href="http://weblog.raganwald.com/2007/11/what-if-powerful-languages-and-idioms.html">questioning the relevance of powerful languages in a large team environment</a>:</p>
<blockquote><p>What if programming conventions and closures and meta-programming and expressive type systems and annotations and all of the other tools that give us the power to build powerful abstractions actually don&#8217;t scale to larger teams?</p>
</blockquote>
<p>Reg argues that &quot;productivity drops off a cliff as team size increases&quot; and this assertion is rather consensual. Bob Warfield stresses in his earlier post that &quot;<a href="http://smoothspan.wordpress.com/2007/10/17/to-build-better-software-you-need-fewer-people/">small talented teams crush big teams</a>&quot; not only with regard to productivity but also in quality terms. According to Guillaume who comments on Braithwaite&#8217;s post, this performance gap is due to the fact that with large teams there are only two choices: &quot;either you code for the lowest common denominator or you end up with a lot of programmers who don&#8217;t understand the code base.&quot; As a remedy, Reg Braithwaite advocates for scaling teams up in productivity rather than in personnel and investing &quot;in tools and processes that are specifically tuned to maximizing the productivity of small teams&quot;. This way, it would become possible to build teams around &quot;tools and processes proven to produce working software&quot; rather than &quot;dumbing the tools down to the level of whomever we hired last Tuesday&quot;. </p>
<p>Many bloggers argue however that even if very sophisticated software &#8211; such as Linux &#8211; can be developed by a small team, eventually team growth is inevitable. Chris Winters asserts, for instance, that there is &quot;<a href="http://www.cwinters.com/news/display/3606">a huge distinction between creating something and maintaining/improving it</a>&quot; especially since any successful software results in increasing number of costumers and requests coming from them. Nevertheless, according to Warfield, <a href="http://smoothspan.wordpress.com/2007/11/27/why-small-software-teams-grow-large-and-other-software-development-conundrums/">team growth trend is much more related to cultural reasons</a>. Many decision makers are not familiar with the specificity of IT projects and tend to believe that increasing personnel would result in better/faster outcomes. Moreover, career growth aspirations of team members result in hiring more junior stuff, thus contributing to team growth. </p>
<p>If larger teams are inevitable, how can quality and productivity level be maintained? Oftentimes, the solution consists in multiplying the layers of review, which many consider as waste. Commenting on Braithwaite&#8217;s post, Mike Kucera, who actually does not believe that &quot;having a large team automatically means that the software will be crappy and bloated&quot;, insists on the role of abstraction and code readability that help to &quot;figure out the code quickly and get productive maintaining it&quot;. Moreover, he highlights that having correct abstraction allows breaking the project down into distinct components that can be developed by several small teams:</p>
<blockquote><p>With the correct abstractions you can break software down into loosely coupled components, then have a small team focus on each component.</p>
</blockquote>
<p>Warfield argues that it is not always possible to break the project into separate components. Hence he suggests cutting the scope of the project because he believes that much of it can &quot;be done away with&quot; without significant impact on costumer satisfaction. This is what according to Warfield accounts for the &quot;art of great software&quot; and allows &quot;a small team [keeping] a product fresh and current for years&quot;</p>
]]></content:encoded>
			<wfw:commentRss>http://sadekdrobi.com/2007/12/01/debate-scaling-teams-up-in-productivity-rather-than-in-personnel/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>

