<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bit Motif &#187; agile</title>
	<atom:link href="http://www.bitmotif.com/category/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bitmotif.com</link>
	<description>A Zero Here, A One There</description>
	<lastBuildDate>Mon, 16 May 2011 22:38:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Don&#8217;t Be Afraid to Manage</title>
		<link>http://www.bitmotif.com/agile/dont-be-afraid-to-manage/</link>
		<comments>http://www.bitmotif.com/agile/dont-be-afraid-to-manage/#comments</comments>
		<pubDate>Mon, 16 May 2011 00:14:13 +0000</pubDate>
		<dc:creator>pjberry</dc:creator>
				<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.bitmotif.com/?p=203</guid>
		<description><![CDATA[A couple of months ago I read What Have You Changed Your Mind About. It was a fast and enjoyable read. One essay in particular, &#8220;Political Science&#8221; by Leon Lederman stuck with me. In the essay, which is about the need for a science-literate political system, Lederman states &#8230;I am driven to the ultimately wise [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of months ago I read <a href="http://www.amazon.com/What-Have-Changed-Your-About/dp/0061686549">What Have You Changed Your Mind About</a>.  It was a fast and enjoyable read.  One essay in particular, &#8220;Political Science&#8221; by Leon Lederman stuck with me.</p>
<p>In the essay, which is about the need for a science-literate political system, Lederman states</p>
<blockquote><p>
&#8230;I am driven to the ultimately wise advice of my Columbia mentor, I.I. Rabi, who &#8230; urged his students to run for public office and get elected.  &#8230;We need to elect people who can think critically&#8230; We need a national movement to seek out scientists and engineers who have demonstrated the required management and communication skills&#8230;
</p></blockquote>
<p>While I agree with Lederman about the need for more science-literate representatives in our government, what I am posting about is related to software development.  What is that?  Well what if we take the above and do a few substitutions?</p>
<blockquote><p>
s/run for public office and get elected/apply for management positions and get them/<br />
s/elect/hire/<br />
s/scientists and engineers/developers and architects/
</p></blockquote>
<p>The point is this:  we&#8217;ve all had our share of PHB silliness, but we can&#8217;t expect things to get better if we aren&#8217;t willing to be involved in managing our affairs.  We shouldn&#8217;t be afraid to manage.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitmotif.com/agile/dont-be-afraid-to-manage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Questions To Ask Potential Employers</title>
		<link>http://www.bitmotif.com/agile/questions-to-ask-potential-employers/</link>
		<comments>http://www.bitmotif.com/agile/questions-to-ask-potential-employers/#comments</comments>
		<pubDate>Sun, 15 May 2011 23:17:51 +0000</pubDate>
		<dc:creator>pjberry</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://www.bitmotif.com/?p=337</guid>
		<description><![CDATA[As I&#8217;ve moved back into contracting/consulting, I&#8217;ve been drawing a list of questions to ask potential employers. I won&#8217;t discuss the answers I prefer to hear. But, I think if one knows what answers they&#8217;d like to hear, they are better prepared to evaluate if the employer is a fit for them. Does all of [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve moved back into contracting/consulting, I&#8217;ve been drawing a list of questions to ask potential employers.  I won&#8217;t discuss the answers I prefer to hear.  But, I think if one knows what answers they&#8217;d like to hear, they are better prepared to evaluate if the employer is a fit for them.</p>
<p><strong>Does all of the code compile?</strong></p>
<p><strong>Number of automated tests?</strong></p>
<p><strong>What is your code coverage?</strong> </p>
<p><strong>What is your branch coverage?</strong></p>
<p><strong>What is your average cyclomatic complexity?</strong></p>
<p><strong>If working with legacy code, how long has it been since it was modified?</strong></p>
<p><strong>If working with legacy code, who wrote it, an employee or contractor?</strong></p>
<p><strong>Are you familiar with the <a href="http://www.joelonsoftware.com/articles/fog0000000043.html">Joel Test</a> (or something like it)?  What&#8217;s your score?</strong></p>
<blockquote><p>
If you have the basic infrastructure:<br />
What type of source control do you use?<br />
What tool(s) do you use for continuous/daily builds?<br />
What tool(s) you use for bug tracking?<br />
What tool(s) do you use for deployment?
</p></blockquote>
<p><strong>How long does it take to get a user environment set up?</strong></p>
<p><strong>What type of machines (RAM, CPU, monitor(s) size)? </strong></p>
<p><strong>What type of phones?  Obvious how to hang up, redial, etc?</strong></p>
<p><strong>How easy is it to get conference area?</strong></p>
<p><strong>Do conference areas have projectors?</strong>  </p>
<p><strong>Do conference areas have whiteboards?</strong></p>
<p><strong>Do cubes have whiteboards?</strong></p>
<p><strong>How many managers have programming background?</strong></p>
<p><strong>How many managers to a person?</strong></p>
<p><strong>How are people organized?  Matrix, hierarchical, team?</strong></p>
<p><strong>Who makes the estimates?</strong></p>
<p><strong>What is the basic unit of measurement for estimates?  Hours, days, points, etc?</strong></p>
<p><strong>Type of browser?  Are daily tools dependent upon browser?</strong></p>
<p>And, of course, </p>
<p><strong>Is coffee provided?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitmotif.com/agile/questions-to-ask-potential-employers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Software Commons</title>
		<link>http://www.bitmotif.com/agile/a-software-commons/</link>
		<comments>http://www.bitmotif.com/agile/a-software-commons/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 11:25:17 +0000</pubDate>
		<dc:creator>pjberry</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://www.bitmotif.com/development/a-software-commons/</guid>
		<description><![CDATA[Where are the places where all stakeholders can meet? Not a physical place, but artifacts, tools, etc. Assuming that our stakeholders are comprised of customers, developers, testers, database, support, and deployment working in their own silos, what is the common ground between any two? Worst case: Customer Developer Tester Database Suppport Customer - Requirements Requirements [...]]]></description>
			<content:encoded><![CDATA[<p>Where are the places where all stakeholders can meet?  Not a physical place, but artifacts, tools, etc.</p>
<p>Assuming that our stakeholders are comprised of customers, developers, testers, database, support, and deployment working in their own silos, what is the common ground between any two?</p>
<p>Worst case:</p>
<table style="border:1px solid gray;" border="1"  cellpadding="2" cellspacing="0">
<tr>
<td></td>
<td align="center">Customer</td>
<td align="center">Developer</td>
<td align="center">Tester</td>
<td align="center">Database</td>
<td align="center">Suppport</td>
</tr>
<tr>
<td>Customer</td>
<td align="center">-</td>
<td align="center">Requirements</td>
<td align="center">Requirements</td>
<td align="center">Requirements</td>
<td align="center">Requirements</td>
</tr>
<tr>
<td>Developer</td>
<td align="center">Application</td>
<td align="center">-</td>
<td align="center">Application</td>
<td align="center">DB Schema</td>
<td align="center">Application</td>
</tr>
<tr>
<td>Tester</td>
<td align="center">Bug Report</td>
<td align="center">Bug Report</td>
<td align="center">-</td>
<td align="center">Bug Report</td>
<td align="center">Bug Report</td>
</tr>
<tr>
<td>Database</td>
<td align="center">DB Schema</td>
<td align="center">DB Schema</td>
<td align="center">DB Schema</td>
<td align="center">-</td>
<td align="center">DB Schema</td>
</tr>
<tr>
<td>Support</td>
<td align="center">Application</td>
<td align="center">Application</td>
<td align="center">Application</td>
<td align="center">DB Schema</td>
<td align="center">-</td>
</tr>
</table>
<p>We can see that in a worst-case, siloed organization, the conduit for communication can differ.  Even between two stake holders, the conduit can differ depending on the flow of information (e.g., the conduit between Customer and Support is not the same as Support and Customer).  Each conduit is a chance for miscommunication.  </p>
<p>So, the common ground between any two can vary.  What if we have an idea or issue that spans several silos?  More and possibly very different artifacts will have to be taken into account.  Because these artifacts were created by different groups, there&#8217;s a good chance there is going to be miscommunication and wasted effort.</p>
<p>Now, let&#8217;s tweak the terms like &#8220;Requirements&#8221;, &#8220;Application&#8221;, &#8220;Bug Report&#8221;, and &#8220;DB Schema&#8221; for a best-case description of said artifacts/conduits:  </p>
<blockquote><p>
<strong>Requirements: </strong>Description of what the Application should do with runnable examples and text<br />
<strong>Application:  </strong>The system that will be deployed for users, as well as all the tests, set up scripts, etc<br />
<strong>Bug Report:  </strong>Automated, report-as-soon-as-you-find-it test failure<br />
<strong>DB Schema: </strong>The DDL and DML used in the database in support of the Application
</p></blockquote>
<p>What we really need is something that takes the best-case description of the artifacts and holds them in a common area for all of the stake holders.  This common area would be the spot where we all can talk the same talk, manipulate the necessary artifacts, and if need be, see the appropriate &#8220;view&#8221; (as a Customer, as Tester, etc&#8230;) of the software as a whole.</p>
<p>Where/what is this commons?  Well, it doesn&#8217;t fully exist yet.  Things like <a href="http://fit.c2.com/">Fit</a>, <a href="http://fitnesse.org/">FitNesse</a>, and BDD almost get us there.  The next generation of tools such as <a href="http://studios.thoughtworks.com/twist-agile-test-automation/">Twist</a> get us even closer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitmotif.com/agile/a-software-commons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Principles</title>
		<link>http://www.bitmotif.com/agile/first-principles/</link>
		<comments>http://www.bitmotif.com/agile/first-principles/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 11:30:02 +0000</pubDate>
		<dc:creator>pjberry</dc:creator>
				<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.bitmotif.com/uncategorized/first-principles/</guid>
		<description><![CDATA[I was talking to a friend the other day about agile philosophy and practices. We were talking about priniciples leading to actions, which in turn, lead to other principles. He related an opinion he had received regarding the most important agile principle: A commitment to continual improvement Or taken from the Principles behind the Agile [...]]]></description>
			<content:encoded><![CDATA[<p>I was talking to a friend the other day about agile philosophy and practices.  We were talking about priniciples leading to actions, which in turn, lead to other principles.</p>
<p>He related an opinion he had received regarding the most important agile principle:</p>
<blockquote><p>A commitment to continual improvement</p></blockquote>
<p>Or taken from the <a href="http://agilemanifesto.org/principles.html">Principles behind the Agile Manifesto:</a></p>
<blockquote><p>
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
</p></blockquote>
<p>I believe that if we are serious about producing software that meets our customers&#8217; needs, all other practices and ideas can be traced back to this.  If you can&#8217;t trace a practice back to continual improvement, or if a practice/principle leads to an improvement, but cannot be extended, then you aren&#8217;t going to see real, lasting, long-term improvement.</p>
<p>Too often, when we tackle a larger-scale problem&#8211;say something that is at a multi-team level&#8211;we don&#8217;t keep the idea of continual improvement in mind.  Decisions are made that don&#8217;t take into account that we want to be able to improve even more sometime in the future.  This leads to periods of improvement, followed by a plateau, followed by some backtracking, and then a new improvement.  </p>
<p>If we want to reduce this plateau/backtracking, we must keep in mind that we want our decisions to be in accordance with our need to constantly improve.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitmotif.com/agile/first-principles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DRY &#8212; Not just for code</title>
		<link>http://www.bitmotif.com/agile/dry-not-just-for-code/</link>
		<comments>http://www.bitmotif.com/agile/dry-not-just-for-code/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 11:49:41 +0000</pubDate>
		<dc:creator>pjberry</dc:creator>
				<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.bitmotif.com/agile/dry-not-just-for-code/</guid>
		<description><![CDATA[Don&#8217;t repeat yourself. It is a great advice for writing code. However, it isn&#8217;t the only place it is applicable. Let&#8217;s look at a super simple description of software development roles and their artifacts: Customer: requirements, acceptance tests Developer: code, unit tests, module tests, acceptance tests Tester: module tests, acceptance tests See the overlap? If [...]]]></description>
			<content:encoded><![CDATA[<p>Don&#8217;t repeat yourself.  It is a great advice for writing code.  However, it isn&#8217;t the only place it is applicable.</p>
<p>Let&#8217;s look at a super simple description of software development roles and their artifacts:</p>
<blockquote><p>
Customer:  requirements, acceptance tests<br />
Developer:  code, unit tests, module tests, acceptance tests<br />
Tester:  module tests, acceptance tests
</p></blockquote>
<p>See the overlap?  If customers, developers, and testers aren&#8217;t working together, we are creating waste through duplication.  Even if we are working together, we can do better.  </p>
<p>What if worked in such a way that the customer requirements can be run as the acceptance tests and acceptance tests can be viewed as customer requirements?  What if architectural requirements can be run as unit tests or module tests?  Or, vice-versa?</p>
<p>You can see where I am going with this.  We are still creating a lot of waste because of duplication.  If we can work within some framework (that doesn&#8217;t necessarily mean a tool) that seamlessly allows us to have requirements as tests and the other way around, and reuse tests between customers, testers, and developers, we can make some real gains in efficiency.</p>
<p>Furthermore, working in this manner reduces duplication in communication.  Everybody is working with the same &#8220;stuff&#8221;.  This &#8220;stuff&#8221; serves as documentation as to the expected behavior and real behavior of the system.  There should be less time spent talking about the same thing amongst the various roles.</p>
<p>We are all essentially working on the same &#8220;stuff&#8221;.  So, why not act like it and identify areas of duplication and reuse?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitmotif.com/agile/dry-not-just-for-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From Customer-Approved Software To Customer-Written Software</title>
		<link>http://www.bitmotif.com/agile/from-customer-approved-software-to-customer-written-software/</link>
		<comments>http://www.bitmotif.com/agile/from-customer-approved-software-to-customer-written-software/#comments</comments>
		<pubDate>Mon, 28 Jan 2008 13:42:50 +0000</pubDate>
		<dc:creator>pjberry</dc:creator>
				<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.bitmotif.com/uncategorized/from-customer-approved-software-to-customer-written-software/</guid>
		<description><![CDATA[When we talk about customers with respect to an agile methodology, we often talk about people who have the final say in what is going to be produced and when. Customers make decisions based on feedback from sources such as the current application, the tests for the parts of the application that are currently under [...]]]></description>
			<content:encoded><![CDATA[<p>When we talk about customers with respect to an agile methodology, we often talk about people who have the final say in what is going to be produced and when.  </p>
<p>Customers make decisions based on feedback from sources such as the current application, the tests for the parts of the application that are currently under development, their future needs, and what the development team says they can do in an iteration.  The end result should be customer-approved software.</p>
<p>The implementation of the system outlined above may vary, but they key features remain.  And, I think too often there is an implication that there is a distinct wall between producer (development team) and consumer (customer).  The development team makes the stuff and the customer must approve it.</p>
<p>Contrast this with another approach to creating customer-approved software: have the customer write the software. Supposing the customers are savvy enough and/or have the right tools, if they write the software, it would be customer approved, too.</p>
<p>I actually worked at a place where this was the case.  The first release of the product was written in a scripting language by industrial engineers that knew the domain.  And, you know what?  It worked.  It did what they needed it to do at the time.</p>
<p>Notice I said &#8220;at the time&#8221;.  As time went on, keeping the software &#8220;soft&#8221; proved to be difficult.  Maintainability, extensibility, and testability went out the door.  I don&#8217;t blame the people that wrote it.  That kind of stuff is really part of the software development trade.  In fact, I believe that if some sharp developers had been involved earlier, there would have been few issues.</p>
<p>What if the customer is not savvy enough?  Provided we are always striving to improve our software and development process, I think eventually they will be.  The longer we work with a customer, the more likely we will be creating tools for the customer to write some of the software themselves.  </p>
<p>I am seeing hints of this at my current employer.  On one of our projects we&#8217;ve reached the point where we have DSL for describing and testing our system that is used by developers, testers, and business analysts.  We have super-tight iterations, with very few defects.  If we are going to take a next step, it seems that step would be to use the DSL to create production code.  It&#8217;s the next logical step.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitmotif.com/agile/from-customer-approved-software-to-customer-written-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It Takes At Least A Generation</title>
		<link>http://www.bitmotif.com/agile/it-takes-at-least-a-generation/</link>
		<comments>http://www.bitmotif.com/agile/it-takes-at-least-a-generation/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 11:17:06 +0000</pubDate>
		<dc:creator>pjberry</dc:creator>
				<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.bitmotif.com/agile/it-takes-at-least-a-generation/</guid>
		<description><![CDATA[Why is agile still such a foreign concept? Many software shop are familiar with the name, and some even claim to be agile. Yet, very few are. In many places that claim to be agile, rather than collaboration amongst stake holders, there&#8217;s conflict. The process is more valuable than working, deliverable software. &#8220;We can&#8217;t release [...]]]></description>
			<content:encoded><![CDATA[<p>Why is agile still such a foreign concept?  Many software shop are familiar with the name, and some even claim to be agile.  Yet, very few are.  </p>
<p>In many places that claim to be agile, rather than collaboration amongst stake holders, there&#8217;s conflict.  The process is more valuable than working, deliverable software.</p>
<blockquote><p>
&#8220;We can&#8217;t release your well-tested, customer-requested, money-saving feature now.&#8221;<br />
&#8220;Why?&#8221;<br />
&#8220;Because we only release 3.2 times a year, per our process.  This release would violate the process.&#8221;<br />
&#8220;Process? 3.2?&#8221;<br />
&#8220;Yes.  The process keeps us agile and the .2 helps gives us some buffer.&#8221;<br />
&#8220;I don&#8217;t even know what that means!&#8221;
</p></blockquote>
<p>When does this silliness end?  My guess is about one developer-to-leader generation.  The developers that experienced an agile working environment will want to take it with them as they start leading others.  But, that&#8217;s only when you&#8217;d start seeing <em>some</em> changes. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitmotif.com/agile/it-takes-at-least-a-generation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Killing An Agile Team</title>
		<link>http://www.bitmotif.com/agile/killing-an-agile-team/</link>
		<comments>http://www.bitmotif.com/agile/killing-an-agile-team/#comments</comments>
		<pubDate>Tue, 09 Oct 2007 11:12:46 +0000</pubDate>
		<dc:creator>pjberry</dc:creator>
				<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.bitmotif.com/uncategorized/killing-an-agile-team/</guid>
		<description><![CDATA[Have an agile team? Tired of all those high-quality deliverables and happy customers? Well, there are few simple things you can do to make certain that team will &#8220;fall in line&#8221;. No-Location Separate the team. Make certain the customers, developers, testers, and other stakeholders are not anywhere near each other. As face-to-face communication is the [...]]]></description>
			<content:encoded><![CDATA[<p>Have an agile team?  Tired of all those high-quality deliverables and happy customers?  Well, there are few simple things you can do to make certain that team will &#8220;fall in line&#8221;.</p>
<p><strong>No-Location</strong><br />
Separate the team.  Make certain the customers, developers, testers, and other stakeholders are not anywhere near each other.  As face-to-face communication is the most effective method of communicating complex issues, it must be eliminated.    </p>
<p><strong>Lengthen The Feedback Loop</strong><br />
By making certain that decisions cannot be made &#8220;just in time&#8221;, you can prevent real agility.  Purposeless delays in deploying to production, ridiculously long testing cycles, and a barely working deployment infrastructure can be a real help here. </p>
<p><strong>Time-Consuming Metrics</strong><br />
A superb way to waste time and kill morale is to forcing agile teams to <strong><em>prove</em></strong> they are agile by collecting metrics that do not really mean anything to the end customer.  Extra morale-killing can be achieved by having people track every single task they work on to the hour.</p>
<p><strong>External Organization</strong><br />
Don&#8217;t let the team self-organize.  Hold back key pieces of information that could allow a team to self-organize, such as organizational changes or time line changes.  Be sure to conduct daily meetings that really are just people &#8220;reporting up&#8221;.  </p>
<p><strong>Emasculation</strong><br />
If at all possible, make certain whoever has the ultimate say in what will happen (e.g., the project manager) is completely out of the loop with the day-to-day work.  But, don&#8217;t let the team have any say in how things are going to get done.  Prevent individual and team decision making.</p>
<p>These are just a few simple suggestions.  Be creative.  You can break their will if you put enough effort into it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitmotif.com/agile/killing-an-agile-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

