<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>8th Light Blog: Tag bradbury</title>
    <link>http://blog.8thlight.com/bradbury</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>In the minds of the craftsmen...</description>
    <item>
      <title>Own Your Tools</title>
      <description>&lt;p&gt;I spent a lot of time with my grandpa growing up.  He has spent much of his retirement &amp;#8216;fooling around&amp;#8217; in a workshop he built on his slice of Pike County, Illinois farmland.  From a very early age I spent a lot of weekends and entire weeks of the summer as Grandpa&amp;#8217;s little helper.  I&amp;#8217;d work on the things he was  working on while helping and learning.  When I was about 7 years old, I was helping Grandpa refinish a dresser.  I had a flat paint scraper in my little hands and was trying to dig into the layers of flaking paint that gripped the dresser.  I really didn&amp;#8217;t have the strength to get under the paint with that big blade, so I turned the tool on edge and started scratching deeply into the wood.  I was making progress now, but tearing the heck out of the surface.  Now in Grandpa&amp;#8217;s version of this story, he says that when he saw what I was doing he corrected me too harshly and sharply and later found me teared up in a corner of the workshop sorry for what I&amp;#8217;d done.  I honestly don&amp;#8217;t remember being that hurt by his rebuke, but I do know how to use a paint scraper and dozens of other tools properly because of that time I spent &amp;#8216;helping&amp;#8217; grandpa in his shop.&lt;/p&gt;

&lt;p&gt;As software crafts-people our tools are other bits of software.  We spend every minute of every day using software.  Our editors, compilers, interpreters, source code repositories, IDEs, debuggers, and test frameworks enable every stage of our work.  Everything we do to create and add value to a software project requires some other software tool to make it happen.&lt;/p&gt;

&lt;p&gt;At many of the places I&amp;#8217;ve worked, the developers have a laundry list of complaints about their software tools.  Often, teams develop elaborate rituals and incantations to dance around the shortcomings of their tools.  &#8220;Before you check in, copy this file over there then add a note to that file then spin around in your chair three times and your check-in should succeed.&#8221;  Now I agree that there are lots of poorly designed tools out there.  Some tools do things that just don&amp;#8217;t make sense and others crash all the time, but I have a challenge for us as software crafts-people:  Own your tools.  Tools are software, you are a software crafts-person.  You can find or make a tool to do anything you need. &lt;/p&gt;

&lt;p&gt;Groups decide to invest in a tool, often at great cost, but very few people end up understanding or even using the tool.  The tools usually gets blamed for its shortcomings before anyone has really made the effort  to get them to work. They give up on it far to early.   Own your tools.  Understand everything it can do, and if it isn&amp;#8217;t enough, find a way to make it do what you want.&lt;/p&gt;

&lt;p&gt;One of the cool things that happens is that investing time in your tools may give you the chance to explore a new language.  One of our goals as craftsmen at 8th Light is to learn a new language every year, but often its hard to justify the time spent in a new language when you are heads-down in a project.  Using a new language to create a tool for yourself may give you just the excuse you need to spread out a bit and learn something new.&lt;/p&gt;

&lt;p&gt;Is it really worth it?  Can the time spent writing &#8220;non-production&#8221; code really be justified?  Let&amp;#8217;s take a task, say the creation of a new class in C++.  Most people when creating a new class, will open up the last class they worked on, copy the entire thing, paste it into a new file, delete all the methods and data, then do a find/replace on the class name.  There are probably a few comments that need editing, the revision history needs to be cleaned out and maybe there is a comment header or footer that needs to be updated.  This entire process could take maybe 2 minutes.  It hardly seems like it&amp;#8217;s worth automating.  Except &amp;#8230; Wait! It won&amp;#8217;t compile, because you mistakenly didn&amp;#8217;t remove the parameters from the constructor and the compiler can&amp;#8217;t resolve the dependencies.  This is a manual process, so it&amp;#8217;s error prone.  So you spend maybe another 3 minutes getting the thing to compile.   Then we need a test harness so you do the same copy, paste, delete, find / replace process.  8 minutes later we have a new class and test harness and we are ready to start working.  The hour or so investment to build a tool for yourself will surely be worth it now.  If you share your work with the rest of your team and suddenly everyone is saving 8 minutes every time a new class is generated, you might have your hour back by the end of the week.&lt;/p&gt;

&lt;p&gt;Some IDEs and editors have some class generation utilities for you.  This may get you part of the way there, but it probably won&amp;#8217;t put your company&amp;#8217;s header on the top or put in your source control keywords.  It may not make your destructor virtual or create a private copy constructor to start like I like to do.  The tool doesn&amp;#8217;t do exactly what you want.  Own your tool.  You are a software craftsmen.  You can create software that generates a class for yourself.  If you are in an editor that supports macros or bundles, you may be able to implement the tool in the editor&amp;#8217;s macro language.  &lt;/p&gt;

&lt;p&gt;In this spirit, the craftsmen at 8th light have contributed to open source software tool projects for several years.  Micah is the author of the widely used &lt;a href="http://www.fitnesse.org"&gt;Fitnesse&lt;/a&gt; acceptance test framework and Eric has taken over the management of &lt;a href="http://selenium-on-rails.openqa.org/"&gt;Selenium on Rails&lt;/a&gt;.  Micah&amp;#8217;s also been working on a whole new development framework called &lt;a href="http://limelight.8thlight.com"&gt;LimeLight&lt;/a&gt;.  We love open source tools because they let anyone own the tool.  &lt;/p&gt;

&lt;p&gt;Grandpa used to make things out of sliced walnuts.  He&amp;#8217;d glue together little baskets or crosses and fill the walnut cavities with colorful beads.  As you can imagine, a walnut is a pretty difficult thing to slice.  At the very least it&amp;#8217;s awfully dangerous to get your fingers that close to a band saw. Grandpa showed me a while ago the tool that he made to save his lower digits.  It&amp;#8217;s a pretty simple block of wood with a half-walnut sized divot carved out of it.  It was a woodworker using his woodworking skills to create (and own) a tool for woodworking.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;d like my class generator, you can have it &lt;a href="http://blog.8thlight.com/files/NewClass.zip"&gt;
here&lt;/a&gt;.  Chances are, it won&amp;#8217;t do exactly what you need it to do, so &amp;#8230; own your tool.&lt;/p&gt;</description>
      <pubDate>Thu, 18 Sep 2008 06:00:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:09e7671d-1e0c-45fb-961d-90081709f197</guid>
      <author>Doug Bradbury</author>
      <link>http://blog.8thlight.com/articles/2008/09/18/own-your-tools</link>
      <category>Craftsmanship</category>
      <category>doug</category>
      <category>tools</category>
      <category>bradbury</category>
      <enclosure type="application/zip" length="1547" url="http://blog.8thlight.com/files/NewClass.zip"/>
    </item>
    <item>
      <title>Maturing the Manifesto</title>
      <description>&lt;p&gt;There has been an interesting discussion happening about adding a 5th value statement to the &lt;a href="http://www.agilemanifesto.org"&gt; Agile Manifesto&lt;/a&gt;.  &lt;a href="http://blog.objectmentor.com/articles/2008/08/14/quintessence-the-fifth-element-for-the-agile-manifesto"&gt;Uncle Bob Martin&lt;/a&gt; proposed this addition earlier this month at Agile 2008.  The proposal has centered around the idea of craftsmanship or professionalism.  In his keynote, Uncle Bob proposed that we value &amp;#8220;Craftsmanship over Crap&amp;#8221; and in a later blog post suggested &amp;#8220;Craftsmanship over Execution.&amp;#8221;  I strongly agree with the call for more professionalism and craftsmanship amongst software developers.&lt;/p&gt;

&lt;p&gt;The original value statements are comparative.  The things on the right still have value, but the things on the left are valued more.  &amp;#8220;We value working software over comprehensive documentation.&amp;#8221;  I think what has happened is that we have found something we value MORE than &amp;#8220;working software.&amp;#8221;  We value well-crafted software over working software.  It&amp;#8217;s very important that the software works, but even more important is that the code is clean, that it is easy to read and therefore easy to change.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve been reading &amp;#8220;The Craftsman&amp;#8221; by Richard Sennett. I&amp;#8217;ve found a great definition of craftsmanship. &amp;#8220;They are dedicated to good work for its own sake&amp;#8221; (Sennett 20).  A craftsman is driven by quality.  Quality software is software that both does what is is supposed to (works) and is clean and easy to continue to work with.&lt;/p&gt;

&lt;p&gt;This has me wondering about the other 3 value statements in the manifesto.  Are there things that we value more than those things on the left hand side?  We are learning day by day better ways of doing software, so what have we learned since 2001?  We have a good idea about how Craftsmanship shapes the way we think about &amp;#8216;working software.&amp;#8217;  How can the idea of Craftsmanship change how we think about &amp;#8216;responding to change&amp;#8217;, &amp;#8216;individuals and interactions&amp;#8217;, and &amp;#8216;customer collaboration&amp;#8217;?&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Sennett, Richard.  The Craftsman.  Yale University Press.  New Haven and London. 2008
&lt;/i&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 27 Aug 2008 12:54:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:42b9adfb-a6c8-4f6c-9654-d87414d064d8</guid>
      <author>Doug Bradbury</author>
      <link>http://blog.8thlight.com/articles/2008/08/27/maturing-the-manifesto</link>
      <category>Craftsmanship</category>
      <category>Quintessence</category>
      <category>doug</category>
      <category>manifesto</category>
      <category>agile</category>
      <category>bradbury</category>
    </item>
    <item>
      <title>How Doug got started programming</title>
      <description>&lt;p&gt;Tagged by &lt;a href="http://blog.8thlight.com/articles/2008/07/02/tag-im-it"&gt;Micah Martin&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;How old were you when you started programming.&lt;/h3&gt;

&lt;p&gt;When I was about 11 or so I bought a Color Computer III at a garage sale.  I started typing in some basic programs that I found in a math text book or something.  I had no disk or tape drive, so I had to start over every time I turned the computer on.  I don&amp;#8217;t remember what the program did.  I do remember playing the game with the bouncing ball, paddle and busting up bricks.&lt;/p&gt;

&lt;h3&gt;How did you get started programming.&lt;/h3&gt;

&lt;p&gt;I started writing static web pages somewhere around 1995.  I was the president of my high school&amp;#8217;s computer club and we built the first every website for &lt;a href="http://www.morgan.k12.il.us/jvillehs/"&gt;Jacksonville High School&lt;/a&gt;, complete with a presentation to the school board.  I&amp;#8217;m pretty sure the site had blinking text.&lt;/p&gt;

&lt;p&gt;We also started learning C++ in the club.  We didn&amp;#8217;t have a text book, but our sponsor, Robin Manker, would print out sheets each week for us and we&amp;#8217;d bind them into one of those plastic spiral bound things that you needed the machine to open up the binding.&lt;/p&gt;

&lt;h3&gt;What was your first language?&lt;/h3&gt;

&lt;p&gt;BASIC&lt;/p&gt;

&lt;h3&gt;What was the first real program you wrote?&lt;/h3&gt;

&lt;p&gt;Like others, I&amp;#8217;m not sure what makes a program &amp;#8216;real.&amp;#8217;  I remember that my first C++ exercise was a Fahrenheit to Celsius converted.&lt;/p&gt;

&lt;h3&gt;What languages have you used since you started programming?&lt;/h3&gt;

&lt;p&gt;BASIC, ADI Sharc assembly and other uber-fun machine languages, C, C++, Java, Ruby&lt;/p&gt;

&lt;h3&gt;What was your first professional programming gig?&lt;/h3&gt;

&lt;p&gt;My first job was writting DSP (Digital Signal Processing) algorithms in assembly.  The first thing I worked on was the compressor algorithm,  I implemented time sharing on the averaging algorithms and reduced the cycle count by 30% or so.  The processor was an Analog Devces Sharc.  It had two data buses and two ALUs, so you could basically make two read/writes from memory and two arithmetic calculations per clock cycle.  We&amp;#8217;d write lines of code that looks like this:&lt;/p&gt;

&lt;pre&gt;
r1 = r2+r5; r3=r6-r7; dm(i6) = r2; r5= pm(i3);
&lt;/pre&gt;

&lt;p&gt;Everyline of code would be followed by a line of comments explaining the line.  It was painstaking work, but It&amp;#8217;s how I learned to be methodical and linear.  It was also a whole lot of fun to listen to your code after you finished it.&lt;/p&gt;

&lt;h3&gt;If there is one thing you learned along the way that you would tell new developers, what would it be?&lt;/h3&gt;

&lt;p&gt;I still remember one of the first things Robin, the first person to teach me how to code used to say.  I still pull it out often.  It went something like this.  &lt;/p&gt;

&lt;p&gt;1) There is a teapot sitting on the counter.  How does the programmer solve the problem of making tea?  He picks up the teapot and sets it on the stove.&lt;/p&gt;

&lt;p&gt;2) There is a teapot sitting on the floor.  How does the programmer solve the problem of making tea?  He picks up the the teapot and sets it on the counter.  The he says &amp;#8220;I&amp;#8217;ve solved this problem before&amp;#8221;&lt;/p&gt;

&lt;h3&gt;What&amp;#8217;s the most fun you&amp;#8217;ve ever had programming?&lt;/h3&gt;

&lt;p&gt;Kevin Moore was one of my first mentors when I started working at Shure fresh out of college.  These was a time, when we would stay late every Tuesday night and code together.  He was the first one to tell me about XP things like &amp;#8220;What&amp;#8217;s the simplest thing that could possibly work&amp;#8221; and pair programming.  Late on Tuesdays we didn&amp;#8217;t have any managers telling us to stop wasting time with two people at one computer.  We paired together writing the microcontroller code for the &lt;a href="http://www.shure.com/ProAudio/Products/MixersAndDSP/us_pro_DFR22_content"&gt;DFR22.&lt;/a&gt;  We had a lot of fun and pulled of a pretty amazing project in something like 8 months.&lt;/p&gt;

&lt;h3&gt;Up Next&lt;/h3&gt;

&lt;p&gt;Note sure if they have blogs or not:  Kevin Moore, Robin Manker&lt;/p&gt;</description>
      <pubDate>Sun, 10 Aug 2008 13:43:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:266cf859-638f-451c-adc1-c7dfba1eb195</guid>
      <author>Doug Bradbury</author>
      <link>http://blog.8thlight.com/articles/2008/08/10/how-doug-got-started-programming</link>
      <category>Fun</category>
      <category>doug</category>
      <category>tag</category>
      <category>started</category>
      <category>bradbury</category>
    </item>
    <item>
      <title>That's Not Agile!  Bibliography</title>
      <description>&lt;p&gt;Mondo Cane. 1962. &lt;a href="http://www.youtube.com/watch?v=fSZXe5NjqAw"&gt;http://www.youtube.com/watch?v=fSZXe5NjqAw]&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;McConnell, Steve. Cargo Cult Software Engineering. IEEE Software. March/April 2000.  &lt;a href="http://www.stevemcconnell.com/ieeesoftware/eic10.htm"&gt;http://www.stevemcconnell.com/ieeesoftware/eic10.htm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Frye, Colleen.  Alistair Cockburn on what&amp;#8217;s agile, what&amp;#8217;s not. 2007. &lt;a href="http://searchsoftwarequality.techtarget.com/news/interview/0,289202,sid92_gci1255480,00.html"&gt;http://searchsoftwarequality.techtarget.com/news/interview/0,289202,sid92_gci1255480,00.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beck, Kent. Keynote Address.  RailsConf 2008.  &lt;A href="http://www.viddler.com/explore/gotthingsdone/videos/5/"&gt;http://www.viddler.com/explore/gotthingsdone/videos/5/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vandegriend, Basil. To Be or Not To Be Agile.  &lt;a href="http://www.basilv.com/psd/blog/2007/to-be-or-not-to-be-agile"&gt;http://www.basilv.com/psd/blog/2007/to-be-or-not-to-be-agile&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Spolsky, Joel. From the &amp;#8220;you call this agile?&amp;#8221; department.  &lt;a href="http://www.joelonsoftware.com/items/2006/11/15.html"&gt;http://www.joelonsoftware.com/items/2006/11/15.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Webber, Jim, Ph.D.  Agile Atheism.  &lt;a href="http://jim.webber.name/2006/11/30/a7ccc5a7-08a8-4594-a347-5f78e13f04f2.aspx"&gt;http://jim.webber.name/2006/11/30/a7ccc5a7-08a8-4594-a347-5f78e13f04f2.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Martin, Robert.  The Founding of the Agile Alliance.  &lt;a href="http://blog.objectmentor.com/articles/2007/07/10/the-founding-of-the-agile-alliance"&gt;http://blog.objectmentor.com/articles/2007/07/10/the-founding-of-the-agile-alliance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fowler, Martin.  Writing The Agile Manifesto.  &lt;a href="http://martinfowler.com/articles/agileStory.html"&gt;http://martinfowler.com/articles/agileStory.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Holy Bible.  Matthew 15:1-11.  &lt;a href="http://www.biblegateway.com/passage/?search=matthew%2015:1-11;&amp;amp;version=31;"&gt;http://www.biblegateway.com/passage/?search=matthew%2015:1-11;&amp;amp;version=31;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 07 Aug 2008 15:58:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:aeb4a085-86e6-4b8b-b9f2-82cfc2b5246b</guid>
      <author>Doug Bradbury</author>
      <link>http://blog.8thlight.com/articles/2008/08/07/thats-not-agile-bibliography</link>
      <category>doug</category>
      <category>thats</category>
      <category>not</category>
      <category>agile</category>
      <category>agile2008</category>
      <category>conference</category>
      <category>speaking</category>
      <category>workshop</category>
      <category>bradbury</category>
    </item>
    <item>
      <title>That's not Agile, Live</title>
      <description>&lt;p&gt;About a year ago, I wrote &lt;a href="http://blog.8thlight.com/articles/2007/08/05/thats-not-agile"&gt;That&amp;#8217;s not Agile&lt;/a&gt;.  The idea has grown a bit since then and I will be presenting it as a &lt;a href="http://submissions.agile2008.org/node/3144"&gt;workshop&lt;/a&gt; at Agile 2008.  If you are coming to Toronto, please consider coming to check out the workshop.  It all happens Thursday morning (8/7) at 8:30 am.&lt;/p&gt;

&lt;p&gt;In this workshop we&amp;#8217;ll be looking at the differences between the practices of Agile and the values/beliefs in Agile.  We&amp;#8217;ll explore questions like &amp;#8220;What makes a practice Agile?&amp;#8221;  &amp;#8220;Is it your practices that make you Agile or you beliefs?&amp;#8221;&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m especially hoping to find some people in the room who have been on a team that has struggled in transitioning to Agile.&lt;/p&gt;

&lt;p&gt;See you in Toronto!&lt;/p&gt;</description>
      <pubDate>Sat, 26 Jul 2008 14:48:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:a88e7465-4a77-4803-9a4e-136219f3b4e2</guid>
      <author>Doug Bradbury</author>
      <link>http://blog.8thlight.com/articles/2008/07/26/thats-not-agile-live</link>
      <category>Craftsmanship</category>
      <category>agile</category>
      <category>conference</category>
      <category>doug</category>
      <category>speaking</category>
      <category>workshop</category>
      <category>bradbury</category>
    </item>
    <item>
      <title>That's Not Agile! </title>
      <description>&lt;p&gt;&lt;em&gt;Removing the religion from software development&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I had feared those words.  I&amp;#8217;d often been tempted to use them myself, but something told me I shouldn&amp;#8217;t.  As I sat in a planning game on a previous job, I heard the words.  They still make me cringe.  &#226;&#8364;&#339;We can&amp;#8217;t do it that way.  That&amp;#8217;s not Agile.&#226;&#8364;&#157;&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m a big fan of agile.  I&amp;#8217;ve long been convinced that the agile movement truly is uncovering ways to do software better.  It&amp;#8217;s revolutionizing the way that companies approach software.  At 8th Light we&amp;#8217;re using Agile to help us deliver the highest quality software possible to our clients.  I wonder though, how exactly something can be classified as un-agile?&lt;/p&gt;

&lt;p&gt;What is Agile anyway?  Can it be measured?  Can one thing really be more agile than another?  If I had a yardstick and I was going to measure Agile,  what would the markings be along the stick?  What units would I use?  &amp;#8216;Points&amp;#8217; has already been taken, so maybe I should invent a new unit.  I&amp;#8217;ll call it the &lt;em&gt;Agl&lt;/em&gt;.  For every hour of pair programming an organization does it gets 10 &lt;em&gt;Agls&lt;/em&gt;.  Unit tests are worth 1 &lt;em&gt;Agl&lt;/em&gt; each.  Acceptance tests get 100 &lt;em&gt;Agls&lt;/em&gt;.  I&amp;#8217;d use negative values too.  For every page of documentation written, an organization looses 40 &lt;em&gt;Agls&lt;/em&gt;, but the group running in iterations gets 1000 &lt;em&gt;Agls&lt;/em&gt;.  One week iterations are worth 2000.&lt;/p&gt;

&lt;p&gt;The problem is that as a development organization adopts Agile and buys into various processes and practices, the temptation quickly grows to covert that development process into religion.  &#226;&#8364;&#339;We can&amp;#8217;t do code reviews, that&amp;#8217;s not Agile!&#226;&#8364;&#157;  &#226;&#8364;&#339;We don&amp;#8217;t write documents, that not Agile!&#226;&#8364;&#157;  What may start as genuine excitement and passion can quickly become religious dogma when those involved in the process lose sight of why they do what they do.  Let me say that while I am a religious guy, I hate religion.  Religion, to me, means action without thought:  doing or saying something because that is the thing that you are supposed to say or do.  I&amp;#8217;d rather call what I have faith.  Faith comes from beliefs or values held and turned into day-to-day living.&lt;/p&gt;

&lt;p&gt;Since we are talking about religion, I thought I story from the Bible might be appropriate.  Jesus and some friends were sitting down to eat when some super-religious folks showed up and started berating Jesus for letting his friends eat with dirty hands.  These religious-types had established an elaborate ceremony for washing hands that had very little to do with removing bacteria.  Jesus comes down hard on these guys for exchanging true principles for religious dogma.  He responds by handing them the principle that does really matter.  &#226;&#8364;&#339;Nothing outside a man can make him &amp;#8216;unclean&amp;#8217; by going into him. Rather, it is what comes out of a man that makes him &amp;#8216;unclean.&amp;#8217; &amp;#8221; (1)  Here one of the most well-known religious leaders of all time shows his followers that it is the true principles that matter, not the religious practices or rules.&lt;/p&gt;

&lt;p&gt;In software planning situations and day to day development we are faced with hundreds of little decisions about how to do our work.  Should we throw this code out and start building the whole thing from scratch?  Should we iteratively improve the code and slowly arrive at a better design?  Do I write a test for this code?  Should I pair with someone or just write this myself?  When making these decisions we need guidance, something to help us understand if one thing is better than another.  &#226;&#8364;&#339;Agile&#226;&#8364;&#157; is not that thing.  Agile is just the label put on a whole spectrum of practices.  Those guiding lights we need are principles.  Principles are the domain-specific set of beliefs that an organization has adopted.  They reflect what the organization values.  I think it&amp;#8217;s possible that many organizations get swept up in the excitement and freedom of agile practices that they skip this critical step of establishing the their principles.  Kent Beck lays out a set of principles for extreme programming.  Baby Steps, Failure, Quality, Redundancy, Opportunity, Flow, Reflections, Diversity, Improvement, Self-Similarity, Mutual Benefit, Economics, and Humanity(2) help direct an organization when it is trying to figure out the how of software development.  Whenever I&amp;#8217;ve heard Kent speak, he always comes back to the principles and values behind the practices in extreme programming.  UncleBob has established a great set of principles that help us discuss and qualify designs.  The Single Responsibility Principle, the Open-Closed Principle, the Don&amp;#8217;t Repeat Yourself Principle(3), and others are guiding lights for design decisions.  These give teams concrete evaluators that keep design discussions productive and prevent them from deteriorating into contests of dogma.  Alistair Cockburn writes about 7 properties in Crystal Clear that can be translated into principles:  Frequent Delivery, Reflective Improvement, Osmotic Communication, Personal Safety, Focus, East Access to Expert Users, Automated Tests, Configuration Management, and Frequent Integration (4).  I don&amp;#8217;t want to delve too deeply into these principles here, but an organization in the process of adopting agile should.  Each of these &lt;a href="http://agilemanifesto.org/" target="_new"&gt;manifesto&lt;/a&gt;-signing authors have explained these principles wonderfully in their books.&lt;/p&gt;

&lt;p&gt;At issue in my planning meeting was whether or not to require a certain feature in a third party library for which we are shopping.  At the time, we didn&amp;#8217;t have a need for this feature, but we anticipated that it may show up an upcoming story.  The person who spoke up saying &#226;&#8364;&#339;That&amp;#8217;s Not Agile&#226;&#8364;&#157; was really referencing the XP value of simplicity.  &#226;&#8364;&#339;Solve today&amp;#8217;s problems today and tomorrow&amp;#8217;s problems tomorrow.&#226;&#8364;&#157;(2)  This would suggest that one shouldn&amp;#8217;t take on additional complexity until it is needed.  However, when purchasing a third party library, perhaps the principle of Economics might suggest that paying a little more for this library today will save a lot of time and money later and potentially avoid purchasing the library twice.  Which is the right decision?  I don&amp;#8217;t know, but after having agreed on the principles that guide our decisions, we can have the conversations around those principles and pick a way forward.&lt;/p&gt;

&lt;p&gt;An organization transitioning to some flavor of agile ought to first clarify what its organization&amp;#8217;s principles are.  Read Beck or Martin or Cockburn or your favorite Agile author and choose the principles that you want to live by.  Second, make the principles visible.  Put them up on a wall.  Have meetings where team members present a principle.  Refer to them as you pair.  Write about them, read about them, explore them.  At 8th Light, we&amp;#8217;ve put them on our &lt;a href="http://www.8thlight.com/main/about"&gt;website&lt;/a&gt;.  Revisit them when starting a new project.  If you are working with a consultant, ask them to take you through a values and principles exercise.  If you are a consultant, please don&amp;#8217;t miss this critical part of transitioning to Agile.  Making your principles part of the every day vernacular of your organization will take you to a place where design and planning discussions stay productive and you&amp;#8217;ll hopefully never hear &#226;&#8364;&#339;That&amp;#8217;s not Agile!&#226;&#8364;&#157; again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;End Notes:&lt;/strong&gt;&lt;br&gt;
1) &lt;a href="http://www.biblegateway.com/passage/?search=Mark%207:1-23;&amp;amp;version=31" target="_new"&gt;Mark 7:1-16&lt;/a&gt;&lt;br&gt;
2) Beck, Kent. &lt;u&gt;Extreme Programming Explained: Embrace Change (2nd Edition).&lt;/u&gt; Addison-Wesley Professional.  2004.&lt;br&gt;
3) Martin, Robert C. &lt;u&gt;Agile Software Development, Principles, Patterns, and Practices.&lt;/u&gt; Prentice Hall. 2002.&lt;br&gt;
4) Cockburn, Alistar.  &lt;u&gt;Crystal Clear: A Human-Powered Methodology for Small Teams&lt;/u&gt; Addison-Wesley Professional.  2004.&lt;br&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 05 Aug 2007 11:51:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:63e97027-6a49-4d5b-adae-b5de8903dd75</guid>
      <author>Doug Bradbury</author>
      <link>http://blog.8thlight.com/articles/2007/08/05/thats-not-agile</link>
      <category>Craftsmanship</category>
      <category>Process</category>
      <category>doug</category>
      <category>bradbury</category>
      <category>agile</category>
      <category>principle</category>
      <category>value</category>
      <category>religion</category>
      <category>development</category>
    </item>
    <item>
      <title>Shake Things Up</title>
      <description>&lt;p&gt;The most widespread and common greeting in the American culture is the handshake.  Handshakes are shared between anyone meeting for the first time, to finalize a business deal, and to end a conversation.  I spend a good deal of time around 2nd and 3rd generation Korean-Americans.  In Korean culture, like many Asian cultures, the handshake is replaced by bowing.  In these transitional immigrant generations, the bow and the handshake have been merged into one awkward action.  I was recently walking through the reception line at the wedding of 2 second generation Korean-Americans and I went to greet the 1st generation parents.  I was going to try to be respectful and offer a bow instead of a handshake, but just as I began to bend, a large hand was thrust out in front of me.  I felt myself lucky that I didn&amp;#8217;t end up with the guys finger in my nose.&lt;/p&gt;

&lt;p&gt;One of the things I immediately noticed as I began working with the craftsmen at 8th Light is that everyday I walked into the office, every member of the team shook my hand.  As each team member left for the day, he shook the hand of everyone who was left.  I expect this on the first day, as you always shake hands with everyone on your first day.   On the second day, I thought maybe they had all forgotten that they met me yesterday. As I realized that this would continue, It really made me start thinking.  &lt;/p&gt;

&lt;p&gt;As I went to work with another team for a little while I came to really miss the handshakes.  I&amp;#8217;d walk in the morning and maybe get an eyebrow flash from my teammates.  A &#226;&#8364;&#339;Hello&#226;&#8364;&#157; would come if I was really lucky.  I decided enough was enough, so I just started shaking hands.  At first, I got some really weird looks and was left hanging a few times.  The looks seem to ask &#226;&#8364;&#339;Why are you shaking my hand, we see each other every day.&#226;&#8364;&#157;  But slowly it started to catch on.  My  teammates began to expect a handshake from me at the start and end of each day.&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s what I think these bookend handshakes do for a team.
First, believe it or not, a handshake becomes an intimate gesture.  It communicates genuine care and concern for each other.  To me it&amp;#8217;s a physical expression of the XP value of Humanity.&lt;/p&gt;

&lt;p&gt;Second, it communicates respect.  Sometimes design and project discussion can get very heated, especially if you are working with a passionate group of people.  If your days begin and end with a handshake, everyday is bookended by a statement of mutual respect.  There is a proverb that exhorts people to &#226;&#8364;&#339;Not let the sun go down on your anger.&#226;&#8364;&#157;  That handshake is a way to let go any residual anger from the day and commit the next to dealing with each other with respect.&lt;/p&gt;

&lt;p&gt;Third, It&amp;#8217;s an honest statement about the hours you are working and the time you are putting in on the project.  In a handshake-free environment, if I&amp;#8217;ve had to leave the office early, I&amp;#8217;d usually try to sneak out without anyone noticing.  At the time I was in an office culture that promoted flexible hours, but you always felt like people were watching you to make sure you were still putting in your hours.   I always put my time in, but because I sometimes played with my schedule quite a bit, I was always afraid that someone would perceive my time poorly.  When an handshake begins and ends your day, you are being direct and up front about your time.  You are communicating at the start of the day &#226;&#8364;&#339;I&amp;#8217;m here, I&amp;#8217;m ready to work&#226;&#8364;&#157; and at the end of the day &#226;&#8364;&#339;I&amp;#8217;m gone, my day is over.&#226;&#8364;&#157;  There are no apologies, no sneaking in or out, and no elaborate time-tracking system.  Your teammates trust that you are working as much as you should be and you are not likely to try and cheat you company or your team out of your time week-to-week. &lt;/p&gt;

&lt;p&gt;Try it in your team.  It&amp;#8217;s a morale boosting behavior that will cost a team nothing to implement, but will be one baby step to improving the strength and productivity of the team.&lt;/p&gt;</description>
      <pubDate>Thu, 19 Jul 2007 18:55:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:e51b03d9-144a-4ce0-85a8-ab3a3e4b74c7</guid>
      <author>Doug Bradbury</author>
      <link>http://blog.8thlight.com/articles/2007/07/19/shake-things-up</link>
      <category>Craftsmanship</category>
      <category>Process</category>
      <category>Etiquette</category>
      <category>doug</category>
      <category>bradbury</category>
      <category>handshake</category>
      <category>team</category>
      <category>value</category>
      <category>etiquette</category>
    </item>
  </channel>
</rss>
