<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: The Diminishing Return on Code Uniformity</title>
	<atom:link href="http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/</link>
	<description>Ideas for building efficient developers and software</description>
	<lastBuildDate>Tue, 16 Mar 2010 08:56:32 +0000</lastBuildDate>
	
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<item>
		<title>By: Finds of the Week, March 9, 2008 &#187; Chinh Do</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1494</link>
		<dc:creator>Finds of the Week, March 9, 2008 &#187; Chinh Do</dc:creator>
		<pubDate>Tue, 11 Mar 2008 04:13:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1494</guid>
		<description>[...] The Diminishing Return on Code Uniformity. by Max Pool ({codesqueeze}). [...]</description>
		<content:encoded><![CDATA[<p>[...] The Diminishing Return on Code Uniformity. by Max Pool ({codesqueeze}). [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1280</link>
		<dc:creator>Eric</dc:creator>
		<pubDate>Fri, 29 Feb 2008 21:19:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1280</guid>
		<description>Max, that architect thing is funny. When I was out at MSFT last year we were told explicitly NOT to use this. at all. Apparently there was some big flame war about it and it was decided not to use it.</description>
		<content:encoded><![CDATA[<p>Max, that architect thing is funny. When I was out at MSFT last year we were told explicitly NOT to use this. at all. Apparently there was some big flame war about it and it was decided not to use it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rob</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1202</link>
		<dc:creator>Rob</dc:creator>
		<pubDate>Tue, 26 Feb 2008 07:21:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1202</guid>
		<description>Sorry, I don&#039;t see much difference (aside from semantics) between using &quot;this.&quot; or an underscore or m_ in reference to member variables.  

All three are designed to differentiate member variables from arguments, constants and properties.  Pick one and use it across your project.

I think people spend too much time worrying about formatting issues (say, in code reviews) instead of focusing on the fact the code is wrong/buggy.</description>
		<content:encoded><![CDATA[<p>Sorry, I don&#8217;t see much difference (aside from semantics) between using &#8220;this.&#8221; or an underscore or m_ in reference to member variables.  </p>
<p>All three are designed to differentiate member variables from arguments, constants and properties.  Pick one and use it across your project.</p>
<p>I think people spend too much time worrying about formatting issues (say, in code reviews) instead of focusing on the fact the code is wrong/buggy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Bellware</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1199</link>
		<dc:creator>Scott Bellware</dc:creator>
		<pubDate>Tue, 26 Feb 2008 05:20:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1199</guid>
		<description>I&#039;ll be banging my head against developer psychology for years over this issue, but there&#039;s a level of agility that can&#039;t be had without solubility, and when solubility is itself uniform in a codebase, it&#039;s emergent properties ratchet up productivity to yet another level beyond what I&#039;m seeing in preceding practice combinations.

Explaining TDD to a naysayer has always been like showing an atom to someone who has a scope that stops at the molecule.  Same for solubility, except now the audience is veteran TDD&#039;ers - and that&#039;s really frustrating as there&#039;s an inherent hypocrisy in asking folks to suspend conventional disbelief and just try something new while not continuing to do the same.

Everything new becomes old, and at some point, folks are just going to hold on to a given era and remain there.  This is presently the frustration I have with my circle of veteran agilists.  Some prop pilots will simply never want to fly a jet - especially if it means a significant investment in yet more learning and re-learning.

I stand by my position on code uniformity - when we&#039;re talking about solubility as a next step after TDD and when practiced in that context.</description>
		<content:encoded><![CDATA[<p>I&#8217;ll be banging my head against developer psychology for years over this issue, but there&#8217;s a level of agility that can&#8217;t be had without solubility, and when solubility is itself uniform in a codebase, it&#8217;s emergent properties ratchet up productivity to yet another level beyond what I&#8217;m seeing in preceding practice combinations.</p>
<p>Explaining TDD to a naysayer has always been like showing an atom to someone who has a scope that stops at the molecule.  Same for solubility, except now the audience is veteran TDD&#8217;ers &#8211; and that&#8217;s really frustrating as there&#8217;s an inherent hypocrisy in asking folks to suspend conventional disbelief and just try something new while not continuing to do the same.</p>
<p>Everything new becomes old, and at some point, folks are just going to hold on to a given era and remain there.  This is presently the frustration I have with my circle of veteran agilists.  Some prop pilots will simply never want to fly a jet &#8211; especially if it means a significant investment in yet more learning and re-learning.</p>
<p>I stand by my position on code uniformity &#8211; when we&#8217;re talking about solubility as a next step after TDD and when practiced in that context.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shawn Oster</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1197</link>
		<dc:creator>Shawn Oster</dc:creator>
		<pubDate>Tue, 26 Feb 2008 04:19:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1197</guid>
		<description>Funny how the most obvious lesson in life, all things in moderation, needs to be repeated to people over.. and over... and over again.  Problem is some people are freaks that have no sense of balance or moderation and they&#039;ll shank you in the bathroom if you dare dangle a curly brace in their face.

Code uniformity is about *respect* for your fellow developers, you want everyone to be able to use and maintain the code and you want that in return so everyone agrees on what is important and what&#039;s not.  Sure you may hate an indent of 4 but at least you got them to use spaces over tabs.  Uniformity to a certain level is *highly* important, you just have to figure out where that point of diminishing return is.

Now if you have that one crazy code-mumbling egotist coder then just smile and nod and forget to invite him to the next standup where you talk coding styles.  Sorry crazy guy, you&#039;ve got to give in to the good of the team, not your own ego, so just be happy with your stapler and be quite :)</description>
		<content:encoded><![CDATA[<p>Funny how the most obvious lesson in life, all things in moderation, needs to be repeated to people over.. and over&#8230; and over again.  Problem is some people are freaks that have no sense of balance or moderation and they&#8217;ll shank you in the bathroom if you dare dangle a curly brace in their face.</p>
<p>Code uniformity is about *respect* for your fellow developers, you want everyone to be able to use and maintain the code and you want that in return so everyone agrees on what is important and what&#8217;s not.  Sure you may hate an indent of 4 but at least you got them to use spaces over tabs.  Uniformity to a certain level is *highly* important, you just have to figure out where that point of diminishing return is.</p>
<p>Now if you have that one crazy code-mumbling egotist coder then just smile and nod and forget to invite him to the next standup where you talk coding styles.  Sorry crazy guy, you&#8217;ve got to give in to the good of the team, not your own ego, so just be happy with your stapler and be quite :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Max Pool</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1194</link>
		<dc:creator>Max Pool</dc:creator>
		<pubDate>Tue, 26 Feb 2008 03:45:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1194</guid>
		<description>@Steve

Pretty much.  One man&#039;s battle is another man&#039;s war.  ..

Once when I worked at MSFT, I had an architect slap my hand and overnight he refactored all my code to include this. on all variables.  

Guess that experience left me with suppressed memories and unconscious mental imprinting that it needs to be done.  Something I am picky about, but could easily be placed in the &quot;Don&#039;t care&quot; pile if I was to get over my own neurotic behaviors.</description>
		<content:encoded><![CDATA[<p>@Steve</p>
<p>Pretty much.  One man&#8217;s battle is another man&#8217;s war.  ..</p>
<p>Once when I worked at MSFT, I had an architect slap my hand and overnight he refactored all my code to include this. on all variables.  </p>
<p>Guess that experience left me with suppressed memories and unconscious mental imprinting that it needs to be done.  Something I am picky about, but could easily be placed in the &#8220;Don&#8217;t care&#8221; pile if I was to get over my own neurotic behaviors.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Rowe</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1193</link>
		<dc:creator>Steve Rowe</dc:creator>
		<pubDate>Tue, 26 Feb 2008 03:38:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1193</guid>
		<description>Thanks for the insight.  I&#039;m glad to see what you think should be in and out of coding standards.  They sound very reasonable.  My opinions align very well with yours on this issue.

One minor question, why do you say that this.variable should be in the standard but that we shouldn&#039;t argue about m_ or _.  Aren&#039;t those the same issue?  They are both trying to solve the same problem.</description>
		<content:encoded><![CDATA[<p>Thanks for the insight.  I&#8217;m glad to see what you think should be in and out of coding standards.  They sound very reasonable.  My opinions align very well with yours on this issue.</p>
<p>One minor question, why do you say that this.variable should be in the standard but that we shouldn&#8217;t argue about m_ or _.  Aren&#8217;t those the same issue?  They are both trying to solve the same problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Bellware</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1188</link>
		<dc:creator>Scott Bellware</dc:creator>
		<pubDate>Tue, 26 Feb 2008 01:16:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1188</guid>
		<description>Max,

&gt; who should give more, the creator or the
&gt; maintainer?

The maintainer.  Maintenance is 80% of software cost BY PHASED DEVELOPMENT.  If you have a maintenance phase, and based on common understanding of the distinct place in phased development lifecycle where transition to maintenance happens, the the 80% mark is true.

The reality is that the moment of software creation is so infinitesimally small that it&#039;s barely worth mentioning.

There are two phases of software development in contemporary processes:
1-) thinking about about you&#039;re about to do, and
2-) everything that comes after you&#039;ve thought about it and wrote it down in code.

Once any single byte of code exists, it&#039;s in maintenance - even if it was created only a minute in the past.  Software Creationalism says otherwise, and gives rise to the 80% number, but it&#039;s a software cosmology based in an software lifecycle ideology that has proven to be pretty seriously flawed.

&gt; so shouldn’t we allow developers to code
&gt; comfortably?

Absolutely, but that means that they should comfortably work within set constraints.  The kind of disciplined software production that leads to levels of agility that come after merely solving the software defect problem with unit testing and TDD depend on this extent of constraint and control - just as does the Toyota Production System that we all hold up as a paragon of agile virtue.

The software developer plays the role of both ideator and production worker.  He has to come to terms with the different constraints that apply to software ideation versus software production, and accept that production work isn&#039;t as willy-nilly as ideation tasks.

It&#039;s the attraction to the stream-of-consciousness  ideation that permits the entitlement to phased development.  It gives some folks on the team the license to do all their work in those contexts that labor under fewer constraints.  It&#039;s a selfish and destructive pre-disposition for software developers, and I&#039;m certainly not immune to its temptations and have given in to them on many an occasion.

Ethics, responsibility, and moral imperative suggest that I remain vigilant, however, and part of that vigilance is informed by a practice of the constraints that I&#039;m accountable to.</description>
		<content:encoded><![CDATA[<p>Max,</p>
<p>&gt; who should give more, the creator or the<br />
&gt; maintainer?</p>
<p>The maintainer.  Maintenance is 80% of software cost BY PHASED DEVELOPMENT.  If you have a maintenance phase, and based on common understanding of the distinct place in phased development lifecycle where transition to maintenance happens, the the 80% mark is true.</p>
<p>The reality is that the moment of software creation is so infinitesimally small that it&#8217;s barely worth mentioning.</p>
<p>There are two phases of software development in contemporary processes:<br />
1-) thinking about about you&#8217;re about to do, and<br />
2-) everything that comes after you&#8217;ve thought about it and wrote it down in code.</p>
<p>Once any single byte of code exists, it&#8217;s in maintenance &#8211; even if it was created only a minute in the past.  Software Creationalism says otherwise, and gives rise to the 80% number, but it&#8217;s a software cosmology based in an software lifecycle ideology that has proven to be pretty seriously flawed.</p>
<p>&gt; so shouldn’t we allow developers to code<br />
&gt; comfortably?</p>
<p>Absolutely, but that means that they should comfortably work within set constraints.  The kind of disciplined software production that leads to levels of agility that come after merely solving the software defect problem with unit testing and TDD depend on this extent of constraint and control &#8211; just as does the Toyota Production System that we all hold up as a paragon of agile virtue.</p>
<p>The software developer plays the role of both ideator and production worker.  He has to come to terms with the different constraints that apply to software ideation versus software production, and accept that production work isn&#8217;t as willy-nilly as ideation tasks.</p>
<p>It&#8217;s the attraction to the stream-of-consciousness  ideation that permits the entitlement to phased development.  It gives some folks on the team the license to do all their work in those contexts that labor under fewer constraints.  It&#8217;s a selfish and destructive pre-disposition for software developers, and I&#8217;m certainly not immune to its temptations and have given in to them on many an occasion.</p>
<p>Ethics, responsibility, and moral imperative suggest that I remain vigilant, however, and part of that vigilance is informed by a practice of the constraints that I&#8217;m accountable to.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Bellware</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1186</link>
		<dc:creator>Scott Bellware</dc:creator>
		<pubDate>Tue, 26 Feb 2008 01:00:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1186</guid>
		<description>Nathan,

&gt; I love the ternary operators as they are
&gt; much more “scannable” and express the situation
&gt; quite clearly

Ternary operator statements are less scannable.  I look for indents to look for branches and conditional flow control and value assignment.  Ternary operators don&#039;t offer the same visual hints to scanning.

Scanning is specifically not reading.  Scanning and scannability is more significantly impacted by the geometry of the code and the consistency of the shapes and patterns used to communicate certain kinds of programming concerns.

The significance of a ternary operator to someone who is scanning is that there&#039;s a conditional branch there, and it may very likely be missed because it isn&#039;t shaped like the kind of conditional branch that can be perceived at scanning speed.

Scannability is drive-by readability.  If you&#039;ve found a ternary operator statement while scanning, it&#039;s either because you got lucky, or you stopped scanning and switched to reading without taking notices of the change in modes.</description>
		<content:encoded><![CDATA[<p>Nathan,</p>
<p>&gt; I love the ternary operators as they are<br />
&gt; much more “scannable” and express the situation<br />
&gt; quite clearly</p>
<p>Ternary operator statements are less scannable.  I look for indents to look for branches and conditional flow control and value assignment.  Ternary operators don&#8217;t offer the same visual hints to scanning.</p>
<p>Scanning is specifically not reading.  Scanning and scannability is more significantly impacted by the geometry of the code and the consistency of the shapes and patterns used to communicate certain kinds of programming concerns.</p>
<p>The significance of a ternary operator to someone who is scanning is that there&#8217;s a conditional branch there, and it may very likely be missed because it isn&#8217;t shaped like the kind of conditional branch that can be perceived at scanning speed.</p>
<p>Scannability is drive-by readability.  If you&#8217;ve found a ternary operator statement while scanning, it&#8217;s either because you got lucky, or you stopped scanning and switched to reading without taking notices of the change in modes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chad Myers</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1175</link>
		<dc:creator>Chad Myers</dc:creator>
		<pubDate>Mon, 25 Feb 2008 14:16:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comment-1175</guid>
		<description>I would think that, at the very least, naming/style should be consistent among items in the same container. For example, code in the same code (.cs, .java, etc) should be uniform. File names in a folder should be uniform, folder names in a project should be uniform, project names in a solution, etc, etc, etc.

If I go from one .cs file to another and they&#039;re formatted differently, but uniformly, I&#039;m less inclined to complain than if they&#039;re all over the place within individual files.

I can adapt to K&amp;R braces or PASCAL braces, I do not want to have waste brain cycles working with both within the same code unit. It&#039;s inefficient.</description>
		<content:encoded><![CDATA[<p>I would think that, at the very least, naming/style should be consistent among items in the same container. For example, code in the same code (.cs, .java, etc) should be uniform. File names in a folder should be uniform, folder names in a project should be uniform, project names in a solution, etc, etc, etc.</p>
<p>If I go from one .cs file to another and they&#8217;re formatted differently, but uniformly, I&#8217;m less inclined to complain than if they&#8217;re all over the place within individual files.</p>
<p>I can adapt to K&amp;R braces or PASCAL braces, I do not want to have waste brain cycles working with both within the same code unit. It&#8217;s inefficient.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
