<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://devlicio.us/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ViNull, Off the Record : agile, orm</title><link>http://devlicio.us/blogs/vinull/archive/tags/agile/orm/default.aspx</link><description>Tags: agile, orm</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Being a Duct Tape Programmer</title><link>http://devlicio.us/blogs/vinull/archive/2009/09/24/being-a-duct-tape-programmer.aspx</link><pubDate>Thu, 24 Sep 2009 13:40:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:51684</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>26</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/vinull/rsscomments.aspx?PostID=51684</wfw:commentRss><comments>http://devlicio.us/blogs/vinull/archive/2009/09/24/being-a-duct-tape-programmer.aspx#comments</comments><description>&lt;p&gt;&lt;a title="20071216 - Beavis - 144-4470-diptych-144-4473 - looking through the hole by Rev. Xanatos Satanicos Bombasticos (ClintJCL)" href="http://www.flickr.com/photos/clintjcl/2664775774/in/photostream/"&gt;&lt;img style="border-right-width:0px;margin:0px 10px 10px 0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/image_5F00_56AC0CB0.png" align="left" border="0" width="223" height="244" /&gt;&lt;/a&gt;Things I&amp;rsquo;ve said in a session before:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Friends don&amp;rsquo;t let friends ORM&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;ORM is a pattern, not a framework&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;I like typed datasets, and I cannot lie&amp;rdquo;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s not that I&amp;rsquo;m anti-ORM, or believe popular ones like NHibernate, Linq2Sql, and EF are useless (okay, maybe EF is).&amp;nbsp; It&amp;rsquo;s the mindset that you need an ORM Framework bloating your app from the start.&amp;nbsp; It&amp;rsquo;s the common:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Hey, new project!&amp;rdquo; &amp;ldquo;Awesome, which ORM should we use!&amp;rdquo; &amp;ndash; WTF!?!&lt;/p&gt;
&lt;p&gt;While I&amp;rsquo;m busy loosing friends and respect, I&amp;rsquo;ll state this is an &amp;ldquo;anti-agile pattern&amp;rdquo; &amp;ndash; if you were truly agile and doing iterative development, there isn&amp;rsquo;t a whole bunch of plumbing to write at once.&amp;nbsp; SQL isn&amp;rsquo;t hard, and is too important to performance to let a tool codegen it for you.&amp;nbsp; ORM frameworks encourage data-driven design, leading to a database friendly UX. &lt;/p&gt;
&lt;p&gt;Last night I read &lt;a href="http://www.joelonsoftware.com/items/2009/09/23.html"&gt;The Duct Tape Programmer by Joel Spolsky&lt;/a&gt; and added &lt;a href="http://www.amazon.com/gp/product/1430219483?ie=UTF8&amp;amp;tag=joelonsoftware&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1430219483"&gt;Coders at Work&lt;/a&gt; to my Amazon queue (no Kindle edition, so they missed an impulse sale).&amp;nbsp; I love this post and the description of a Duct Tape Programmer.&amp;nbsp; I hate the term pragmatic &amp;ndash; the word itself sounds academic, and I don&amp;rsquo;t think a pragmatist (another suspicious term) came up with it.&amp;nbsp; I think the academics made up the word cause saying short sighted made them look bad.&amp;nbsp; That&amp;rsquo;s really what many mean when they say &amp;ldquo;pragmatic&amp;rdquo; &amp;ndash; &lt;i&gt;Oh sure, he got the app out, but his code is awful, and he has tons of technical debt, and it will all have to be rewritten, and how far do you think an app like that can scale without an Enterprise Service Bus?, and I bet there isn&amp;rsquo;t even an Inversion of Control framework, and I know he doesn&amp;rsquo;t have good test coverage and any tests he does have are only integration tests, and...&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;The Duct Tape Programmer is driven by a different force than the Academic.&amp;nbsp; The Duct Tape Programmer is looking at the release date, and only values stuff that gets the app working on that date.&amp;nbsp; She would rather have 10 meetings with users than one meeting with a Systems Architect.&amp;nbsp; She would tell you KISS when you asked if you should extract an interface for a single widget.&amp;nbsp; She lives Agile and Lean on a subconscious level, because to her it&amp;rsquo;s just common sense.&lt;/p&gt;
&lt;p&gt;Joel ended his post saying you can&amp;rsquo;t just be a Duct Tape Programmer.&amp;nbsp; I&amp;rsquo;ll add to this - you can become one.&amp;nbsp; Move your focus off the code to the app, and more importantly, the user.&amp;nbsp; Expand your knowledge base horizontally &amp;ndash; learn multiple languages, frameworks, systems.&amp;nbsp; Do some raw socket programming, and write a graphics shader.&amp;nbsp; Install Linux on a Sparc 10.&amp;nbsp; Make an app for your mobile phone.&amp;nbsp; Question the accepted wisdom, and be an old school hacker.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m off now to convince Cicelie (&lt;a href="http://DragonTee.com"&gt;DragonTee.com&lt;/a&gt;) to design a &amp;ldquo;Duct Tape Programmer&amp;rdquo; t-shirt, in the meantime you can tell me why I&amp;rsquo;m wrong below.&amp;nbsp; Don&amp;rsquo;t be shy, I&amp;rsquo;m used to it!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=51684" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/vinull/archive/tags/opinion/default.aspx">opinion</category><category domain="http://devlicio.us/blogs/vinull/archive/tags/orm/default.aspx">orm</category><category domain="http://devlicio.us/blogs/vinull/archive/tags/agile/default.aspx">agile</category></item></channel></rss>