<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Blah.Blah.Blog</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/" />
<modified>2007-10-17T07:14:37Z</modified>
<tagline></tagline>
<id>tag:www.corvine.org,2007:/blog//1</id>
<generator url="http://www.movabletype.org/" version="3.14">Movable Type</generator>
<copyright>Copyright (c) 2007, Andy Marks</copyright>
<entry>
<title>A development slant  take on an old saying...</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2007/10/a_development_s.html" />
<modified>2007-10-17T07:14:37Z</modified>
<issued>2007-10-17T07:04:18Z</issued>
<id>tag:www.corvine.org,2007:/blog//1.187</id>
<created>2007-10-17T07:04:18Z</created>
<summary type="text/plain">Instead of &quot;If the only tool you have is a hammer, you will see every problem as a nail.&quot; (Abraham Maslow)... Try &quot;If the only tool you have is a portal server, you will see every web application as a...</summary>
<author>
<name>Andy Marks</name>


</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Instead of "If the only tool you have is a hammer, you will see every problem as a nail." (Abraham Maslow)...</p>

<p>Try "If the only tool you have is a portal server, you will see every web application as a portlet"... and probably add 20% to your project as a result of needless complication to design, implementation and development environments.</p>

<p>IMHO, portal servers (everything implementing JSR-168) are a technology still waiting for the right problem to come along.  Unfortunately, too many companies have brought the sales pitch and fork over big $$$ for the IBM and BEA suites and are using it for all web application development, irrespective of how devoid of portal-specific requirements the problem domain is.</p>]]>

</content>
</entry>
<entry>
<title>Tips for Active Pairing </title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2007/09/tips_for_active.html" />
<modified>2007-09-18T21:08:57Z</modified>
<issued>2007-09-19T07:28:28Z</issued>
<id>tag:www.corvine.org,2007:/blog//1.184</id>
<created>2007-09-19T07:28:28Z</created>
<summary type="text/plain">On my current project, the dev team is attempting to adopt pair programming as a standard practice. I&apos;ve only been moderately successful at this and one of the issues faced is that the non-driving part of the pair (the Navigator)...</summary>
<author>
<name>Andy Marks</name>


</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>On my current project, the dev team is attempting to adopt pair programming as a standard practice.  I've only been moderately successful at this and one of the issues faced is that the non-driving part of the pair (the Navigator) wasn't really sure what they should be doing when not driving.  As a result, I saw a lot of "passive pairing" where the Navigator was really just kicking back and watching the Driver code until it was their turn at the keyboard.  To emphasize the sort of behaviour I expect from an engaged, active Navigator, I created a <a href="http://www.xprogramming.com/xpmag/BigVisibleCharts.htm">BVC</a> on the wall of the dev room.  I've reproduced it here in case it proves useful for other people encountering the same questions.</p>]]>
<![CDATA[<h3>As an active pair, I:</h3>

<p><strong>Am thinking ahead of my Driver</strong><br />
- What is the <em>next</em> test?<br />
- What is the <em>next</em> requirement?</p>

<p><strong>Fully understand what the Driver is doing</strong><br />
- Make sure they are constantly explaining what they are doing<br />
- Slow them down if needed</p>

<p><strong>Am performing a continuous code review</strong><br />
- Constantly looking for "broken windows"<br />
- Refactor ruthlessly<br />
- If a needed change is too disruptive now, write it down for later work, or...<br />
- Add it to team technical debt board</p>

<p><strong>Am fully engaged/not bored</strong><br />
- Ensure frequent Driver/Navigator rotation</p>

<p><strong>Do not correct my Driver's spelling errors (when the IDE will pick them up)</strong></p>

<p><strong>Am aware of all the requirements of the story</strong><br />
- Have the story readily accessible, either printed or online</p>

<p><strong>Look for similarities between this story and other stories</strong></p>

<p><strong>Keep my Driver focussed on short deliverables</strong><br />
- Red, Green, Refactor<br />
- Am looking for the next check in opportunity</p>

<p><strong>Make sure all the pre check-in tasks have been completed</strong><br />
- Tests<br />
- Automated quality tests</p>

<p><strong>Critically examine the development process</strong><br />
- How can it be done quicker, better, etc.</p>]]>
</content>
</entry>
<entry>
<title>Use of Standups Considered Harmful?</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2007/05/use_of_standups_1.html" />
<modified>2007-05-21T01:02:33Z</modified>
<issued>2007-05-21T00:04:48Z</issued>
<id>tag:www.corvine.org,2007:/blog//1.183</id>
<created>2007-05-21T00:04:48Z</created>
<summary type="text/plain">Last week, I finished up a short agile mentoring engagement. One of the last comments I made to the development team was &quot;you guys might want to consider not running standups&quot;. Based on the behaviour I&apos;d seen there, I was...</summary>
<author>
<name>Andy Marks</name>


</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Last week, I finished up a short agile mentoring engagement.  One of the last comments I made to the development team was "you guys might want to consider not running standups".  Based on the behaviour I'd seen there, I was fairly sure the advice was sound, but the words still felt <em>very</em> strange coming out of my mouth...</p>

<p>I should note that I'd observed this team's standups for a week or so and they were short, energetic and focussed.  The only issue was the developer's not feeling they got a lot of value out of them.</p>

<p><em>Note: I take most of what should/should not be in a standup from <a href="http://www.thoughtworks.com/PatternsDailyStandupJason%20Yip.pdf">Jason's excellent article</a>.</em></p>]]>
<![CDATA[<p>The factors I took into consideration when offering my advice were:</p>

<ul>
<li>There is a single, centralized development team of 4-5 people all working on the same codebase
<li>The team works in short iterations of 1 week length
<li>Only the developers and Development Manager attended the standup (i.e., all Pigs, no Chickens)
<li>Although the development team is split across two separate rooms, there is a large amount of verbal chatter between the devs, within and across the rooms
<li>Status was tracked on a BVC visible to the entire company (of 14 people)
<li>The team had fallen into a nice groove of producing high quality code at a sustainable pace.
<li>The development team all signs onto a <a href="Campfire">http://www.campfirenow.com/</a> channel as soon as they arrive in the morning and stays monitoring the channel throughout the entire day.
</ul>

<p>It's this last point which made the idea of not requiring a standup compelling.  When observing the standups that were happening, I kept urging the team to present information that would be useful to their fellow developers... but they couldn't think of any.  On checking the logs of the Campfire conversations, everything which I would consider gold standup material had already flowed across the ether at some stage during the day.</p>

<p>In short, I couldn't see any extra value that a standup would bring to the team.  And the struggles the team were having in performing the standup were a sign of this.  </p>

<p>I cannot see myself giving this advice to many (any?) other teams, but I think this is one of those situations where the team is communicating and performing at a level where no additional process is needed to support the way they are working. </p>]]>
</content>
</entry>
<entry>
<title>12 Small Steps for a Story Wall, 1 Giant Leap for Communication</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2007/05/12_small_steps_1.html" />
<modified>2007-05-14T00:01:11Z</modified>
<issued>2007-05-13T23:26:21Z</issued>
<id>tag:www.corvine.org,2007:/blog//1.182</id>
<created>2007-05-13T23:26:21Z</created>
<summary type="text/plain">I&apos;m currently finishing up a short term mentoring engagement with a small web startup who are adopting Agile principles for the first time. In somewhat typical startup fashion, the company (all 14 of them) is located in a 2 story...</summary>
<author>
<name>Andy Marks</name>


</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>I'm currently finishing up a short term mentoring engagement with a small web startup who are adopting Agile principles for the first time.  In somewhat typical startup fashion, the company (all 14 of them) is located in a 2 story apartment, with the development team in the bedrooms upstairs and the sales and marketing people in the living and dining area downstairs.  <em>Bear with me, the relevance of this information will become apparent later on.</em></p>

<p>The client have been doing a great job adopting lighterweight process just from reading books, so I haven't needed to suggest too many changes to their daily working lives, just a tweak here and there.</p>

<p>But by far the simplest change we implemented is bringing the biggest benefits.  The development team were using a story wall on a pinboard to track work during iterations, but due to the layout of the office, the pinboard was located upstairs in the development area and therefore only benefitting the development team itself.</p>

<p>My suggestion was to move the wall downstairs so it was visible to everyone in the entire company.  Almost as soon as doing this, the marketing and sales people started asking questions about the purpose of the wall and quickly understood what information it was showing.  They were most appreciative of being able to see what features were in development, completed or not yet started.  Based on this increased understanding, conversations between the business and the development team increased and were based on a common understanding of the current state of development.  </p>

<p>So, with the cost of a longer trip downstairs to update the story wall for the developers, it's ability to act as an <a href="http://www.agileadvice.com/archives/2005/05/information_rad.html">Information Radiator</a> was increased greatly.</p>

<p>Postscript: 2 days after the story wall was moved downstairs, it was joined by another story wall created by the marketing team to track their tasks :-)</p>]]>

</content>
</entry>
<entry>
<title>The Truths about Estimation</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2007/04/estimation_and_2.html" />
<modified>2007-04-25T04:50:11Z</modified>
<issued>2007-04-25T06:35:46Z</issued>
<id>tag:www.corvine.org,2007:/blog//1.181</id>
<created>2007-04-25T06:35:46Z</created>
<summary type="text/plain">Recently, I&apos;ve been overhearing collegues going through a lengthy estimation process - and all the angst that accompanies such exercises. Doing so reminded me of my own estimation nightmares and some of the general rules I&apos;ve developed/appropriated which I thought...</summary>
<author>
<name>Andy Marks</name>


</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Recently, I've been overhearing collegues going through a lengthy estimation process - and all the angst that accompanies such exercises.  Doing so reminded me of my own estimation nightmares and some of the general rules I've developed/appropriated which I thought I'd share.  Probably not a whole lot new and/or original here, but putting these thoughts to paper is a good way to remind myself of what's important...</p>]]>
<![CDATA[<h2>Estimation is just guessing</h2>

<p>Dress it up with <a href="http://en.wikipedia.org/wiki/Cocomo">fancy</a> <a href="http://en.wikipedia.org/wiki/Function_point_analysis">names</a> all you like, but at it's heart an estimate is a guess.  Whilst I wouldn't recommend using these terms synonymously with clients, so many of the problems people have with estimates are based on over-reliance of their accuracy, so a little expectation setting generally doesn't go astray.</p>

<h2>An estimate is not a quote</h2>

<p>This is an old chessnut, but I found myself explaining the difference between the two terms to an experienced client PM recently, so perhaps it's not as common knowledge as I'd thought...</p>

<p>Think of it this way: ask someone how long it takes them to travel to work each day.  Now ask them the same question again, adding that if they're later than they said, they'll be fired immediately.  Now look at the difference between the two responses.  The first is an estimate, the second a quote.</p>

<h2>All estimation is analogous... eventually</h2>

<p>Analogous estimation is the technical phrase applied to the technique of "if it looks like a duck and walks like a duck, then it will probably take 10 weeks because I built a duck last year in 10 weeks".  All estimation models were derived from empirical research and are therefore effectively analogous estimation.</p>

<p>Why is this important?  Because once you realize that all estimation models are based on numerous highly variable assumptions, you start to see the reason why so many estimates are staggeringly inaccurate.</p>

<h2>The quality of the estimate will not exceed the quality of the analysis upon which it is based</h2>

<p>I <em>think</em> this pearl of wisdom was passed to me by <a href="http://www.agilemetrics.com/aboutus.html">Robin Gibson</a> a few years ago - not sure of the original source.</p>

<p>This is another take on the <a href="http://en.wikipedia.org/wiki/Garbage_in%2C_garbage_out">Garbage In, Garbage Out</a> principle.  In short, you cannot expect a high quality estimate without high quality analysis as input into the estimation.  If there are high levels of risk around requirements or large numbers of requirements are missing, then the quality of the estimate will suffer.  There is no way around this.</p>

<h2>The precision and scale of the estimate should match</h2>

<p><em>(I've seen this one in popular software engineering literature somewhere, but cannot for the life of me remember where.)</em></p>

<p>There's no point presenting an estimate for several years of work in days.  Similarly a short estimate of a couple of days should not be presented as a fraction of a month.  Make the precision of the estimate similar in order to the scale.  In other words:</p>

<table>
<tr>
<td>
If your estimate is...
</td><td>
... then it should be presented as
</td>
</tr>
<tr>
<td>
800 days</td><td>over 2 years
</td>
</tr>
<tr>
<td>
350 days</td><td>1 year
</td>
</tr>
<tr>
<td>
125 days</td><td>4 months
</td>
</tr>
<tr>
<td>
20 days</td><td>1 month
</td>
</tr>
<tr>
<td>
11 days</td><td>2 weeks
</td>
</tr>
</table>

<p>Given the imprecise nature of estimation, there's no point in over-specifying the precision: doing so will lead to a false sense of confidence in the accuracy of the estimate.</p>

<h2>There are <strong>always</strong> too many variables in an estimate to quantify/predict</h2>

<p>So assuming you did build a duck last year in 10 weeks, how likely is it to take 10 weeks this time around.  Consider the following:</p>

<ul>

<p><li> Is it exactly the same sort of duck?  Are there no hidden requirements that end up making it more of a goose?<br />
<li> Will you be using the exact same team as last time?  The same developers?  The same testers?  The same BAs?  The same infrastructure and support teams?<br />
<li> Will you be using the exact same technology stack as last time?<br />
<li> Will the environments into which your duck is being deployed be the same as last time, or is there a new version of PondSphere (TM) to contend with?  And a new team to manage the deployment?<br />
<li> Does all forms of duck manufacture now have to be certified as SOX compliant?<br />
</ul></p>

<p>Invariably the answer to at least one of these questions is "no", at which point your use of analogous estimation will give a rough guide at best.</p>

<h2>Padding an estimate only gives the impression of accuracy</h2>

<p>Although most people have seen the <a href="http://www.amazon.com/exec/obidos/ASIN/0735605351/codinghorror-20">research stating the only way to truly get accurate estimates of any kind is to get right into development</a>, I've worked in many environments where estimates within a 20% tolerance are required well before any form of development has commenced.</p>

<p>Practically, the illusion of accuracy is usually achieved by padding the estimates so amply that the risk associated with early estimation techniques is mitigated by the size of the contingency.</p>

<h2>Achieving accuracy in estimation isn't worth the effort</h2>

<p>Of course, this all depends on your value system, but I think it is fair to say that there should be more important things in a development project than accurate estimates - faster time to market and responding to changing customer requirements being some of them.</p>

<p>Unfortunately, I've seen way too many project environment where external constraints (often project budgeting mechanisms) force accurate estimation and planning to be a more highly held value than they perhaps should be.<br />
  <br />
<h2>Estimates are quantifiable, people aren't</h2></p>

<p>For some inexplicable reason, people working on software development projects tend to not like being considered as quantifiable resources with predictable behaviour.  We're still some way from generating an estimation model that can factor in the marriage breakup of the lead architect half way through the first release and the growing animosity between the BA and PM since the Christmas party.</p>

<p>But as long as people accept that an estimate is a guess likely to be inaccurate for the vast majority of the time, this shouldn't be a problem, should it?</p>]]>
</content>
</entry>
<entry>
<title>Tips for TW Dev Applicants: Rock the Keyboard</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2007/03/tips_for_tw_dev.html" />
<modified>2007-03-18T22:51:34Z</modified>
<issued>2007-03-18T22:05:58Z</issued>
<id>tag:www.corvine.org,2007:/blog//1.180</id>
<created>2007-03-18T22:05:58Z</created>
<summary type="text/plain">TW is in a recruiting frenzy at the moment and two of the mandatory steps for all potential developer hires are (1) a code review asking you to implement a solution to a problem in C# or Java and (2)...</summary>
<author>
<name>Andy Marks</name>


</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>TW is in a <a href="http://www.thoughtworks.com.au/join-thoughtworks.html">recruiting frenzy</a> at the moment and two of the mandatory steps for all potential developer hires are (1) a code review asking you to implement a solution to a problem in C# or Java and (2) a subsequent technical interview with at least 2 consultants.  The principal focus of the technical interview is to examine the solution from the code review and probe deeper into the thought process behind the solution.  For this reason, the technical interview is conducted in a room containing a PC with the source of the code review available within an IDE (e.g., Eclipse).</p>

<p>Note: by the time of the technical interview, the code review has already been checked by other people and considered to be of a sufficient standard to continue the recruitment process.</p>

<p>There are many ways to discover information about the quality of the candidate in this part of the process: some obvious, some not so obvious...</p>]]>
<![CDATA[<p>The sort of questions asked during the technical interview might include:</p>

<ul>
<li> Why did you choose the Strategy pattern for this solution?  Would any others have been appropriate?
<li> What do you think of how you've tested this method?
<li> Did you consider any alternative solutions to this problem?
<li> Can you refactor this class to make this dependency injectable?
</ul>

<p>In many cases, answering these questions mandates the candidate using the keyboard to navigate around and/or change their code review solution to implement suggestions given by their interviewers.  For me, a big indicator in determing how experienced a candidate is how effectively they use the keyboard and keyboard shortcuts to modify code.  If I'm interviewing someone who says they have 5 years experience as a developer, yet they are still using the Edit menu to cut and paste code, then I know they're either:</p>

<ul>

<p><li> Nowhere near as experienced as they claim to be, or<br />
<li> Not competent enough to look for and find mechanisms to increase the speed of their typing (e.g., keyboard shortcuts)</p>

</ul>

<p>Likewise, there is a strong correlation between years spent developing and general typing speed.  Someone who is cutting a lot of code is going to have developed fast fingers.   Ditto for IDE familiarity: I've interviewed people who have used Eclipse for years yet have no knowledge of the refactoring options available on the context menu.  This level of ignorance doesn't make my think they're lying about their experience necessarily, but it certainly casts some doubt over their ability to extract the most power out of their tool set.</p>

<p>The absence of any of these indicators is not necessarily a deal breaker for me in an interview situation, but it does make me probe even deeper with questions to ensure sufficient technical knowledge.</p>]]>
</content>
</entry>
<entry>
<title>Release Management versus Development: The Case for ClearCase</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2007/01/release_managem.html" />
<modified>2007-01-26T22:31:51Z</modified>
<issued>2007-01-27T07:13:13Z</issued>
<id>tag:www.corvine.org,2007:/blog//1.178</id>
<created>2007-01-27T07:13:13Z</created>
<summary type="text/plain">Like many of my collegues, I don&apos;t like ClearCase. After 18 gruelling months in it&apos;s embrace, I&apos;ve found it to be an extremely poor version control system (VCS) for software development. So how it&apos;s become so entrenched within large IT...</summary>
<author>
<name>Andy Marks</name>


</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Like many of my collegues, I don't like ClearCase.  After 18 gruelling months in it's embrace, I've found it to be an extremely poor version control system (VCS) for software development.  So how it's become so entrenched within large IT shops was a source of ongoing bewilderment and concern to me.  My main belief was that the decision over which version control tool to purchase is rarely-if-ever made by the people who will be actually <em>using</em> the tool and I suspect IBM sales people are well versed in mounting a fairly convincing argument for ClearCase when speaking to senior management.</p>

<p>However, I think I may have found a potentially valid reason why ClearCase is the installed VCS in so many shops - and it's all down to the value system of the customer...</p>]]>
<![CDATA[<p>I recently managed to escape the clutches of ClearCase and found myself in the relative nirvana of software development using Subversion.  Yet no sooner had I arrived than whispers started abounding of a corporate move to ClearCase.  With possibly less forethought than desirable I started reeling off my pet hates about ClearCase and before I know it I was attending a meeting with the people championing the CC agenda and presenting my perspectives from the trenches.  </p>

<p>The meeting was somewhat unusual in that whereas I was suspecting it to degenerate into a scrap between the two sides over relative merits, it ended up being very civil and with little/no rebuttal of any of the points I had made.  Also interesting was the realization that I don't think anything I said made a scrap of difference as none of the people I was talking to were developers, they were all release engineers.</p>

<p>Release engineering is another task that I believe should be incorporated into the development team rather than separated into a specialty profession.  If the development team has no responsibility over releasing their software, there is no driver to produce software which is easy to release.  I'm from the "eat your own dog food" school of thought and prefer to have the development team share the pain of software that is difficult to release.</p>

<p>However, in environments with specialized release engineers, I can see the attraction of a VCS which makes constructing a software package from a variety of disparate code branches and labels relatively straightforward.  ClearCase certainly seems to provide a lot of inbuilt support for this phase of software engineering, certainly in comparison to the CVS/Subversion family of VCS which state openly that they don't wish to play in this area.</p>

<p>So in places where the voices of the release engineers are louder and/or more influential than those of the developers, it probably is no surprise that ClearCase has been successful in establishing a beachhead... and even more of a reason to combine the release engineer/software developer roles to ensure the best tool is chosen to satisfy the two main parts of software engineering which depend most on the VCS.</p>]]>
</content>
</entry>
<entry>
<title>Searching for knowledge: a personal metric</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2007/01/searching_for_k_1.html" />
<modified>2007-01-27T04:30:43Z</modified>
<issued>2007-01-27T04:08:53Z</issued>
<id>tag:www.corvine.org,2007:/blog//1.179</id>
<created>2007-01-27T04:08:53Z</created>
<summary type="text/plain">Over the last few weeks, I&apos;ve been in the interesting position of having to come up to speed with a somewhat infamously alien codebase, without the benefit of any experienced senior technical people to answer any key questions regarding the...</summary>
<author>
<name>Andy Marks</name>


</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Over the last few weeks, I've been in the interesting position of having to come up to speed with a somewhat <a href="http://www.eaves.org/blog-archive/000071.html">infamously alien codebase</a>, without the benefit of any experienced senior technical people to answer any key questions regarding the artifact.  Thankfully, through a combination of patience from my customer and sharing the learning experience with another collegue, I think I've progressed along the admittedly steep learning curve quite well, although the trip has not been without the occasional stumble.</p>

<p>Thinking back over this period and my own behaviour, I've noted a couple of work habits which I began using in a fury and then have dropped off quite substantially of late: debugging and IDE-based global string searches across the entire codebase.  On reflection, I think both of these techniques are strong indicators that a developer has a poor mental model of the overall shape of the codebase as there should be no need to resort to using these very blunt instruments in an ongoing fashion when there are far superior alternatives which should make the need for <a href="http://en.wikipedia.org/wiki/Unit_testing">debugging</a> and <a href="http://www.jetbrains.com/idea/">global searching</a> almost disappear.</p>

<p>Unfortunately, I didn't have the foresight to actually measure the number of times I fell back on debugging and/or global searches to answer particular questions, but I think it would make interesting reading as I know the number have dropped off markedly of late.  Perhaps on the next new project...</p>]]>

</content>
</entry>
<entry>
<title>Agile Coaching... isn&apos;t</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2006/11/agile_coaching.html" />
<modified>2006-11-30T02:29:43Z</modified>
<issued>2006-11-30T02:08:27Z</issued>
<id>tag:www.corvine.org,2006:/blog//1.177</id>
<created>2006-11-30T02:08:27Z</created>
<summary type="text/plain">Isn&apos;t real coaching that is, at least according to those who make coaching their sole profession. Having spent yesterday hearing from a wide range of such people, it&apos;s now clear to me what coaching is in it&apos;s strictest sense, and...</summary>
<author>
<name>Andy Marks</name>


</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Isn't real coaching that is, at least according to <a href="http://www.businessthinking.com.au/">those who make coaching their sole profession</a>.  Having spent <a href="http://www.ican.uts.edu.au/conferences/conf2006.html">yesterday</a> hearing from a wide range of such people, it's now clear to me what coaching is in it's strictest sense, and how it differs from the work we do when "coaching" teams in Agile development, which is more of a mentoring/consulting task.<br />
 <br />
In essence, a coach does not provide solutions for the subject to implement, but creates a framework through which the subject derives their own solutions.  This makes the coach more of a facilitator in the process and allows the subject to own the solution fully, having generated it themself.  Therefore, the coach will never take credit for the solution - even if it may have been apparent to them well before the subject.  </p>

<p>A coach needs no deep knowledge in the subject's domain to assist them in discovering their particular solution, but is well versed in applying a question-based framework to encourage the self discovery necessary for the subject to uncover the solution.</p>]]>
<![CDATA[<p>By contrast, an Agile coach is (hopefully) an experienced Agile practitioner who is capable of recognizing incorrect application of Agile thinking and techniques and can suggest corrective action.  Ideally, making the corrective action something which is obvious to the subject is ideal, but not necessary.  Agile coaches are valued for their domain skills and experience and this sets them apart from a pure Coach.</p>

<p>Does this distinction matter all that much?  Not really.  I'll still describe myself as an <a href="http://paultyma.blogspot.com/2006/08/agile-coach-agile-secret-police.html">Agile coach</a> in all but the most purist of circles, although perhaps there is a need of differentiation between a "Coach" (the profession) and "coach" (the task).</p>]]>
</content>
</entry>
<entry>
<title>Let The Wookie Win!</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2006/11/let_the_wookie.html" />
<modified>2006-11-25T06:10:21Z</modified>
<issued>2006-11-25T06:00:50Z</issued>
<id>tag:www.corvine.org,2006:/blog//1.176</id>
<created>2006-11-25T06:00:50Z</created>
<summary type="text/plain">Whilst not one of the most popular quotes from Star Wars, I find it most suitable when you find yourself battling away at a behemoth, only to step back and discover that the battle really isn&apos;t worth winning. Which is...</summary>
<author>
<name>Andy Marks</name>


</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Whilst not one of the most popular quotes from Star Wars, I find it most suitable when you find yourself battling away at a behemoth, only to step back and discover that the battle really isn't worth winning.</p>

<p>Which is the conclusion I came to when I decided not to continue trying to integrate Log4J with Websphere (which is apparently not the walk in the park it should be) and just allowed Websphere to use it's native logging.</p>

<p>In the end, using the native logging system (Java Logging, methinks) gives me everything I need and the pain we were experiencing trying to force Log4J into the picture just wasn't worth the hassle.  </p>

<p><em>One to the the Wookie!</em></p>]]>

</content>
</entry>
<entry>
<title>How redundant is your manager?</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2006/09/how_redundant_i.html" />
<modified>2006-09-27T02:23:41Z</modified>
<issued>2006-09-27T02:14:40Z</issued>
<id>tag:www.corvine.org,2006:/blog//1.174</id>
<created>2006-09-27T02:14:40Z</created>
<summary type="text/plain">Whereas this may not be the definitive KPI for a redundant manager, I&apos;ve seen a fairly high correlation myself so far. To apply this simple criterian to your manager, ask yourself this question: &quot;How many emails do you receive from...</summary>
<author>
<name>Andy Marks</name>


</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Whereas this may not be the <em>definitive</em> KPI for a redundant manager, I've seen a fairly high correlation myself so far.  To apply this simple criterian to your manager, ask yourself this question:</p>

<p>"How many emails do you receive from your manager which have been originally sent to him and he's then forwarded them to you (and possibly others) with no change apart from the addition of an 'FYI'?"</p>

<p>In other words, how much value is being really added to the organization by this individual?  Working within a large corporation, I'm frequently the recipient of emails containing up to three levels of nested "FYIs", as they've trickled down the corporate hierarchy to the worker bees.</p>

<p>Of course, if you find yourself forwarding on the same emails to others with nought but an extra FYI, then you might want to ignore this post :-)</p>]]>

</content>
</entry>
<entry>
<title>Is using Agile a sackable offense in your office?</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2006/06/is_using_agile.html" />
<modified>2006-06-28T22:55:13Z</modified>
<issued>2006-06-28T22:34:41Z</issued>
<id>tag:www.corvine.org,2006:/blog//1.171</id>
<created>2006-06-28T22:34:41Z</created>
<summary type="text/plain">Most organizational office policies seem quite sensible in isolation, but it&apos;s amazing how they can be used for evil instead of goodness when it comes to some fairly well-accepted development practices... at least in some circles. Not surprisingly, the larger...</summary>
<author>
<name>Andy Marks</name>


</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Most organizational office policies seem quite sensible in isolation, but it's amazing how they can be used for evil instead of goodness when it comes to some fairly well-accepted development practices... at least in some circles.</p>

<p>Not surprisingly, the larger the bureaucracy, the more intractable the rules.  For example, these are a couple of ones I've come across on client sites over the last few years:</p>]]>
<![CDATA[<ul>
<li><em>Occupational Health & safety (OHS) rules stating people must be seated no closer than 1.5 metres.</em>  Hmmmm, sounds like one hell of a large monitor would be needed to facilitate pairing in this sort of environment

<p><li><em>Every workstation must have a unique domain logon belonging to it's user and the machine must be locked when no-one is sitting at the console.</em>  Again - sounds reasonable, but when you want to have a local Continuous Integration box running in the development area so people can see what Cruise Control is up to, then things become difficult.  Moveover, every domain logon must map to an employee, which is again problemmatic - assuming there isn't a Mr C. Control working within the organization at that present time</p>

<p><li><em>Revealing your machine login is sackable offense.</em>  My personal favourite and almost impossible to comply with should pairing be a desirable activity on your development team.</p>

</ul>

<p>Practically, these rules are pretty much ignored most of the time, but could you blame a stickler for these policies to effectively veto the introduction of these practices in order to toe the company line?</p>]]>
</content>
</entry>
<entry>
<title>&quot;Someday this project&apos;s gonna end...&quot;</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2006/06/someday_this_pr.html" />
<modified>2006-06-03T07:52:04Z</modified>
<issued>2006-06-03T07:47:30Z</issued>
<id>tag:www.corvine.org,2006:/blog//1.170</id>
<created>2006-06-03T07:47:30Z</created>
<summary type="text/plain">Captain Willard (Martin Sheen) - Apocalypse Now: &quot;every minute I stay in this room, I get weaker, and every minute Charlie squats in the bush, he gets stronger&quot; Me: &quot;every minute I stay in this meeting, I get weaker, and...</summary>
<author>
<name>Andy Marks</name>


</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Captain Willard (Martin Sheen) - Apocalypse Now:<br />
"every minute I stay in this room, I get weaker, and every minute Charlie squats in the bush, he gets stronger"</p>

<p>Me:<br />
"every minute I stay in this meeting, I get weaker, and every minute my team codes stories, they get stronger"</p>]]>

</content>
</entry>
<entry>
<title>Is TDD really so different?</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2006/05/is_tdd_really_s.html" />
<modified>2006-05-06T22:53:13Z</modified>
<issued>2006-05-06T16:08:51Z</issued>
<id>tag:www.corvine.org,2006:/blog//1.169</id>
<created>2006-05-06T16:08:51Z</created>
<summary type="text/plain">Recently, in a conversation to an experienced client collegue, I was explaining the benefits of using coded functional tests as a good form of unambiguous requirements and the conversation finished (due to time constraints) with a comment to me along...</summary>
<author>
<name>Andy Marks</name>


</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Recently, in a conversation to an experienced client collegue, I was explaining the benefits of using coded functional tests as a good form of unambiguous requirements and the conversation finished (due to time constraints) with a comment to me along the lines of "but you cannot code against a test, can you?"  Unfortunately, I had to delay the conversation that would have ensued about TDD, but whilst doing so I had a bit of an personal epithany about one aspect of TDD and it's seemingly "wacky" approach to development as seen by many people.  In essence, it's really very similar to the "classic" cycle of iterative development...</p>]]>
<![CDATA[<table border="1">
<tr>
<td></td>
<th>
Classic Development
</th>
<th>
TDD
</th>
</tr>
<tr>
<td>Step&nbsp;1</td>
<td colspan="2" align="center">Ellicit a requirement from the source</td>
</tr>
<tr>
<td>Step 2</td>
<td>Record the requirement as text in a document</td>
<td>Record the requirement as a test</td>
</tr>

<p><tr><br />
<td>Step 3</td><br />
<td colspan="2" align="center">Code until the requirement has been satisfied</td><br />
</tr></p>

<p><tr><br />
<td>Step 4</td><br />
<td>N/a</td><br />
<td>Remove duplication</td><br />
</tr></p>

<p><tr><br />
<td>Step 5</td><br />
<td colspan="2" align="center"><br />
Lather, rinse, repeat</td><br />
</tr><br />
</table></p>

<p>Fundamentally, the only differences is the medium used to capture the requirements and the "Remove Duplication" step at the end of the TDD cycle, which whilst not proprietary, is hardly groundbreaking.</p>

<p>The key hurdle that people seem to stumble over is the use of a non-documentation form of requirements capture.  Their assumption is that a test in a failing state serves no purpose, which is somehow unlike a requirements' document without any backing implementation.  But both are examples of requirements yet to be implemented.   </p>

<p>If you can get used to the benefits that using a coded test brings you in this area (think lack of ambiguity, guaranteed synchronicity assuming tests are frequently run), then everything else between the two cycles is remarkably similar.</p>

<p>Given this, is TDD really that hard to grok?</p>]]>
</content>
</entry>
<entry>
<title>What&apos;s Post the PIR?</title>
<link rel="alternate" type="text/html" href="http://www.corvine.org/blog/archives/2006/04/whats_post_the_1.html" />
<modified>2006-04-21T16:08:46Z</modified>
<issued>2006-04-21T00:44:24Z</issued>
<id>tag:www.corvine.org,2006:/blog//1.168</id>
<created>2006-04-21T00:44:24Z</created>
<summary type="text/plain">Many of you will recognize the image below as being the last scene from Raiders of the Lost Ark. Specifically, this is the fate of the ark after Indy had been assured that the government had their &quot;best people&quot; studying...</summary>
<author>
<name>Andy Marks</name>


</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.corvine.org/blog/">
<![CDATA[<p>Many of you will recognize the image below as being the last scene from Raiders of the Lost Ark.  Specifically, this is the fate of the ark after Indy had been assured that the government had their "best people" studying it.</p>

<p><img alt="raiders-lost-ark-warehouse.jpg" src="http://www.corvine.org/blog/images/raiders-lost-ark-warehouse.jpg" width="620" height="409" /></p>

<p>This is my mental picture of how the results of most project PIRs (Post Implementation Review) are handled by companies.  Either the results of the PIR are filed away in some labrynthine file server, or the project team disbands and they're lost forever.  Given the fundamental issues that seem to re-occur within environments that run large numbers of big projects, you would hope to find some organized approach to harnessing this collective experience on future projects, yet I've yet to come across such a beastie so far in my professional life.</p>]]>
<![CDATA[<h2>Assessing the validity of PIR comments.</h2>

<p>Another principle failure of PIRs is that they turn into a veritable love fest due to the inability or reluctance (for political reasons) of people to provide honest, constructive criticism.  </p>

<p>To this end, a collegue of mine introduced me to a simple exercise that can be conducted at the beginning of a PIR to get a good guage of the likelihood of the PIR results being a good reflection of the project.  The exercise is a quick anonymous survey of the level of comfort people attending the PIR are feeling with respect to their comments.  The survey is taken anonymously and the collective results immediately published to the entire group to show how likely the PIR comments will be accurate with respect to the real issues that affected the project.  </p>

<p>I'm sure there is a proper term for this type of exercise, but I've been unable to track down any official references after a quick Google.  I tend to use the term "Fear Guage" internally, although there are obviously negative connotations around the "fear" aspect of it.</p>]]>
</content>
</entry>

</feed>