<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://codebetter.com/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>Dave Laribee - All Comments</title><link>http://codebetter.com/blogs/david_laribee/default.aspx</link><description>&amp;quot;Whoso would be a man must be a nonconformist.&amp;quot;  - &lt;a title="Ralph Waldo Emerson" href="http://en.wikipedia.org/wiki/Ralph_Waldo_Emerson"&gt;Ralph Waldo Emerson&lt;/a&gt;
&amp;lt;script src=&amp;quot;http://feeds.feedburner.com/~s/thebeelog&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>A Response Concerning Semantics And Intention Revealing Code</title><link>http://codebetter.com/blogs/david_laribee/archive/2008/07/08/super-models-part-2-avoid-mutators.aspx#688524</link><pubDate>Fri, 19 Mar 2010 18:17:01 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:688524</guid><dc:creator>new ThoughtStream("Derick Bailey");</dc:creator><description>&lt;p&gt;My previous post talked about some code that was using a null value to cause certain behavior. The general&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=688524" width="1" height="1"&gt;</description></item><item><title>Field Vs. Property: Does It Really Matter?</title><link>http://codebetter.com/blogs/david_laribee/archive/2008/07/08/super-models-part-2-avoid-mutators.aspx#664027</link><pubDate>Thu, 04 Mar 2010 20:27:49 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:664027</guid><dc:creator>new ThoughtStream("Derick Bailey");</dc:creator><description>&lt;p&gt;Given my recent experiences with Ruby, my cursory knowledge of Java, and my past experience with past&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=664027" width="1" height="1"&gt;</description></item><item><title>re: The High Cost of Losing a Developer</title><link>http://codebetter.com/blogs/david_laribee/archive/2009/11/17/the-high-cost-of-losing-a-developer.aspx#663950</link><pubDate>Thu, 04 Mar 2010 10:03:25 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:663950</guid><dc:creator>Me, myself and I</dc:creator><description>&lt;p&gt;Replacing a programmer is, in terms of costs, a matter of how well you are prepared to do so. Most successful manufacturing companies have some spare parts and spare machinery on stock, in case something breaks. They also have a clear image of what part and what machine is deployed where, and what it does. They have no trouble reconfiguring the assembly lines for when production demands it. Unfortunately, most programming companies, even large ones, don&amp;#39;t ever make plans for loosing a programmer. Clearly the costs associated with this event are higher in such companies than in companies planning for this. And it is unreasonable to assume that just because you try to make your employees happy they won&amp;#39;t leave. What if one dies in a car crash, wins the lottery or marries and moves to another town?&lt;/p&gt;
&lt;p&gt;On the other hand, if you put no effort into keeping your programmers happy at all, it is likely you already only have crappy programmers. Replacing a crappy programmer with another crappy programmer won&amp;#39;t do that much harm. There&amp;#39;s an article about development seen as a big ball of mud here: &lt;a rel="nofollow" target="_new" href="http://www.laputan.org/mud/"&gt;http://www.laputan.org/mud/&lt;/a&gt;. I don&amp;#39;t think that in such a situation replacing a programmer is much of a problem - things already run so bad that it&amp;#39;s difficult to make them run worse.&lt;/p&gt;
&lt;p&gt;@Rubio: usually, when we hire somebody, we allocate two weeks for productivity zero, the rest up to one month for some introduction, the rest up to three months to getting him where he can do simple things on his own, and the rest up to one year before he can do things without supervision. Any other planning would mean higher costs. A new, inexperienced programmer delivering working code that isn&amp;#39;t up to quality standards causes work for another programmer, and adding up the costs it is cheaper to have the inexperienced programmer do simpler and less work than to have him swamp other programmers with work.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=663950" width="1" height="1"&gt;</description></item><item><title>Web Design West Palm Beach</title><link>http://codebetter.com/blogs/david_laribee/archive/2008/11/13/ayende-on-advanced-nhibernate.aspx#652545</link><pubDate>Thu, 25 Feb 2010 15:29:47 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:652545</guid><dc:creator>Web Design West Palm Beach</dc:creator><description>&lt;img src="http://codebetter.com/aggbug.aspx?PostID=652545" width="1" height="1"&gt;</description></item><item><title>re: Low-Technology</title><link>http://codebetter.com/blogs/david_laribee/archive/2009/10/29/low_2D00_technology.aspx#646693</link><pubDate>Tue, 23 Feb 2010 03:21:50 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:646693</guid><dc:creator>air jordan</dc:creator><description>&lt;p&gt;colin - excellent observations. i&amp;#39;ve been mulling some of the great comments here over and kind of centering on your analysis (though not so pithy and straight to the center!). so many times it&amp;#39;s just damned fundamentals and OO isn&amp;#39;t even the start. it&amp;#39;s coupling and cohesion which have been around since structured programming days and implicit even in cards (!).&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=646693" width="1" height="1"&gt;</description></item><item><title>re: Ayende on Advanced NHibernate</title><link>http://codebetter.com/blogs/david_laribee/archive/2008/11/13/ayende-on-advanced-nhibernate.aspx#646691</link><pubDate>Tue, 23 Feb 2010 03:10:18 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:646691</guid><dc:creator>air jordan</dc:creator><description>&lt;p&gt;25wtewet256263 3tw3562&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=646691" width="1" height="1"&gt;</description></item><item><title>re: The High Cost of Losing a Developer</title><link>http://codebetter.com/blogs/david_laribee/archive/2009/11/17/the-high-cost-of-losing-a-developer.aspx#646618</link><pubDate>Mon, 22 Feb 2010 08:34:33 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:646618</guid><dc:creator>Rubio</dc:creator><description>&lt;p&gt;Great article.&lt;/p&gt;
&lt;p&gt;Dave, care to blog about the time required to break in a new developer? I&amp;#39;m having, once again, trouble convincing management that it takes at least 2 months before a newly hired developer is productive.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=646618" width="1" height="1"&gt;</description></item><item><title>re: Folder != Namespace</title><link>http://codebetter.com/blogs/david_laribee/archive/2007/12/18/folder-namespace.aspx#624134</link><pubDate>Tue, 09 Feb 2010 16:23:59 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:624134</guid><dc:creator>Eric Duncan</dc:creator><description>&lt;p&gt;A different view...&lt;/p&gt;
&lt;p&gt;There are two approaches I take to namespace/folder arrangements for the projects I architect, and I apply DDD-logic to define them.&lt;/p&gt;
&lt;p&gt;* The first is discoverability (for new developers). &lt;/p&gt;
&lt;p&gt;* The second is Aggregate Root groupings.&lt;/p&gt;
&lt;p&gt;These two combine to give a really nice and neat namespace convention we are mostly now. &amp;nbsp;So, let&amp;#39;s look at an example, starting with DDD logic (define the ambiquious language first)...&lt;/p&gt;
&lt;p&gt;A current client has two different user types: Coaches and Athletes. &amp;nbsp;There are also regular users that can signup and comment. &amp;nbsp;Therefore, I really have almost 3 user types. &amp;nbsp;But since all user types can signup and comment, that means I have a common root element: User. &amp;nbsp;To define the additional suer types, we will inherit the common User root object into a CoachUser and Athleteuser object. &amp;nbsp;The reason being that the new user types will have additional repositories (tables) that will be persisted and massaged.&lt;/p&gt;
&lt;p&gt;Now that we have defined the common boundry &amp;#39;User&amp;#39;, I may create the following file and folder structure:&lt;/p&gt;
&lt;p&gt;/Users/&lt;/p&gt;
&lt;p&gt;/Users/AthleteUser.cs&lt;/p&gt;
&lt;p&gt;/Users/AthleteUserService.cs&lt;/p&gt;
&lt;p&gt;/Users/AthleteUserRepository.cs&lt;/p&gt;
&lt;p&gt;/Users/CoachUser.cs&lt;/p&gt;
&lt;p&gt;/Users/CoachUserService.cs&lt;/p&gt;
&lt;p&gt;/Users/CoachUserRepository.cs&lt;/p&gt;
&lt;p&gt;/Users/User.cs&lt;/p&gt;
&lt;p&gt;/Users/UserService.cs&lt;/p&gt;
&lt;p&gt;/Users/UserRepository.cs&lt;/p&gt;
&lt;p&gt;/Users/IAthleteUserService.cs&lt;/p&gt;
&lt;p&gt;/Users/IAthleteUserRepository.cs&lt;/p&gt;
&lt;p&gt;/Users/ICoachUser.cs&lt;/p&gt;
&lt;p&gt;/Users/ICoachUserRepository.cs&lt;/p&gt;
&lt;p&gt;/Users/IUserService.cs&lt;/p&gt;
&lt;p&gt;/Users/IUserRepository.cs&lt;/p&gt;
&lt;p&gt;Notice the namespace, /User/. &amp;nbsp;This means whenever you are dealing with any type of user interaction, you have a namespace of Project.Users. &amp;nbsp;Therefore, the discoverability for junior developers, and testers, is straightforward. &amp;nbsp;They can inspect the Project.Users.* namespace and know everything available.&lt;/p&gt;
&lt;p&gt;Also, not shown, but the AthleteUser, AthleteUserService, and AtheleteUserRepository would inherit User, UserService, and UserRepository respectfully - therefore giving you all of the underlying User properties and methods. &amp;nbsp;This is important; because, you do not want to have to call IUserService to save a user, and then call IAthleteUserService to save something specific to AthleteUser. &amp;nbsp;Instead, your UI would simply deal with IAthleteUserService for any features that are specific to Athletes (such as their sports profile). &amp;nbsp;Have the sistuation where you have an AthleteUser, but you are only dealing with basic User functions? &amp;nbsp;Simple, cast down to User for everything you are doing in the UI that is just &amp;quot;base user&amp;quot; specific. &amp;nbsp;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=624134" width="1" height="1"&gt;</description></item><item><title>re: The High Cost of Losing a Developer</title><link>http://codebetter.com/blogs/david_laribee/archive/2009/11/17/the-high-cost-of-losing-a-developer.aspx#579250</link><pubDate>Fri, 08 Jan 2010 06:12:36 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:579250</guid><dc:creator>Nike</dc:creator><description>&lt;p&gt;Nice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which we all need, thanks for all the enthusiasm two sacrifice such helpful information here&amp;lt;a href=&amp;quot;&lt;a rel="nofollow" target="_new" href="http://www.finalfootwear.com&amp;quot;&amp;gt;.&amp;lt;/a&amp;gt;"&gt;http://www.finalfootwear.com&amp;quot;&amp;gt;.&amp;lt;/a&amp;gt;&lt;/a&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=579250" width="1" height="1"&gt;</description></item><item><title>Social comments and analytics for this post</title><link>http://codebetter.com/blogs/david_laribee/archive/2008/07/08/super-models-part-2-avoid-mutators.aspx#537659</link><pubDate>Fri, 18 Dec 2009 20:50:03 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:537659</guid><dc:creator>uberVU - social comments</dc:creator><description>&lt;p&gt;This post was mentioned on Twitter by lazycoder: Why entities shouldn&amp;#39;t have setters. (by @laribee ) &lt;a rel="nofollow" target="_new" href="http://bit.ly/CGgSL"&gt;http://bit.ly/CGgSL&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=537659" width="1" height="1"&gt;</description></item><item><title>re: The High Cost of Losing a Developer</title><link>http://codebetter.com/blogs/david_laribee/archive/2009/11/17/the-high-cost-of-losing-a-developer.aspx#505156</link><pubDate>Thu, 10 Dec 2009 08:55:53 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:505156</guid><dc:creator>Kevin Rodrigues</dc:creator><description>&lt;p&gt;It is true that a good developer should be retained. The trouble arises when the retainment involved increase in the pay packages. The managemetn often does not see the value that a good developer can bring to the organization. And quite often settle for another developer at a relatively lower cost and lost of productivity (which according to them is not that difficult to obtain if knowledge sharing is possible).&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=505156" width="1" height="1"&gt;</description></item><item><title>re: Transitioning from NAnt to Rake</title><link>http://codebetter.com/blogs/david_laribee/archive/2008/10/17/transitioning-from-nant-to-rake.aspx#495871</link><pubDate>Tue, 08 Dec 2009 22:13:21 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:495871</guid><dc:creator>artiste peintre</dc:creator><description>&lt;p&gt;I am interested in the topics discussed but have been feeling a little intimidated by the thought of the work.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=495871" width="1" height="1"&gt;</description></item><item><title>re: Domain Model Overuse</title><link>http://codebetter.com/blogs/david_laribee/archive/2007/09/24/domain-model-overuse.aspx#469826</link><pubDate>Thu, 03 Dec 2009 08:21:05 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:469826</guid><dc:creator>Gabor de Mooij</dc:creator><description>&lt;p&gt;Sorry. I mean the anemic domain model is an anti-pattern, but only if you are trying to implement a domain model. You can work with plain value containers and transactional scripts, that is just fine. Domain Models can be quite handy if you need to manage complex systems. The alternative is soft-coding or scattered logic in many different controllers. I guess the value of having a DDD grows as your project gets bigger. &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=469826" width="1" height="1"&gt;</description></item><item><title>re: The High Cost of Losing a Developer</title><link>http://codebetter.com/blogs/david_laribee/archive/2009/11/17/the-high-cost-of-losing-a-developer.aspx#467346</link><pubDate>Wed, 02 Dec 2009 20:39:41 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:467346</guid><dc:creator>frustrated manager</dc:creator><description>&lt;p&gt;It depends on your company/domain you work in. &amp;nbsp;Most developers these days are incomponent at any price level other than peanut levels. &amp;nbsp;Most &amp;quot;legacy&amp;quot; systems these days were built by morons in the dot com era and the developer industry still hasn&amp;#39;t shed them yet. &amp;nbsp;The amount of technological debt that most companies retain probably outstrip cost of the all the middle eastern wars + the recession we entered.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=467346" width="1" height="1"&gt;</description></item><item><title>re: The High Cost of Losing a Developer</title><link>http://codebetter.com/blogs/david_laribee/archive/2009/11/17/the-high-cost-of-losing-a-developer.aspx#467226</link><pubDate>Wed, 02 Dec 2009 19:42:40 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:467226</guid><dc:creator>Marcel Popescu</dc:creator><description>&lt;p&gt;@scott: &amp;quot; The biggest investment, as you rightly state, is dedicated time.&amp;quot;&lt;/p&gt;
&lt;p&gt;Very much agreed. I&amp;#39;m from Eastern Europe, I invested at least 10 hours a day in programming since I was 12. (I am almost 40 now.) It is quite annoying for me to see that the &amp;quot;cheaper&amp;quot; programmer in your story earns a lot more than I do :)&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=467226" width="1" height="1"&gt;</description></item></channel></rss>