<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
                     "http://my.netscape.com/publish/formats/rss-0.91.dtd">
<rss version="2.0">
<channel>
  <title>cLabs Blogki</title>
  <link>http://clabs.org/blogki/blogki.cgi</link>
  <description>cLabs Blogki</description>
  <language>en-us</language>
<item>  <title>TheInevitabilityOfGoodEnough</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/BusinessWorld/TheInevitabilityOfGoodEnough</link>  <pubDate>Tue, 28 Jun 2011 00:21:12 GMT</pubDate>  <category>BusinessWorld</category>  <description>&lt;pubclabs&gt;
Seth &lt;a href=&quot;http://sethgodin.typepad.com/seths_blog/2005/06/the_seduction_o.html&quot;&gt;wrote&lt;/a&gt;:&lt;br&gt;&lt;blockquote&gt;
...here are my two big ideas to start:&lt;br&gt;&lt;br&gt;1. Humans tend to work on a problem until they get a good enough solution, instead of a solution that's right.&lt;br&gt;&lt;br&gt;2. The marketplace often rewards solutions that are cheaper and good enough, instead of investing in the solution that promises to lead to the right answer.&lt;br&gt;&lt;/blockquote&gt;
&lt;br&gt;I emailed him back:&lt;br&gt;&lt;blockquote&gt;
Isn't good enough inevitable? Doesn't the square drive screw have some deficiency to it? Perhaps there's a better way to attach things together than any sort of screw could provide. Maybe we're not investing enough time in making duct tape better.&lt;br&gt;&lt;br&gt;Better always is going to take some effort, and effort is not limitless. I can't go everywhere at once on a journey, I can only do one step, right now, one direction.&lt;br&gt;&lt;br&gt;Your big ideas make a big assumption: that we can know ahead of time what the right answer is. Sometimes we can, but many times better only becomes visible once we've arrived at good enough. &lt;br&gt;&lt;/blockquote&gt;
&lt;br&gt;Seth's &lt;a href=&quot;http://sethgodin.typepad.com/seths_blog/2005/06/great_enough.html&quot;&gt;follow-up&lt;/a&gt; puts a good bit of weight on the other end of the issue:&lt;br&gt;&lt;blockquote&gt;
I'm not arguing that nothing is good enough. Far from it. ... But for those that are intent on creating something remarkable, it seems that the attractive vision is to believe precisely the opposite, at least about the stuff you care about.&lt;br&gt;&lt;/blockquote&gt;
&lt;br&gt;6 years later, &lt;a href=&quot;http://sethgodin.typepad.com/seths_blog/2011/06/how-do-you-know-when-its-done.html&quot;&gt;Seth hits up the same topic&lt;/a&gt;:&lt;br&gt;&lt;blockquote&gt;
Good enough, for those that seek perfection, is what we call it when it's sufficient to surpass the standards we've set. Anything beyond good enough is called stalling and a waste of time.&lt;br&gt;&lt;br&gt;If you don't like your definition of 'good enough', then feel free to change that, but the goal before shipping is merely that. Not perfect.&lt;br&gt;&lt;/blockquote&gt;
&lt;br&gt;&lt;hr&gt;
&lt;br&gt;&lt;a href=/blogki/blogki.cgi?page=/ComputersAndTechnology/JonathanKohl&gt;JonathanKohl&lt;/a&gt; emailed me some linkage to &lt;a href=&quot;http://www.satisfice.com/articles/good_enough_quality.pdf&quot;&gt;two&lt;/a&gt; &lt;a href=&quot;http://www.satisfice.com/articles/gooden2.pdf&quot;&gt;articles&lt;/a&gt; by &lt;a href=/blogki/blogki.cgi?find=true&amp;searchText=JamesBach&amp;type=title&gt;JamesBach&lt;/a&gt; on this topic. In the first, James makes this point:&lt;br&gt;&lt;blockquote&gt;
Good Enough has nothing to do with mediocrity. It has to do with rational choices, as opposed to compulsive behavior. ... CemKaner, in Testing Computer Software (International Thomson Press, 1993)—standard issue to Microsoft's testers—also refers to bug fix deferral as a routine practice.&lt;br&gt;&lt;/blockquote&gt;
&lt;br&gt;Jonathan added this bit about corporate denial in his email...&lt;br&gt;&lt;blockquote&gt;
In my experience, projects that have unrealistic goals of perfection (zero defects comes to mind) tend to fail. The zero defect goal on a project always leads to politicizing failure-reporting and redefining terms. &quot;That's not a 'defect', that's an 'issue'&quot; is a very common one. Quality suffers because people are measured by impossible goals, so the truth gets hidden. Here's an example I saw on an Agile project that had unrealistic goals: testers and customers were bullied into not logging defects, developers redefined defects as only something that occurred after shipping the product, and even then wouldn't acknowledge problems because only one or two customers reported it. &lt;br&gt;&lt;/blockquote&gt;
... and then liked the topic so much, he &lt;a href=&quot;http://www.kohl.ca/blog/archives/000114.html&quot;&gt;blogged it himself&lt;/a&gt;.&lt;br&gt;&lt;br&gt;see also &lt;a href=/blogki/blogki.cgi?page=/ComputersAndTechnology/ConstructionAnalogy&gt;ConstructionAnalogy&lt;/a&gt;&lt;br&gt;</description></item><item>  <title>DarkIsTheDefault</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/ComputersAndTechnology/DarkIsTheDefault</link>  <pubDate>Fri, 10 Jun 2011 16:33:21 GMT</pubDate>  <category>ComputersAndTechnology</category>  <description>&lt;pubclabs&gt;
Software starts in the dark. If I'm building a physical &lt;a href=/blogki/blogki.cgi?page=/ComputersAndTechnology/RubeGoldbergAnalogy&gt;RubeGoldberg&lt;/a&gt; machine I get visibility for free, but with code I only have as much visibility as I build into it. This is one reason I like TDD, it starts creating some visibility from the beginning.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item>  <title>AutotestGrowlOnWindows</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/ComputersAndTechnology/AutotestGrowlOnWindows</link>  <pubDate>Fri, 03 Jun 2011 04:48:38 GMT</pubDate>  <category>ComputersAndTechnology</category>  <description>&lt;pubclabs&gt;
Googling &quot;Autotests Growl Windows&quot; currently comes up with some outdated hits. I found &lt;a href=&quot;http://snippets.dzone.com/posts/show/11435&quot;&gt;this&lt;/a&gt; to be current - basically, it just all works. No special Windows hax required. &lt;br&gt;</description></item><item>  <title>WhatDoesYourOrgLookLike</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/ComputersAndTechnology/WhatDoesYourOrgLookLike</link>  <pubDate>Wed, 11 May 2011 15:07:22 GMT</pubDate>  <category>ComputersAndTechnology</category>  <description>&lt;pubclabs&gt;
&lt;a href=&quot;http://alistair.cockburn.us/What+engineering+has+in+common+with+manufacturing+and+why+it+matters&quot;&gt;via Alistair Cockburn&lt;/a&gt;:&lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://alistair.cockburn.us/get/1905&quot;/&gt;
</description></item><item>  <title>WebConfigTransform</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/ComputersAndTechnology/WebConfigTransform</link>  <pubDate>Wed, 16 Feb 2011 16:33:37 GMT</pubDate>  <category>ComputersAndTechnology</category>  <description>&lt;pubclabs&gt;
Trying to troubleshoot a transformed web.config file? Want to see what the transformed .config file looks like? &lt;a href=&quot;http://msdn.microsoft.com/en-us/gg454290&quot;&gt;This MSDN article&lt;/a&gt; includes one way to do it:&lt;br&gt;&lt;blockquote&gt;
MSBuild [.csproj file] /t:TransformWebConfig /p:Configuration=[ConfigName]&lt;br&gt;&lt;br&gt;MSBuild builds the application and transforms the web.config file according to the Staging transform rules. The output files placed in the obj\[Config]/TransformWebConfig folder.&lt;br&gt;&lt;/blockquote&gt;
&lt;br&gt;Oh, and if you want to keep something out of the Web.config and only in the Web.[Config].config files, presuming VS2010 will do you transform for you ... &lt;a href=&quot;http://social.msdn.microsoft.com/Forums/eu/windowsazuredevelopment/thread/01eec49d-2626-4074-9ee9-6d36b4c381ae&quot;&gt;um, no&lt;/a&gt; (the post is in the context of Azure, but I'm finding the same issue in just a plain-jane web app).&lt;br&gt;&lt;br&gt;So, you still need a valid Web.config, but can only use Web.[Config].config transformations for building -&gt; publishing to another site. When running local out of VS2010, no transformation is done, apparently.&lt;br&gt;</description></item><item>  <title>SourceControlAtGoogle</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/ComputersAndTechnology/SourceControlAtGoogle</link>  <pubDate>Sun, 26 Dec 2010 22:54:32 GMT</pubDate>  <category>ComputersAndTechnology</category>  <description>&lt;pubclabs&gt;
&lt;a href=&quot;http://www.infoq.com/presentations/Development-at-Google&quot;&gt;InfoQ Presentation&lt;/a&gt;:&lt;br&gt;&lt;blockquote&gt;
Ashish Kumar presents how Google manages to keep the source code of all its projects, over 2000, in a single code trunk containing hundreds of millions of code lines, with more than 5,000 developers accessing the same repository.&lt;br&gt;&lt;/blockquote&gt;
</description></item><item>  <title>ScrumVKanban</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/ComputersAndTechnology/ScrumVKanban</link>  <pubDate>Wed, 01 Dec 2010 20:14:28 GMT</pubDate>  <category>ComputersAndTechnology</category>  <description>&lt;pubclabs&gt;
(Via &lt;a href=&quot;http://5whys.com/blog/scrum-vs-kanban-attitudes.html&quot;&gt;Roy O&lt;/a&gt;), &lt;a href=&quot;http://agilemanagement.net/index.php/site/comments/thoughts_on_how_kanban_differs_from_scrum/&quot;&gt;David Anderson weighs in&lt;/a&gt; on comparisons between adopting Scrum vs. Kanban:&lt;br&gt;&lt;blockquote&gt;
If your organization has low maturity, limited capability at risk management, change management and decision making, and is riddled with specialization and defensiveness then Kanban is probably a better choice. If you have time to let the culture and performance evolve and improve over months and years then Kanban is the right choice. If on the other hand, your organization is highly mature and capable of assessing risk, evaluating process alternatives, making good quality decisions, and managing high impact change gracefully then Scrum may be the right choice for you.&lt;br&gt;&lt;/blockquote&gt;
</description></item><item>  <title>LocalSystemConsole</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/ComputersAndTechnology/LocalSystemConsole</link>  <pubDate>Tue, 30 Nov 2010 02:30:48 GMT</pubDate>  <category>ComputersAndTechnology</category>  <description>&lt;pubclabs&gt;
&lt;a href=&quot;http://verbalprocessor.com/2007/12/05/running-a-cmd-prompt-as-local-system/&quot;&gt;Found this tasty bit&lt;/a&gt; to launch a console window running under the &lt;a href=/blogki/blogki.cgi?page=/ComputersAndTechnology/LocalSystemConsole&gt;LocalSystem&lt;/a&gt; account: use psexec from SysInternals&lt;br&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br&gt;psexec -s -i cmd.exe&lt;br&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br&gt;</description></item><item>  <title>PrototypesNotBuilds</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/ComputersAndTechnology/PrototypesNotBuilds</link>  <pubDate>Sat, 20 Nov 2010 15:42:02 GMT</pubDate>  <category>ComputersAndTechnology</category>  <description>&lt;pubclabs&gt;
If &lt;a href=/blogki/blogki.cgi?page=/ComputersAndTechnology/CodeIsTheDesign&gt;CodeIsTheDesign&lt;/a&gt;, then each build is probably better thought of as a prototype.&lt;br&gt;</description></item><item>  <title>VsAddAsLink</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/ComputersAndTechnology/VsAddAsLink</link>  <pubDate>Thu, 11 Nov 2010 01:51:03 GMT</pubDate>  <category>ComputersAndTechnology</category>  <description>&lt;pubclabs&gt;
One of the hidden bits in Visual Studio which can come in handy at times is adding a file As Link:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;
&lt;img src=&quot;/addaslnk.png&quot; /&gt;
&lt;/blockquote&gt;
&lt;br&gt;It's useful for making sure the assembly under test's app.config file is &lt;a href=&quot;http://stackoverflow.com/questions/484087/how-to-avoid-duplicate-app-config-using-visual-studio-2008-unit-testing&quot;&gt;available to the unit tests&lt;/a&gt;, or sharing a single AssemblyInfo.cs file across many projects.&lt;br&gt;</description></item><item>  <title>CodeMyopia</title>  <link>http://clabs.org/blogki/blogki.cgi?page=/ComputersAndTechnology/CodeMyopia</link>  <pubDate>Tue, 05 Oct 2010 04:02:48 GMT</pubDate>  <category>ComputersAndTechnology</category>  <description>&lt;pubclabs&gt;
&lt;br&gt;&lt;i&gt;[I originally wrote this some years ago, and it got some twitter traffic recently, so decided to publish it, part of a small collection of &lt;a href=/blogki/blogki.cgi?page=/ComputersAndTechnology/DevelopmentAnalogies&gt;DevelopmentAnalogies&lt;/a&gt;]&lt;/i&gt;&lt;br&gt;&lt;br&gt;I find myself frequently searching for a good analogy to convey to non-programmers to enormity of dealing with even a small to medium-sized application. The following is the one I keep working on:&lt;br&gt;&lt;br&gt;My main app on the job these days comes in around maybe 75k lines of code I've written (it's hard to get a good count cuz there's a bunch of 3rd party code lines included in the count Delphi's compiler comes up with). &lt;br&gt;&lt;br&gt;Of those 75k lines, I can only look at maybe 30 at one time. Of those 30 visible on the screen, I can only focus my mind on maybe to 5-15 of them. 15 lines out of 75k is only 0.0002% of the codebase.&lt;br&gt;&lt;br&gt;Now say I've built a 2,000 sq. ft. house, but can only look at 0.0002% at a time -- that's about a 5 in. square. I have no ability to size up a room, no ability to see an entire window, an entire door, a cabinet, much less a blueprint of the entire floorplan. The only things I can see in one shot are items like a door hinge, a window lock, a stove top knob. &lt;br&gt;&lt;br&gt;These measurements are very crude, of course ... but it seems to me, so far, to get the gist across.&lt;br&gt;&lt;br&gt;</description></item></channel>
</rss>

