<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>The Regenerate Web</title>
  <subtitle>facilitating the regeneration of software teams</subtitle>
  <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog"/>
  <link rel="self" type="application/atom+xml" href="http://www.regenerateweb.net/blog/atom/feed"/>
  <id>http://www.regenerateweb.net/blog/atom/feed</id>
  <updated>2007-03-24T14:07:03-05:00</updated>
  <entry>
    <title>Learning About Stuff</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/1361" />
    <id>http://www.regenerateweb.net/blog/node/1361</id>
    <published>2009-02-22T10:52:36-06:00</published>
    <updated>2009-02-22T10:53:14-06:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <summary type="html"><![CDATA[<p>Last Friday, I went to a presentation by <a href="http://www.martinfowler.com/" class="bb-url">Martin Fowler</a>.  You may know Martin From some of his <a href="http://www.thoughtworks.com.cn/what-we-say/books.html" class="bb-url">books</a>, or from his participation in the Agile Alliance, or from his role as Chief Scientist at <a href="http://www.thoughtworks.com/" class="bb-url">Thoughtworks</a>.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Last Friday, I went to a presentation by <a href="http://www.martinfowler.com/" class="bb-url">Martin Fowler</a>.  You may know Martin From some of his <a href="http://www.thoughtworks.com.cn/what-we-say/books.html" class="bb-url">books</a>, or from his participation in the Agile Alliance, or from his role as Chief Scientist at <a href="http://www.thoughtworks.com/" class="bb-url">Thoughtworks</a>.  I have been reading Martins books for years since "Refactoring", and believe him to be one of the best modern authors on software development topics, as he can communicate on several levels simultaneously, and is great at articulating how to get value from ideas, as well as how to implement those ideas (a rare gift in my experience).</p>
<p>Martin's talk was about Domain Specific Languages, which will be the subject of his next book.  He is well into this book, but claims that it will be still one year and a half before publication.  I am not interested in DSL's per se, and I have long been out of the business of writing software for a living, and am mostly focused on requirements engineering, Software quality assurance, project management, and software team management.</p>
<p>This recent focus, does not exempt me from the need to stay current on the most vital abstractions and concepts used in software development.  In order to interact with developers, I will continue to need to understand in some depth, the abstractions that they use to build, and the reasons and benefits for selecting one over another.</p>
<p>Moreover, learning new stuff makes my brain better.  And that, my friends, is what this post is about.  We all need to continually learn new stuff, regardless of how it applies to our job, or life.  We need to try new ideas on like a coat.  We need to experiment with things that we are learning or have become aware of.  We need to adopt new practices (even if we think they are lame) and evaluate them from a practitioners perspective (rather than from a critical distance).  We need to explore bodies of knowledge that are foreign to us, because it makes our brain better.</p>
<p>Regardless of that you do to earn a living, this is true.  When someone throws you a new idea - rather than saying to yourself, "Why would I take the time to understand this, it is no better than what I am doing today.", we should periodically, put on our mental lab coat, and perform an experiment.  We should borrow a page from the scientific method, and formulate a hypothesis and then conduct the experiment, to prove or disprove the hypothesis.  </p>
<p>I have absolutely no reason for implementing DSL's on any of my projects.  I will not be writing any code soon, but I wonder if any of the problems that I will need to solve over the next few years will be enhanced by my deeper understanding of some of the concepts presented to me.</p>
<p>This curiosity allows me to challenge the developers that I work with to be curious as well.  It allows me to ask questions that can change the course of projects.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Early Delivery - Part 2</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/1360" />
    <id>http://www.regenerateweb.net/blog/node/1360</id>
    <published>2009-02-20T22:49:09-06:00</published>
    <updated>2009-02-19T22:53:41-06:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="agile" />
    <category term="risk" />
    <category term="schedule" />
    <summary type="html"><![CDATA[<p>Early delivery has been considered the first commandment of<br />
agile. &nbsp;In the principles behind the Afile Manifesto, the<br />
first paragraphs says:</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Early delivery has been considered the first commandment of<br />
agile. &nbsp;In the principles behind the Afile Manifesto, the<br />
first paragraphs says:<br />
Our highest priority is to satisfy the<br />
customer<br />
through early and continuous delivery<br />
of valuable software.</p>
<p>Early and Continuous delivery of valuable software...<br />
&nbsp;I take this to mean that we are going to structure a project<br />
(or delivery stream), such that usable software "features" are<br />
completed as frequently as possible. &nbsp;The shortens the<br />
feedback loop and allows the customer to decide when sufficient value<br />
has been delivered to justify a deployment or distribution event.</p>
<p>Different software development situations, call for different decisions<br />
regarding deployment:</p>
<p>1) For a company whose primary presence is via software and/or the web,<br />
especially where the revenue is driven by the software (think yahoo or<br />
google), the frequent delivery of new or enhanced features is a way to<br />
drive customer satisfaction. &nbsp;The product manager responsible<br />
for these decisions, strike a balance between new ideas, and<br />
enhancements or fixes to existing. &nbsp;<br />
2) For a more enterprise software application, used by employees of a<br />
company, the cost of deploying and retraining staff on new software<br />
features, and the criticality of correctness. &nbsp;The business<br />
process change management around delivery of new software features may<br />
drive a very different roll-out cycle.<br />
3) A software vendor, selling software to business units within an<br />
enterprise, or small businesses, may have yet another model for making<br />
decisions about deployment. &nbsp;They may be driven by demands<br />
from new customers, and prospects, as well as a backlog of requests<br />
from existing customers. &nbsp;<br />
4) Software that is to be "embedded" in a physical device may have a<br />
completely different decisions cycle, and a much more rigid schedule.<br />
&nbsp;The delivery of the rest of the device into which the<br />
software is to be embedded, and the revenue derived from the sales of<br />
the devices, completely determine the schedule. &nbsp;In this<br />
model, partial delivery has little or minimal value.<br />
5) Software that is deployed in industries that are heavily regulated<br />
(blood bank) or that have critical quality requirements<br />
(military/aerospace) may have much more rigid schedules that are driven<br />
by decisions made well before the development starts. &nbsp;In this<br />
model, the ultra-high cost of quality assuranceand regulatory<br />
certification reduces the value of partial delivery to near zero.</p>
<p>It is easy to see why the value of agile principles is readily apparent<br />
to some, and a complete mystery to others. &nbsp;It is the decision<br />
model that works in between need and deployment that determines the<br />
value of early or frequent delivery. &nbsp;From a whole project<br />
perspective, this is clear. &nbsp;But let's look from a<br />
intraproject perspective.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Early Delivery</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/1359" />
    <id>http://www.regenerateweb.net/blog/node/1359</id>
    <published>2009-02-19T05:33:33-06:00</published>
    <updated>2009-02-19T22:52:25-06:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <summary type="html"><![CDATA[<p>Glen Alleman of the Herding Cats Blog in his post <a href="http://feeds.feedburner.com/%7Er/typepad/HerdingCats/%7E3/538295757/make-speed-not-haste.html">"Make<br />
Speed Not Haste"</a> has once again taken an<br />
agile concept out of context. &nbsp;In this case, it is about<br />
"early delivery". &nbsp;</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Glen Alleman of the Herding Cats Blog in his post <a href="http://feeds.feedburner.com/%7Er/typepad/HerdingCats/%7E3/538295757/make-speed-not-haste.html">"Make<br />
Speed Not Haste"</a> has once again taken an<br />
agile concept out of context. &nbsp;In this case, it is about<br />
"early delivery". &nbsp;</p>
<div px="">
"Instead if seeking to be<br />
early how about seeking to On Time. The planned need time. The date<br />
that the plan shows we need this item? Just having that date is not<br />
sufficient of course. The date needs to have cost and schedule margin.<br />
How much, that needs to thought through as well.<br />
&nbsp;&nbsp;&nbsp; Having worked<br />
on large complex projects with software, firmware, hardware and humans<br />
all interacting a critical question is always asked:</p>
<div><em>If we show up<br />
early can all the other elements of the project to the right of this<br />
date, be shifted to the left?<br />
</em></div>
<p>If not, it's a waste of effort to show up early. And there is<br />
likely a downside to doing so."
</div>
<p>In Glen's post, he sounds like he equates<br />
early delivery as equating to "ahead of schedule". &nbsp;This is<br />
not, in fact, what the agile community means or intends.<br />
&nbsp;Agilists who talk about early delivery are describing the<br />
process of scheduling incremental delivery to expedite the most<br />
valuable, risky, or juicy features of a software product so that they<br />
can be deployed, tested, or sold, as early as possible. &nbsp;The<br />
notion is that a - the shorter the timeline between business need and<br />
delivery, the less likelihood that the business will have changed out<br />
from under the requirements. &nbsp;The faster we can deliver<br />
product, the faster we get paid. &nbsp;The faster we get something<br />
working, the faster we can validate our design assumptions and<br />
incorporate feedback into the remaining features.<br />
Most of all early delivery is about arranging the sequence in<br />
the schedule, not working out of sequence, or ahead of<br />
shedule.&nbsp;<br />
Not too long ago, I saw an e-book <a href="http://www.rocksintogold.com/" target="_blank">"Rocks<br />
into Gold"</a><br />
by <a target="_blank" href="http://www.clarkeching.com/">Clark<br />
Ching</a> that ties this notion of early delivery to creative<br />
solutions for the economic crisis. &nbsp;<br />
The perceived evils that the concept of early delivery is<br />
trying to address occur in projects with long timeframes between the<br />
identification if business need and the delivery of value.<br />
&nbsp;The evils that can be pervasive in this context are:<br />
1) Your product is obsolete before it is delivered - this<br />
occurs when the business need changes but your deliverable does not.<br />
&nbsp;Risks around too little, too late. &nbsp;<br />
2) Your project is canceled before it is complete - market or economic<br />
conditions call for reduced spending, and the project's doesn't<br />
show&nbsp;return on investment meaningful ROI until the company is<br />
projected to be bankrupt.<br />
3) Your product is delivered, and is not well received in the<br />
market or user community, you are then required to make many<br />
modifications that delay the delivery of additional value, and reduce<br />
the return on investment. &nbsp;(Think windows vista).</p>
    ]]></content>
  </entry>
  <entry>
    <title>Procrastination vs. Iteration</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/1358" />
    <id>http://www.regenerateweb.net/blog/node/1358</id>
    <published>2009-02-16T12:23:26-06:00</published>
    <updated>2009-02-16T12:23:26-06:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="Iterative" />
    <category term="Planning" />
    <category term="Progressive Elaboration" />
    <category term="Rolling Wave" />
    <category term="Time Span" />
    <summary type="html"><![CDATA[<p>In his excellent management skills blog, Tom Foster posts a brief series on <a href="http://www.managementblog.org/archives/2009/02/11/procrastination-killed-it/" target="_blank">Procrastination</a>.  Brad, a middle manager, procrastinates and brings the organization to a state where they are months behind on a major project.  Tom spends a lot of time talking about time-span, as a predictor of management qualification.  I appreciate this, as it has made me more aware of my limitations.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>In his excellent management skills blog, Tom Foster posts a brief series on <a href="http://www.managementblog.org/archives/2009/02/11/procrastination-killed-it/" target="_blank">Procrastination</a>.  Brad, a middle manager, procrastinates and brings the organization to a state where they are months behind on a major project.  Tom spends a lot of time talking about time-span, as a predictor of management qualification.  I appreciate this, as it has made me more aware of my limitations.</p>
<p>I can't help but ask what is someone to do, to help an employee (or manager, supervisor, or executive) to improve their time span.  There are many symptoms of a person who is expected to work beyond his time span.  In my experience, most people, get used to working within a certain time span.  The longer they are in a role, without specific challenges to increase that time span, the harder it will become for them to improve this capability.</p>
<p>Here are two tools that can be coached into a person, to help them become more effective at longer time span tasks:</p>
<p>1) Progressive Plan Elaboration - Start with a plan that is at a very high level, where the plan deliverables are each about the size of the person's normal time span without worrying about smaller details.  Order these deliverables in a reasonable sequence without worrying about smaller details.  Agree on a schedule for starting work on each of these deliverables, and make sure that the plan includes a task to plan the smaller details of each deliverable, before the work on that deliverable is scheduled to begin.  This technique works because most of us get hung up around the many details, rather than the basic work structure.  We worry about things that we won't know until we have done some of the work, and so we can't always plan in detail in advance.  For some people who think from the details up, this can be paralyzing, and the top down approach, ignoring the details until we are close up can really help.</p>
<p>2) Iterative Measurement - There are some times when the work cannot be broken up into discrete deliverables, other times, when there are many deliverables being worked on in parallel.  Project Plans with these features can be difficult to organize, so we can break things into discrete time boxes or iterations.  This specific work (list of tasks) will get done in this time frame (use a iteration time span that is within your graps).  Make sure that you are planning each time box in advance, enough to make work assignments and manage schedules.  </p>
<p>How could Brad, in Tom Foster's post, use these two approaches to reduce the impact of procrastination?  It sounds like Brad has a team of supervisors who can get the work done.  He could probably work with them to set up a deliverable based plan, and have them work the schedule, and report the details of the plan for each deliverable before the work on that deliverable is stared.  Alternatively, he could break the work into time boxes that he can manage (2 months) and set goals that are 2 months out and work toward those, re-establishing the goals, every months for a 2 month period.  This approach could be called <a href="http://pmcrunch.com/project_management_process/rolling-wave-planning-and-progressive-elaboration/" target="_blank">"rolling-wave" planning</a> because there are overlaps between the iterations or time-boxes.  If every month, I plan two months out, then I can respond to problems in the now, and adjust the plan, before a crisis becomes intense.  By measuring my progress each month, I can feel myself starting to get behind, and I can adjust, rather than simply waiting for time to run out and making a mad dash to the goal.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Why velocity isn&#039;t as bad as Glen says</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/1356" />
    <id>http://www.regenerateweb.net/blog/node/1356</id>
    <published>2009-02-07T09:05:45-06:00</published>
    <updated>2009-02-07T10:26:08-06:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="agile" />
    <category term="measurement" />
    <category term="process" />
    <summary type="html"><![CDATA[<p>Glen Alleman of the <a href="http://herdingcats.typepad.com/my_weblog" target="_blank">Herding Cats blog</a> is one of the most experienced<br />
project managers I have ever read. &nbsp;His background is amazing.<br />
&nbsp;He is bright, and has practical knowledge of projects that I<br />
will<br />
never have. &nbsp;However, he is missing the point on agile and<br />
velocity.<br />
I recently read his post <a href="http://herdingcats.typepad.com/my_weblog/2009/01/simple-never-is.html" target="_blank">"Simple Never Is"</a> and have this response to offer.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Glen Alleman of the <a href="http://herdingcats.typepad.com/my_weblog" target="_blank">Herding Cats blog</a> is one of the most experienced<br />
project managers I have ever read. &nbsp;His background is amazing.<br />
&nbsp;He is bright, and has practical knowledge of projects that I<br />
will<br />
never have. &nbsp;However, he is missing the point on agile and<br />
velocity.<br />
I recently read his post <a href="http://herdingcats.typepad.com/my_weblog/2009/01/simple-never-is.html" target="_blank">"Simple Never Is"</a> and have this response to offer.</p>
<p>I have been working on software projects for some 20 years, and while I<br />
am not a practitioner of any formal agile methodology either project<br />
management or software development, I have been exposed to incredibly<br />
ad hoc practices in managing software projects. &nbsp;I agree with<br />
Glen<br />
when he says that agile (spokesmen) railing against traditional project<br />
management have never been exposed to good traditional software<br />
management practices. &nbsp;Most project managers that I have<br />
worked<br />
with, take a couple classes, manage a couple projects, and maybe get a<br />
PMP cert and then do the same thing over and over, with varying<br />
results, because they personally suck, not because their methodology is<br />
fundamentally flawed. &nbsp;I have been this project manager, and I<br />
sucked as well. &nbsp;I think that most of this is because the<br />
organizations that I have worked for did not sponsor, fund, or require<br />
good project management practices.</p>
<p>Agile, and specifically scrum, are a reaction to the suckage.<br />
&nbsp;It<br />
is the project team reacting to the fact that project managers don't<br />
use practices that help. &nbsp;What scrum and other agilish methods<br />
and<br />
practices around project management do is help the team remove two<br />
specific smells from&nbsp;project management:</p>
<ul></li>
<li>plan fiction<br />
- the two<br />
most prevalent fictions I have experienced in project plans are a)<br />
plans that don't reflect how the work is really done b) capture of<br />
partial task completion in percent based on the developers opinion.<br />
&nbsp;Neither of these conditions necessitate a deliberate<br />
deception,<br />
but can be the simple result of laziness or communication issues.<br />
&nbsp;</li>
</ul>
<ul></li>
<li>inconsistent<br />
plan maintenance - when<br />
at the outset of a project, there is no establishment of team values<br />
and rules around how estimates will be performed, adjusted and<br />
maintained in the plan, how the plan will be elaborated, what<br />
acceptable task effort is. &nbsp;When there is no enforced<br />
measurement<br />
frequency, or commitment around reflecting the current work breakdown<br />
and task sequence in the plan, even though it changes from week to<br />
week, then the plan itself becomes useless.</li>
</ul>
<p>The thing that Glen is missing is that<br />
 style="font-weight: bold;"&gt;velocity is not a project<br />
completion measure, but a team productivity<br />
measure. &nbsp;Agile project management is more about<br />
team than<br />
project. &nbsp;Thus it makes sense that the most visible measure is<br />
team productivity, not project progress. &nbsp;From a project<br />
progress<br />
perspective, velocity is exactly what Glen says - predicting the future<br />
by evaluating the past. &nbsp;He calls this driving by rear view<br />
mirror. &nbsp;Velocity, however, is good for the team. &nbsp;It<br />
tells<br />
them whether their current pace is likely to match&nbsp;the<br />
published/committed schedule, and when measured frequently enough (like<br />
every week), it tells them early enough, that they can<br />
 style="font-weight: bold;"&gt;decide to adjust<br />
something to stay on schedule. &nbsp;</p>
<p>Velocity is a factor that is involved in the measurement of current<br />
projected duration. &nbsp;Current projected duration is a simple<br />
measure - remaining work / average velocity = projected duration.<br />
&nbsp;This measure has a bunch of assumptions:</p>
<ol>
<li>productivity<br />
is the primary predictor of duration - this is a big<br />
leap, but I think that this is what Glen reacts to, because there are<br />
not many large projects where this is true of the project overall.<br />
&nbsp;However for many software projects during the development<br />
milestone, the team is focused on this, and are held accountable for<br />
this and this alone.</li>
</li>
<li>there is<br />
enough parallelism in the plan that sequencing of task<br />
execution is not rigid - that is the team can reassign<br />
tasks and<br />
resequence tasks to mitigate the impact of delays on one task or<br />
deliverable.</li>
</li>
<li>the plan is<br />
updated at least as frequently as it is measured -&nbsp;&nbsp;As<br />
the work goes on, the plan is updated - newly discovered work<br />
is added into the plan, and work that is determined to be less, or not<br />
necessary is removed from the plan. &nbsp;that is, remaining work<br />
is<br />
not only adjusted by the work complete, but by periodic adjustments to<br />
task estimates, and by addition of tasks when new work or re-work is<br />
required.</li>
</li>
</ol>
<p>I think that Glen's characterization of velocity as a "rear view<br />
mirror" and "yesterday's weather" metric is largely because of his<br />
believe that past performance is not always a good indicator of future<br />
results. &nbsp;While this is true, velocity and current projected<br />
duration are useful metrics that can be applied in many ways to measure<br />
productivity and schedule. &nbsp;Glen says that velocity is a level<br />
of<br />
effort measure, and I disagree. &nbsp;Here's why: </p>
<div>
Remaining work is always an estimate. &nbsp;Properly calculated,<br />
velocity is the sum of the effort estimates for<br />
the completed tasks for a period, and requires that the task estimates<br />
not be adjusted during<br />
the measurement period when the tasks are completed. &nbsp;Velocity<br />
is meaningless if not used to project duration, therefore<br />
velocity must be in the<br />
same units as remaining work. &nbsp;</div>
<p>If calculated this way it is not, as Glen suggests, a LOE measure, but<br />
much closer to EV, because it approximates the budgeted effort.<br />
&nbsp;The thing about velocity that many project managers struggle<br />
with<br />
is that it is not precise, and it doesn't contemplate many aspects of<br />
the project timeline, only team productivity. &nbsp;I believe this<br />
is<br />
because agile disciplines are mostly focused on the behaviors of the<br />
team, and increasing/maximizing team productivity, and as a result, the<br />
delivery of value by the team.</p>
<p>Here are some things that I have done with velocity (in combination<br />
with other measures):</p>
<ol>
<li>Working<br />
backward from an published end date and remaining work, assuming<br />
resource<br />
allocation is constant, we can calculate required periodic velocity -<br />
or the amount of work that must be completed per period (week?) on<br />
average to acheive<br />
completion by the end date. &nbsp;I use this to ensure that we are<br />
planning (committing) to complete<br />
enough work each period (week) to stay on schedule. </li>
</li>
<li>We can capture personal velocity metric to capture each<br />
team<br />
members average productivity, versus their own estimates. &nbsp;I<br />
have<br />
measured velocity vs. committment to help team members plan more<br />
effectively, and to help the team re-allocate work to stay on target.<br />
&nbsp;This is a great help to managers who want to coach developers<br />
into higher performance, on both development and estimation. &nbsp;</li>
</li>
</ol>
<p>In my experience,&nbsp;velocity alone is insufficient for many<br />
projects, as it doesn't really contemplate the complexity of external<br />
dependencies, interactions between teams, etc. When these factors are<br />
in play additional measures can be devised or adopted to present<br />
conditions where the project is at risk.&nbsp; When my team is<br />
largely<br />
in control of the project and there are fewer connections and<br />
dependencies, I have experienced the benefit of this simple measure<br />
(velocity) because it is easy to understand, and difficult to fake out.<br />
&nbsp;These two factors allow a development of trust between<br />
project<br />
manager and team and a focus on solutions (adjusting the plan).</p>
    ]]></content>
  </entry>
  <entry>
    <title>Metaphors in Requirements</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/1354" />
    <id>http://www.regenerateweb.net/blog/node/1354</id>
    <published>2008-09-19T22:59:35-05:00</published>
    <updated>2008-09-23T22:06:00-05:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="metaphors" />
    <category term="requirements" />
    <summary type="html"><![CDATA[<p>This week I was asked to review job descriptions for analyst roles within our IT function.  The roles were "Analyst, Business Systems", and "Senior Analyst, Business Systems".<br />
The person who asked me was looking for my opinion because I am strongly opinionated, blunt, and have experiencing hiring and leading business analysts and requirements engineers.  She wanted to understand the difference between an analyst and a senior analyst.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>This week I was asked to review job descriptions for analyst roles within our IT function.  The roles were "Analyst, Business Systems", and "Senior Analyst, Business Systems".</p>
<p>The person who asked me was looking for my opinion because I am strongly opinionated, blunt, and have experiencing hiring and leading business analysts and requirements engineers.  She wanted to understand the difference between an analyst and a senior analyst.</p>
<p>Other than the expression of leadership within a project or team context that I would expect of any senior contributor, my answer had to do with metaphors.</p>
<p>Metaphors are the solid business abstractions that software is designed around.  Metaphors are the unambiguously defined concepts that ground the business process.  Metaphors are the litmus test to see if requirements are cohesive and complete.  If your metaphors suck, so do your requirements.  </p>
<p>Back in the '90s when I was learning object oriented application design (OOAD) we were taught that each application or major feature had a "central object" that was the focus of it's existence.  Microsoft word has a "document".  Every e-mail client has a post or a message.  This central object is the metaphor around which the application is designed, we just didn't call them metaphors back then.</p>
<p>When designing an application all of your actions are performed on metaphors, all of your business rules contemplate metaphors, and your data model expresses your knowledge of your metaphors.  Your metaphors are the essence of your understanding and modeling of the REAL BUSINESS stuff that your users and customers have to deal with in the REAL WORLD as part of their job.  The more your metaphors align with reality, and the more you can eliminate ambiguity among and between metaphors in your requirements, the easier it will be for software designers, architects, and developers to model and fashion a system around them.</p>
<p>That's my story and I am sticking to it.  The senior analyst gets this, and carefully and thoughtfully identifies, defines, and clarifies essential metaphors within business requirements, and knows the the requirements aren't complete until all of the metaphors defined hold together with the business rules and actions required.</p>
<p>Metaphors work most effectively when you can get your user community to communicate (to you, and to each other) in terms of metaphors that you helped define.  When you have defined useful metaphors that clarify the business process, your users will adopt your terminology because it helps them understand what is important.  Then in that context your software (being true to those metaphors) will be intuitive.</p>
<p>An analyst can capture and document the business process.  The senior analyst (one with mastery) can change the conversation casting metaphors that help the business community define its value proposition and supporting processes more effectively.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Requirements Success Factors</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/1352" />
    <id>http://www.regenerateweb.net/blog/node/1352</id>
    <published>2008-09-13T20:41:54-05:00</published>
    <updated>2008-09-14T12:25:37-05:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="Interviews" />
    <category term="abstraction" />
    <category term="requirements" />
    <category term="semantics" />
    <summary type="html"><![CDATA[<p>Last January my role was redefine, and since then I have been managing two teams covering diverse aspects of two software programs.  The first team is responsible for requirements, functional design, quality assurance, and the second team is responsible for support.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Last January my role was redefine, and since then I have been managing two teams covering diverse aspects of two software programs.  The first team is responsible for requirements, functional design, quality assurance, and the second team is responsible for support.</p>
<p>In this role, I have been focused on analysis and have been interviewing more business analyst type resources than I have before.  I don't call them business analysts, although my company has a job description for "senior analyst, business process".  The reason is because their job is not to analyze business process, their job is to elicit, understand, organize and document requirements for software products.  I prefer to use the term "Requirements engineers", and I like to talk about requirements engineering because requirements are not simply a description of the current or desired business practice, or a wish list.  Requirements are a high cohesion document, describing capabilities that are required to deliver specific business value through software automation.</p>
<p>In a recent interview of a candidate for a contract "requirements engineer", I asked a question that I usually ask candidates of any skillset - "What the top three critical success factors for practitioners of ?"</p>
<p>My friend Johanna Rothman would say that this is not a very good behavior description question, because it does not give the interviewee an opportunity to tell how he has done this.  I believe that it is a very good question, because it asks two things at once?  Does this candidate see him or herself as a practitioner of a discipline, or as someone doing a job.  It also forces them to describe how they practice this skill set.  If this answer rolls off of their tongue, then they have spent some time thinking about how to do a better job.  If they struggle with it, it is likely that they don't think about it much, they just do it.</p>
<p>Then there is the answer it self - this tells me what they think is important.  I usually ask this question towards the end of the interview, after I have already asked the behavior description questions.  I look for answers that are cohesive with the earlier responses, to see if they are spitting out what they think I want to hear, or they practice what they preach.  </p>
<p>This candidate did pretty well - after he answered, he asked me what I thought the three critical success factors were.</p>
<p>My answer:</p>
<p>Semantic Clarity or Disambiguation - terms, and concepts, especially metaphors must be precisely defined.</p>
<p>Cohesion - the document must add up with mathematical precision.</p>
<p>Organization, especially abstraction or generalization - the bases of software is abstraction, and this must begin with requirements, classes of problems, value propositions must be clearly identified and categorized.</p>
<p>His answer:</p>
<p>He had cohesion and disambiguation or something close to it, but substituted scope management for organization.  </p>
<p>I don't think he is wrong, but in my organization, scope is fixed after requirements, not before.  This is because premature scope management inhibits value delivery, IMO.  </p>
<p>I think I'll hire him...</p>
<p>-- Correction --</p>
<p>My candidate did not have cohesion, he said communication, and he talked about making sure that each person walks away from a conversation with the same understanding of the topics discussed.  I agree that this is a success factor for gathering requirements.  Certainly anyone who goes into a business to understand what is required, in order to add some specific value to the business must have ample communication skills, and most importantly, establish appropriate feedback mechanisms to ensure that the understandings are shared.  This for me is a component of semantic clarity and disambiguation, call it a sub-factor.</p>
    ]]></content>
  </entry>
  <entry>
    <title>I&#039;m Back</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/1351" />
    <id>http://www.regenerateweb.net/blog/node/1351</id>
    <published>2008-09-13T20:18:02-05:00</published>
    <updated>2008-09-13T20:18:29-05:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <summary type="html"><![CDATA[<p>I didn't realize how long it has been since I posted.  I have enjoyed sharing my thoughts, but this last year has been a real challenge.  I have truly had a year of death-march-groundhog-day at work, while away from work I have been consumed by some personal activities that have been really taking a lot more time than I expected.  Nothing catastrophic, yet.  Just stuff.  It happens.<br />
I just wanted to drop a post and let you know that I am back - I never really left, but every time I had something to post, it was pretty negative, so I just didn't.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I didn't realize how long it has been since I posted.  I have enjoyed sharing my thoughts, but this last year has been a real challenge.  I have truly had a year of death-march-groundhog-day at work, while away from work I have been consumed by some personal activities that have been really taking a lot more time than I expected.  Nothing catastrophic, yet.  Just stuff.  It happens.</p>
<p>I just wanted to drop a post and let you know that I am back - I never really left, but every time I had something to post, it was pretty negative, so I just didn't.</p>
<p>I hope 2008 finds you well, and I will be able to get some new ideas out here soon, like tonight.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Priorities</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/363" />
    <id>http://www.regenerateweb.net/blog/node/363</id>
    <published>2007-09-20T21:20:58-05:00</published>
    <updated>2007-10-10T07:32:21-05:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="consensus" />
    <category term="Planning" />
    <summary type="html"><![CDATA[<p>Priorities - a cautionary tale<br />
Earlier this month was the first time in twenty years that I have not<br />
gone to work<br />
late on the first day of my kid's school. &nbsp;Don't get me wrong,<br />
I still have kids in school, it is just that due to a conflict between<br />
other work and personal schedules, I needed to schedule a critical<br />
meeting at work this morning. &nbsp;</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Priorities - a cautionary tale<br />
Earlier this month was the first time in twenty years that I have not<br />
gone to work<br />
late on the first day of my kid's school. &nbsp;Don't get me wrong,<br />
I still have kids in school, it is just that due to a conflict between<br />
other work and personal schedules, I needed to schedule a critical<br />
meeting at work this morning. &nbsp;</p>
<p>In my family, we have a tradition, that on the first day of school, my<br />
wife and I drive or walk the kids to school or load them on the bus,<br />
and spend some time together over breakfast remembering the summer, and<br />
thinking about how they have grown, or any school concerns we have.<br />
&nbsp;Usually my wife is concerned about being alone more.<br />
&nbsp;Over the years it has been a precious tradition, and my wife<br />
and I have come to rely on it. &nbsp;My kids have too.<br />
&nbsp;That day my 8th grader was unhappy that I was not going to be<br />
there to see him off to school. &nbsp;</p>
<p>I was scheduled to be off work the following day, as I was building a<br />
storage shed in my<br />
backyard. &nbsp;Since I arranged for a friend to come and help me<br />
with that, I had already ordered the lumber and torn down the old shed,<br />
when this meeting came up, I didn't want to try to reschedule the shed<br />
project. &nbsp;</p>
<p>My attitude that morning was one of resentment. &nbsp;I had very<br />
little confidence that this meeting would accomplish it's objective.<br />
&nbsp;We had a specific technology problem that we had been<br />
postponing solving for 6 months. &nbsp;Several times people had<br />
offered suggestions and attempted to build consensus around a solution<br />
and it had not happened. &nbsp;I was one of those and I got beaten<br />
and bruised for my effort. &nbsp;Our project was critically late,<br />
and at risk of failing it's political viability date. &nbsp;That is<br />
the date at which if we haven't delivered, it is not politically viable<br />
to be affiliated with the project. &nbsp;</p>
<p>Before the meeting I said this prayer:</p>
<div>Dear God, I<br />
pray specifically for this meeting, its outcome,<br />
and its potential to become a ruck. &nbsp;I ask that you would<br />
intervene and allow participants to behave rationally, and that<br />
consensus would emerge. &nbsp;I also pray that a plan for action<br />
around implementing the solution would also emerge that allows us to<br />
deliver before our project ceases to be politically viable. &nbsp;</div>
<p>In spite of my poor attitude, the meeting did go well and we did reach<br />
consensus.</p>
<p>So why is this about priorities? &nbsp;Because I had a personal<br />
conflict of priorities around this meeting. &nbsp;This meeting<br />
became<br />
critical, because of our lack of priority around resolving this issue,<br />
which has now become the critical path of our project. &nbsp;As a<br />
manager, I recognize that part of my job is to make sure that I (or<br />
someone I assign) control<br />
the critical path of each project by making sure that all the<br />
appropriate decisions get made before they hit the critical path.<br />
&nbsp;While there are always things that happen that are beyond our<br />
control that change the critical path - resource issues, and external<br />
forces that are unforseen, but the vast majority of things are well<br />
within our control, if we just would exercise that control.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Losing It... and Finding It Again!</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/362" />
    <id>http://www.regenerateweb.net/blog/node/362</id>
    <published>2007-09-20T21:04:48-05:00</published>
    <updated>2007-09-20T21:06:10-05:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="personal growth" />
    <summary type="html"><![CDATA[<p>Losing It... &nbsp;(and Finding It Again)<br />
Just dealing with the facts of a meltdown are not enough.<br />
&nbsp;Last<br />
week, I had such a meltdown. &nbsp;The circumstances are less<br />
relevant<br />
than the damage and subsequent damage control that such an event can<br />
cause. &nbsp;</p>
<p>In a phone conversation with a liaison from a software consulting firm<br />
that I employ, I lost my temper. &nbsp;I said things that threaten<br />
the<br />
relationship, that could make working with this person, and his firm<br />
much more difficult. &nbsp;</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Losing It... &nbsp;(and Finding It Again)<br />
Just dealing with the facts of a meltdown are not enough.<br />
&nbsp;Last<br />
week, I had such a meltdown. &nbsp;The circumstances are less<br />
relevant<br />
than the damage and subsequent damage control that such an event can<br />
cause. &nbsp;</p>
<p>In a phone conversation with a liaison from a software consulting firm<br />
that I employ, I lost my temper. &nbsp;I said things that threaten<br />
the<br />
relationship, that could make working with this person, and his firm<br />
much more difficult. &nbsp;</p>
<p>I let the frustration, and annoyance that I had been experiencing in<br />
dealing with this group leak out in my words. &nbsp;Now, when the<br />
project is in the red zone, is not the time for this. &nbsp;In any<br />
case, the lack of maturity and self-control that I displayed could have<br />
had dire consequences for the project, for the company, and for my<br />
career. &nbsp;</p>
<p>I was lucky, there was little direct damage, and the collateral damage<br />
was manageable. &nbsp;The biggest consequence was my management<br />
realizing how volatile I can be when pushed past my limits.<br />
&nbsp;In<br />
twenty-four years of employment I have probably only had<br />
two or three meltdowns like this.</p>
<p>--</p>
<p>What can I learn from this? &nbsp;How can I use this experience to<br />
diagnose risks, to identify warning signs, so that from a project<br />
perspective, I can find&nbsp;bombs like this before they go off.<br />
&nbsp;How can I communicate to my management the conditions that I<br />
was<br />
asked to work under that allowed the bomb to form. &nbsp;Where are<br />
the<br />
raw materials, the timer, the detonator? &nbsp;In other words, how<br />
can<br />
I be prepared to dismantle this bomb before it goes off?</p>
<p>--</p>
<p>Raw Material<br />
Bombs require raw material or explosive - TNT, Nitro, C4, or some<br />
incendiary agent, benzene, gasoline, etc. &nbsp;In this case it was<br />
the<br />
combination of two ingredients: a vendor who expressed a certain<br />
arrogance and unwillingness to work within the processes that constrain<br />
our other resources. &nbsp;Even the smallest facets of their work<br />
required adaptation by any person who needed to collaborate them.<br />
&nbsp;Whatever the reasons they had for doing this, it created an<br />
attitude of resentment in me, that I simply repressed and stuffed down.<br />
&nbsp;It's not that that was my first response, my first response<br />
was<br />
to confront these issues, and negotiate some compromise that allowed me<br />
to get more of what I need. &nbsp;That bringse me to the second<br />
ingredient: a perceived lack of control or power to change things.<br />
&nbsp;My manager(s) were very sold on this firm, and I inherited<br />
the<br />
relationship when I joined the project. &nbsp;As a manager, I have<br />
had<br />
varying levels of control and have had managers who were more or less<br />
prone to direct me in specific details. &nbsp;I had&nbsp;never<br />
had a<br />
vendor with more juice with my own boss than I had before. &nbsp;It<br />
was<br />
a new experience, and not terribly pleasant. &nbsp;It seemed that<br />
every<br />
time I tried to bring some visibility or accountability to bear, I got<br />
thrown under a bus and the vendor was allowed to skate. &nbsp;So<br />
the<br />
second ingredient could be a lack of support, or empowerment; or it<br />
could be a lack of control; or it could simply be my not asserting<br />
myself by presenting my manager with an ultimatum (I manage or you<br />
manage, but I can't manage if you wont stop managing).</p>
<p>The Timer<br />
Projects have built in timers. &nbsp;The schedule is<br />
always<br />
agressive, pressure builds during the project and as things slide,<br />
crushing forces converge. &nbsp;As things move towards a state<br />
where it<br />
is obvious that we cannot succeed without superhuman effort there is a<br />
building of pressure that allows events, comments, or circumstances to<br />
trigger an explosion. &nbsp;In this case it was the<br />
many&nbsp;accomodations that I and my team had made or tried to<br />
make to<br />
help this consulting vendor be successful, from pulling work back to<br />
hiring a project manager and analyst, to hiring more resources to work<br />
with their team. &nbsp;The harder I worked to help them, the more<br />
they<br />
expected me to do, and the more they attempted to identify me as the<br />
excuse for their slippage.</p>
<p>The Detonator<br />
Most explosive materials will not combust spontaneously, but require<br />
some initiation or detonation to start the explosion - be that<br />
electrical, chemical, or physical. &nbsp;In this case it was<br />
chemical.<br />
&nbsp;Consulting firm hired a new liaison who in his first week<br />
started<br />
to push expectations towards my team for work that we had agreed to do,<br />
before he was on the scene. &nbsp;He didn't even know that when he<br />
pushed the button that there would be a reation. &nbsp;However,<br />
when I<br />
started to get defensive, he just kept pushing the "BIG RED BUTTON".<br />
&nbsp;Eventually, the detonation was effective. &nbsp;</p>
<p>Instructions for<br />
dismantling<br />
When I find my self in this situation, I need to make sure that I<br />
disconnect the detonator before it gets pushed repeatedly.<br />
&nbsp;Take a<br />
walk. &nbsp;Hang up the phone. &nbsp;Tell the button pusher<br />
that you<br />
will get back to him later. &nbsp;That is a quick fix, but it<br />
doesn't<br />
dismantle the bomb. &nbsp;</p>
<p>I need to deal with the materials or the timer for that.<br />
&nbsp;Behind<br />
each of these was a conflict or a confrontation that needed to happen.<br />
&nbsp;Each conflict or confrontation had consequences. &nbsp;I<br />
needed<br />
to take responsibility for allowing the ingredients to mix to create<br />
the combustible mixture. &nbsp;By not facing up to the conflict, or<br />
confronting the situation I had allowed my own attitude to deteriorate.<br />
&nbsp;I had&nbsp;chosen to absorb all of this into my own<br />
world, and<br />
had not taken responsibilty for it. &nbsp;I allowed myself to move<br />
into<br />
the victim quadrant. &nbsp;</p>
<p>The truth is that my issue was not with my consultant, but my<br />
management. &nbsp;I needed to identify the consequences of the<br />
nature<br />
of the relationship with this vendor, and allow them to mitigate those<br />
consequences. &nbsp;After all, this wasn't personal, but business.<br />
&nbsp;If management was not willing to acknowledge the<br />
consequences,<br />
shame on them. Managers (like me) are paid to do the right thing;<br />
the right thing for the company, the project, and the staff.<br />
&nbsp;When<br />
they make decisions that have consequences that they are unwilling to<br />
acknowledge or manage, they put the people who report to them in a<br />
trick bag. &nbsp;That does not absolve me of the responsibility for<br />
staying in the bag.</p>
<p>As I now see it, I had several opportunities to crawl out of the bag:</p>
<p>1) Confront my manager with the issues - give her an opportunity to<br />
fold up the bag and move on.<br />
2) Work through an alternate tactic or strategy that mitigates the risk<br />
- perhaps my manager feels she has no alternative.<br />
3) Expose the risk beyond my management circle... &nbsp;This is a<br />
very<br />
dangerous because the person you confide in needs to protect your<br />
confidence. &nbsp;<br />
4) Move away from the project - as a last resort, one can always simply<br />
choose to walk away. &nbsp;</p>
<p>I actually contemplated 3 and 4 at various times, and thought that<br />
"hanging in there" was a better strategy. &nbsp;I realize that I<br />
discounted numbers 1 and 2 without sufficient consideration, believing<br />
that I would not be heard or respected. &nbsp;I assumed that the<br />
managers that had put me in the trick bag was unwilling to make a<br />
different decision.</p>
<p>--</p>
<p>Finding It<br />
A week later, things are different. &nbsp;My managers are now<br />
aware, of<br />
how much I was stomaching and how much resentment had built up.<br />
&nbsp;The vendor is now aware of how close their relationship was<br />
to<br />
being fruitless. &nbsp;They have made some adjustments and somehow,<br />
more progress is being made than before, and more people are happy than<br />
before. &nbsp;I don't attribute all of the change to this event.<br />
&nbsp;I think that some of it was planned or working itself out<br />
before.<br />
&nbsp;</p>
<p>I thank God that things did not turn out much worse. &nbsp;This<br />
certainly could have been a career limiting event, or even a ticket to<br />
a worse position. &nbsp;I also recognize that a more controlled<br />
confrontation can be very effective. &nbsp;I should consider being<br />
more<br />
confrontational when things are difficult and change is required and<br />
slow in coming. &nbsp;</p>
    ]]></content>
  </entry>
  <entry>
    <title>Grind It Out!</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/256" />
    <id>http://www.regenerateweb.net/blog/node/256</id>
    <published>2007-09-01T08:37:22-05:00</published>
    <updated>2007-09-20T21:09:25-05:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="Interviews" />
    <category term="Motivation" />
    <category term="Recruiting" />
    <summary type="html"><![CDATA[<p>Grind It Out!<br />
How do you assess a candidate's attitude toward work during an<br />
interview. &nbsp;Once on the job, and employee may exhibit an<br />
eagerness<br />
to deliver value, or a sense of urgency. &nbsp;He or she may may<br />
get<br />
bogged down in details or decisions. &nbsp;He may have expectations<br />
that he will be provided with tools, and have questions answered<br />
satisfactorily, in short, that he will be spoon fed. &nbsp;She may<br />
have<br />
a tendency schedule more meetings than are necessary. &nbsp;</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Grind It Out!<br />
How do you assess a candidate's attitude toward work during an<br />
interview. &nbsp;Once on the job, and employee may exhibit an<br />
eagerness<br />
to deliver value, or a sense of urgency. &nbsp;He or she may may<br />
get<br />
bogged down in details or decisions. &nbsp;He may have expectations<br />
that he will be provided with tools, and have questions answered<br />
satisfactorily, in short, that he will be spoon fed. &nbsp;She may<br />
have<br />
a tendency schedule more meetings than are necessary. &nbsp;</p>
<p>What you want is someone who will turn the handle and GRIND IT OUT!<br />
&nbsp;You want someone who pulls out a machete and hacks his way<br />
out of<br />
the details and decisions to a solution! &nbsp;You want someone who<br />
makes his own tools, proposes answers to his own questions, and rips<br />
raw meat off the bone! &nbsp;You want someone who schedules a<br />
meeting<br />
to start the project and another to plan migration when it is complete!</p>
<p>In my experience, most contract employees get this. &nbsp;They are<br />
mercenaries, hired guns who may have high opinions of themselves, lots<br />
of pride, arrogance, and swagger, but in general, they know they have<br />
to show value, fast! &nbsp;Full-time Employees may need to be<br />
reminded<br />
of this expectation, and when we hire them, we need to assess whether<br />
they have this expectation of themself. &nbsp;</p>
<p>How can we assess this aspect of a candidate during an<br />
interview? &nbsp;How fast do they like to go? &nbsp;Are they<br />
able to<br />
handle a sting of 60 hour weeks? &nbsp;Can they dig in and get<br />
started<br />
without direction? &nbsp;Are they like a tire with a slow leak -<br />
you<br />
have to keep pumping them up to keep going?</p>
<p>Ask them to describe their experience in situations where these<br />
tendencies would come out. &nbsp;</p>
<p>"Can you tell me about a time when you were on a project that was behind<br />
schedule?"<br />
"How did the team handle it?" &nbsp;<br />
"How well did that work?"<br />
&nbsp;<br />
"Given what you know now, what would you do differently?" &nbsp;<br />
What you are looking for along this path is a response that shows the<br />
candidate wants to focus, work and deliver. &nbsp;</p>
<p>"Tell me about a time when you had to start working with little or no<br />
direction?"<br />
"How did you approach this?"<br />
"How successful were<br />
you - did you get the job done?"<br />
"If you had to do that over, what<br />
would you do differently?"<br />
What you are looking for along this path is a response that shows<br />
internal leadership, bootstrapping, and digging in, not asking for help.</p>
<p>"Can you tell me about a time about a time when you were on a project<br />
where<br />
team motivation or morale was low?"<br />
"what did you personally do to overcome<br />
this?"<br />
"How well did that work?"<br />
What you are looking for is a response that indicates that this person takes responsibility for their own motivation, morale, and drive...</p>
    ]]></content>
  </entry>
  <entry>
    <title>Is there such a thing as &quot;Agile Project Management&quot;</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/202" />
    <id>http://www.regenerateweb.net/blog/node/202</id>
    <published>2007-08-20T19:27:49-05:00</published>
    <updated>2007-08-20T19:32:28-05:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="agile" />
    <category term="velocity" />
    <summary type="html"><![CDATA[<p>Glen Alleman of Herding Cats has been blogging about "agile project<br />
management" - and mostly I would agree with him. &nbsp;Agile<br />
project management is mostly wrapped up in a software development<br />
lifecycle, and doesn't really apply to projects dealing with in the<br />
domains of construction, engineering, or the like. &nbsp;I also<br />
agree that agile project management is a misnomer, because it misses<br />
many of the aspects of project management altogether. &nbsp;On the<br />
otherhand, it is more than a means of fulfilling certain project</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Glen Alleman of Herding Cats has been blogging about "agile project<br />
management" - and mostly I would agree with him. &nbsp;Agile<br />
project management is mostly wrapped up in a software development<br />
lifecycle, and doesn't really apply to projects dealing with in the<br />
domains of construction, engineering, or the like. &nbsp;I also<br />
agree that agile project management is a misnomer, because it misses<br />
many of the aspects of project management altogether. &nbsp;On the<br />
otherhand, it is more than a means of fulfilling certain project<br />
management activities, because it attempts to alter the conversation<br />
with the customer.</p>
<p>OK Glen, &nbsp;so perhaps by your definition, I am not an agilist.<br />
&nbsp;However, I suspect that your statement about agilist's<br />
abandoning<br />
planning, and scheduling are unfair.</p>
<p>When I started to investigate agile "practices", it was primarily a<br />
reaction to the culture of the organization that I was in, and a<br />
particular fixation with the schedule. &nbsp;My experience with<br />
software development projects as a practitioner (software<br />
developer/requirements engineer/analyst/designer) revealed that once<br />
the schedule was proposed, all discussion of value delivery stopped.<br />
&nbsp;As project lead, my job became to delay the proposal of<br />
schedules<br />
until all of the scope decisions had been made. &nbsp;Because the<br />
schedule was fixed, we weren't free to re-sequence delivery, we<br />
couldn't dynamically swap one valued feature for another. &nbsp;We<br />
were<br />
required to adopt a "change control" mentality that effectively blocked<br />
out change at any time in the lifecycle after the schedule was<br />
proposed, because any change would cause the schedule to move.<br />
&nbsp;Management was<br />
completely fixated on the schedule.<br />
 style="font-weight: bold;"&gt;&nbsp; I have<br />
blogged about this phenomenon before.</p>
<p>What I found with agile practices was not a solution to all of the<br />
problems of software development (agile does not help you design a user<br />
interface), nor a comprehensive solution to the problems associated<br />
with software development projects. &nbsp;What I found was a<br />
different<br />
way of framing the value/scope/schedule discussion, so that I could<br />
fix&nbsp;the schedule in smaller chunks (iterations) and the<br />
business<br />
could continue to evolve their priorities without imposing change on<br />
the current fixed portion of the schedule.</p>
<p>So, now agile has devolved into XP+Scrum, and the rest of the practices<br />
that were agile, have sort of gone their way, there are many people who<br />
are "post-agile" - those that embraced the agile practices, understood<br />
them for what they are, and adopted those that added value to their<br />
work. &nbsp;As I work in the financial industry, I have had to<br />
adopt a<br />
more "enterprise-friendly" set of agile practices. &nbsp;But the<br />
benefit of being able to have a continuous conversation about scope,<br />
priorities, and value deliverywith your customer and user community, is<br />
that one can deliver value in smaller chunks, much more frequently, and<br />
this mitigates the risk of DAO&nbsp;(delivered already obsolete)<br />
software, or having your project cancelled before you delivered<br />
anything (I have lived through both). &nbsp;</p>
<p>Lemme rip into another statement you made casually in a previous post<br />
called <a br /><br />
 href="http://herdingcats.typepad.com/my_weblog/2007/06/more-statistics.html"&gt;more<br />
statistics</a>. &nbsp;</p>
<div>"The traditional agile<br />
approach is to push these questions to the<br />
customer, then use velocity or some other "driving in the rear view<br />
mirror" approach to inform the customer how much money has been spent<br />
and how many features made it into the current release. All interesting<br />
things to cost accountants. But not that useful for forecasting the<br />
credibility of the plan, compliance with the "not to exceed" budget and<br />
the probability of fulfilling the business case on the "go live" date."</p>
</div>
<div>
The planning/tracking approaches that I have been promoting fall<br />
directly in the path of forecasting the credibility of the plan,<br />
compliance with budget, but not the probability of fulfilling the<br />
business case on live date - unless you wish to consider work moved out<br />
of scope to comply with a schedule or budget. &nbsp;Perhaps what<br />
you are missing is the connection between velocity and distance to the<br />
target. &nbsp;By taking weekly snapshots of resource burn, distance<br />
to the target, and&nbsp;velocity of the team, we can create a very<br />
credible forecast. &nbsp;Any planning/tracking approach, is based<br />
on metrics that ought to be designed to corner the truth of our status<br />
with some certainty (or very little wiggle room). </p>
<p>The problem with these or any other metrics, is that &nbsp;when<br />
there are no adjustments to be made on the race car, the metrics only<br />
tell us that we are going to lose the race. &nbsp;When your budget<br />
cannot accomodate any additional resources, your dates cannot slip,<br />
there are two choices - reduce value delivery, reduce quality, or both.<br />
&nbsp;What the agile practices do better for software projects is<br />
to move initial value delivery (and the conversations that go with it)<br />
earlier in the lifecycle. &nbsp;</p>
</div>
    ]]></content>
  </entry>
  <entry>
    <title>Zealots vs. Mercenaries</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/23" />
    <id>http://www.regenerateweb.net/blog/node/23</id>
    <published>2007-04-06T21:45:10-05:00</published>
    <updated>2007-04-06T21:45:10-05:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <summary type="html"><![CDATA[<p>In my last post, I used an analogy between software development tools<br />
and religions. &nbsp;I found the analogy amusing, and illustrative,<br />
and wanted to blather on for a bit about it. &nbsp;Not all<br />
developers are religious, some developers do it for the money.<br />
&nbsp;In this analogy, there are two breeds of software developers,<br />
mercenaries and zealots. &nbsp;</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>In my last post, I used an analogy between software development tools<br />
and religions. &nbsp;I found the analogy amusing, and illustrative,<br />
and wanted to blather on for a bit about it. &nbsp;Not all<br />
developers are religious, some developers do it for the money.<br />
&nbsp;In this analogy, there are two breeds of software developers,<br />
mercenaries and zealots. &nbsp;</p>
<p>Mercenaries<br />
are concerned about weapon proficiency. &nbsp;They want to be<br />
comfortable using any weapon, &nbsp;they know how to assemble and<br />
disassemble any kind of gun, can set up any development environment in<br />
a heartbeat. &nbsp;They are focused on firepower, and maximum<br />
utility, pure take down. &nbsp;They don't necessarily know the<br />
deepest secrets of the lore of the weapon manufacturer. &nbsp;They<br />
are not gun collectors, they are&nbsp;marksmen. &nbsp;They<br />
would select a weapon (software tool, language, compiler) for it's<br />
ability to produce software. &nbsp;They will use whatever the<br />
customer provides, whatever their employer has available, they will<br />
become proficient on new tools quickly, because that is what they do.<br />
&nbsp;That is how they survive and succeed. &nbsp;Mercenaries<br />
are agnostic, or at least non-denominational. &nbsp;They will use<br />
whatever is available and complain when it doesn't have sufficient<br />
firepower.</p>
<p>Zealots are<br />
a different breed. &nbsp;They are always looking for the ultimate,<br />
the best, the most amazing, the most elegant, the most efficient, the<br />
most pure. &nbsp;They have a need to believe, to believe that the<br />
tool that they have chosen is the best. &nbsp;They are into the<br />
lore, they know the name, and some personal history of the original<br />
author of the language they have chosen. &nbsp; They are part of<br />
the "community" for the tools that they choose. &nbsp;They want to<br />
master, to tame, to understand how to wring, squeeze, or coax the last<br />
ounce of capability out of a tool. &nbsp;They "go native", and<br />
understand the tool, in the way that it was designed. &nbsp;They<br />
are focused on the beauty, the elegance of a solution, and they give<br />
credit to the tool, the community, and the original author for their<br />
contribution to the solution. &nbsp;Zealots are often evangelistic,<br />
trying to drum up support for their religion. &nbsp;They donate<br />
money to build the temple, and if they are lucky, will get to be a part<br />
of the priestly class (write a book, blog, or contribute to an open<br />
source project). &nbsp;</p>
<p>Mercenaries take credit for their kills, whereas zealots bring the<br />
kills back to the commune. &nbsp;Mercenaries share war stories,<br />
zealots&nbsp;post code galleries. &nbsp;Zealots will spend time<br />
mentoring, indoctrinating, coaching, and holding court for anyone who<br />
will listen, mercenaries are either on a mission or in a bar.<br />
&nbsp;Zealots retool out of frustration (with former tools),<br />
mercenaries retool out of expedience. &nbsp;Mercenaries know how to<br />
use a tool, zealots know how the tool wants to be used.</p>
<p>Most of you who have been in this industry for a while have interacted<br />
with both breeds of software developers. &nbsp;It is not that one<br />
is better than the other. &nbsp;Both can write extremely solid<br />
code, very quickly, and under pressure. &nbsp;There are probably<br />
other attributes that can be applied to each breed, but they would be<br />
generalizations. &nbsp;Some developers can change breeds based on<br />
the situation, although each would have a default breed.<br />
&nbsp;Others would struggle to shift breeds except under extreme<br />
duress.</p>
<p>As a manager, it is important to understand how your developers fit on<br />
this continuum. &nbsp;Mercenaries and zealots are motivated<br />
differently. &nbsp;Moreover, it is not just developers that follow<br />
this continuum - managers, project managers and analysts also have<br />
their ideologies. &nbsp;It is important to understand, because at<br />
the extremes of the continuum there is very little understanding (or<br />
tolerance) of the other extreme. &nbsp;</p>
<p>I myself lean a little toward the zealot. &nbsp;I spend a lot of<br />
time in the world of ideas. &nbsp;Strength or weakness?</p>
    ]]></content>
  </entry>
  <entry>
    <title>Programming Languages: Fashion or Religion</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/22" />
    <id>http://www.regenerateweb.net/blog/node/22</id>
    <published>2007-04-05T08:40:27-05:00</published>
    <updated>2007-04-05T08:46:48-05:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="function points" />
    <category term="metrics" />
    <category term="programming" />
    <category term="python" />
    <category term="ruby" />
    <summary type="html"><![CDATA[<p>I just read Bob on development's post <a br /><br />
 href="http://bobondevelopment.com/2007/04/04/on-software-development-fashions/"<br />
 target="_blank"&gt;<br />
On Software Development Fashions&nbsp;</a> which is a riff on<br />
<a href="http://www.hacknot.info/hacknot/action/showEntry?eid=93">this<br />
post</a> &nbsp;from "Ed Johnson" the Hacknot blog.<br />
&nbsp;The basic<br />
idea of the original post is that there is no evidence of one<br />
programming language engendering higher productivity than another, with<br />
the specific issue that the current crop of dynamic languages (Ruby,</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I just read Bob on development's post <a br /><br />
 href="http://bobondevelopment.com/2007/04/04/on-software-development-fashions/"<br />
 target="_blank"&gt;<br />
On Software Development Fashions&nbsp;</a> which is a riff on<br />
<a href="http://www.hacknot.info/hacknot/action/showEntry?eid=93">this<br />
post</a> &nbsp;from "Ed Johnson" the Hacknot blog.<br />
&nbsp;The basic<br />
idea of the original post is that there is no evidence of one<br />
programming language engendering higher productivity than another, with<br />
the specific issue that the current crop of dynamic languages (Ruby,<br />
Python, etc.) being the primary topic. &nbsp;There are many, many<br />
proponents of these languages, and I have come into contact with a few.<br />
&nbsp;Languages (and editors) tend to become a religion with some<br />
developers. &nbsp;I would also say, that some programmers tend to<br />
become "high priests" of whatever programming language they are<br />
currently using. &nbsp;You will never convince a high priest that<br />
his or her religion is not "true". &nbsp;</p>
<p>What both articles fail to recognize is that there are organizations<br />
who have spent a significant amount of time documenting the difference<br />
in productivity between languages, not so much as a means of selecting<br />
a development tool, but as a way of validating estimates.<br />
&nbsp;Back in the '70's the group who created Function Point<br />
Analysis actually started ranking languages in terms of level, and<br />
specifically levels were based on how many SLOC (source lines of code)<br />
were required to complete a function point - with the idea that the<br />
less lines of code the more function points a developer could build in<br />
the same period of time, give or take.</p>
<p>There is a <a br /><br />
 href="http://www.cs.bsu.edu/homepages/dmz/cs697/langtbl.htm"&gt;language<br />
level table</a><br />
that has been published and revised over the years to include many<br />
(hundreds)<br />
languages. &nbsp;Unfortunately Ruby and Python are not on this<br />
version. &nbsp;So, Ed, there is a community that is focused on<br />
software metrics that does try to empirically measure the productivity<br />
that each language brings - simply in terms of the number of lines of<br />
code per some defined chunk (function point). &nbsp;Unfortunately,<br />
they are also a religion, and it appears that one cannot get the<br />
current table without a paid subscription to one of their sites.<br />
&nbsp;I, not being a true believer in that religion, do not have<br />
access. &nbsp;</p>
<p>That said, &nbsp;I agree with both Ed and Bob that it is unlikely<br />
that any language gives a 10-fold (90% reduction in code) increase in<br />
productivity to the developer. &nbsp;or even a 5-fold (80%<br />
reduction in code) increase. &nbsp;What I have seen is that the<br />
best developers, when working in their chosen paradigm, outproduce the<br />
average by that same factor of 5 or 10. &nbsp;That is a smart<br />
coder, working in a language that he has<br />
 style="font-weight: bold;"&gt;truly mastered,<br />
 style="font-weight: bold;"&gt;and likes, can<br />
outproduce me and you by a factor of 5 or 10. &nbsp;When I find the<br />
language that lets me code like that, I will convert to it's cult, and<br />
try to become a high priest. &nbsp;Why, because it feels really,<br />
really good, to be supremely productive. &nbsp;When your teammates<br />
look at you as if you were a god, that is a form of programming<br />
nirvana. &nbsp;</p>
<p>But Ed's beef was specifically around dynamic languages. &nbsp;I<br />
want to speak to this, because the first (and only) language where I<br />
approached true mastery is a dynamic language. &nbsp;Interestingly,<br />
there are interpreted (normal) and compiled versions of this language,<br />
and working in both, I didn't notice a tremendous productivity<br />
difference, because the compiled version had an interpretive run-time<br />
engine built in, so it "simulated" interpretation. &nbsp;This is<br />
necessary to be able to execute code out of a string at run-time.<br />
&nbsp;The power of this language came from it's underlying<br />
paradigm, the dynamic typing was something that allowed one to<br />
introduce errors unintentionally, and one actually had to<br />
 style="font-weight: bold;"&gt;write extra code to<br />
test variables to ensure that they had the right properties.</p>
<p>The true power of this language was the ease with which one could build<br />
data-driven applications. &nbsp;The language primitives contained<br />
some powerful string manipulation functions that could be combined to<br />
great advantage in dealing with complex string manipulation<br />
applications like interfaces or messaging. &nbsp;The language<br />
supported code and data indirection, so that one could hide the name of<br />
a variable or database record in a variable and refer "through" like<br />
pointers but not nearly as abstract. &nbsp;One could also drop<br />
executable code in a variable and move it around then execute when<br />
desirable. &nbsp;Is that self modifying code? &nbsp;No - that<br />
would mean that the original program modified itself in memory.<br />
&nbsp;This is merely an additional form of dynamism.<br />
&nbsp;Slurp code out of the database, then execute was as simple as<br />
locating the code, and a single line of code to execute. &nbsp;</p>
<p>Does that sort of power make programs complex? Difficult to maintain?<br />
Hard to understand? Hell yes! &nbsp;Does it mean that we shouldn't<br />
use those language features? &nbsp;Hell no! &nbsp;With this<br />
caveat - you need to carefully control how these features are used in a<br />
production system, and ensure that there is adequate documentation for<br />
those who come behind to understand how you wrote an XML parser in 200<br />
lines of code, or some other amazing feat of programming wizardry.<br />
&nbsp;</p>
<p>One thing about interpreted languages (I currently use python, and php<br />
the most) is that they let you write code from the inside out and test<br />
it without much hassle - that is, I write functions and test them long<br />
before I write the main. &nbsp;Because of the interpreter, I can<br />
get a command line from which I can call my function like a verb<br />
&nbsp;and see the result:</p>
<p>&nbsp;<br />
&nbsp;print ( object-&gt;method('test1', 123, 345));</p>
<p>That allows me to get a considerable way down the path before I worry<br />
about larger chunks of code than functions or methods.</p>
<p>Working with unit test harnesses gives me much the same ability but I<br />
have to build first in a compiled language, which even if it takes a<br />
minute, means I am going slower than interpreted mode. &nbsp;In<br />
interpreted mode, I close the editor, execute the function, and see the<br />
result. &nbsp;Bam! &nbsp;I have even baked a script where I<br />
have the unit tests baked into the edit cycle, so that I close the<br />
editor, and the editor script automatically runs the unit tests for the<br />
file that I am editing when I close the editor, and will prompt to<br />
re-open the editor if any of them fails. &nbsp;That can be done in<br />
any interpreted language with a little workstation automation.<br />
&nbsp;There is a tremendous power to the immediacy of this idiom,<br />
code-test-repeat-until-done.</p>
<p>Each language brings with it certain primitives that were pre-existent<br />
in the mind of it's author, that when the fully resonate in a<br />
developer's mind, they create power and productivity. &nbsp;Any<br />
language that one picks up, it pays well to sit at the feet of a high<br />
priest or at least a true believer and understand deeply where the<br />
power comes from. &nbsp;I had this experience with Python recently,<br />
and took a simple desktop automation script to the local high priest<br />
for review. &nbsp;After he looked at my crappy code, he recommended<br />
some more efficient ways of doing the same thing that took more<br />
advantage of Pythons capabilities. &nbsp;He asked me how long I had<br />
been using Python, and when I told him that this was my first script,<br />
he said - not bad for a first try. &nbsp;Supreme validation for a<br />
novice from the high priest - maybe I can convert to this religion...</p>
    ]]></content>
  </entry>
  <entry>
    <title>Agile Mastery</title>
    <link rel="alternate" type="text/html" href="http://www.regenerateweb.net/blog/node/20" />
    <id>http://www.regenerateweb.net/blog/node/20</id>
    <published>2007-03-22T08:53:47-05:00</published>
    <updated>2007-03-24T14:07:03-05:00</updated>
    <author>
      <name>regen_r8</name>
    </author>
    <category term="agile" />
    <summary type="html"><![CDATA[<p>Dave Thomas asked a question about <a br /><br />
 href="http://pragdave.pragprog.com/pragdave/2007/03/agile_mastery.html"&gt;mastery</a>,<br />
especially regarding agile<br />
practices, in his <a href="http://pragdave.pragprog.com/pragdave/">PragDave<br />
blog</a>.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Dave Thomas asked a question about <a br /><br />
 href="http://pragdave.pragprog.com/pragdave/2007/03/agile_mastery.html"&gt;mastery</a>,<br />
especially regarding agile<br />
practices, in his <a href="http://pragdave.pragprog.com/pragdave/">PragDave<br />
blog</a>.</p>
<div>The<br />
more I think about that, the<br />
more the title worries me, because<br />
it seems to contain an implicit assumption&mdash;that mastery is<br />
some state<br />
that can be reached.<br />
I think there are methodologies which can be mastered, where<br />
you can<br />
say &ldquo;now I know it all.&rdquo; I don't believe agility is<br />
in that camp. For<br />
me, agility is all about the journey. Along the way, we'll always be<br />
faced with forks in the road. The agile principles help us decide which<br />
to take. And we just carry on, enjoying the trip and doing our best<br />
along the way.
</div>
<p>I want to poke at the word mastery a little bit. &nbsp;It is one of<br />
my<br />
favorite words because it describes something that we don't understand<br />
today, as well as we understood it before. This is especially true in<br />
information technology, where new ideas arrive at a rate where only<br />
those delivering these ideas to the community have time to achieve true<br />
mastery, but that is a different problem.</p>
<p>In the age when trades were regulated by guilds, rather than organized<br />
labor, there were specific requirements for achievement of each rank.<br />
&nbsp;As I understand it, one of the requirements for mastery in<br />
most<br />
trades was the ability to construct one's own tools. &nbsp;I<br />
learned this from my 8th grade shop teacher, who showed me how to<br />
sharpen wood chisels with a buffing wheel and jewelers rouge - he made<br />
me promise not to tell anyone because this was his trade<br />
secret.&nbsp; After doing some basic research, I realize that this<br />
understanding is assumed in another - the master had to make their own<br />
tools, because they owned the workshop - a master was allowed to set up<br />
their own workshop. &nbsp;Each<br />
master's tools were his competitive edge. &nbsp;These tools and his<br />
mastery were his "trade secrets" and he guarded them zealously, because<br />
they key to his financial success. &nbsp;At some point during the<br />
industrial age, tools became much more standardized and toolmaking<br />
became a trade in its own right, and tradesmen purchased their tools<br />
rather than making them, or working for a master. &nbsp;</p>
<p>So what on earth does this have to do with agile, I can almost hear you<br />
asking. &nbsp;Absolutely everything. &nbsp;I agree with Dave<br />
when he<br />
says that "agility is all about the journey". &nbsp;In fact, what<br />
agile<br />
practitioners are is navigators. &nbsp;Agile isn't about the<br />
practices,<br />
the practices are merely the vessel in which we take the journey.<br />
&nbsp;Not every vessel is appropriate for every journey, the master<br />
is<br />
one who can decide which practices make sense for this particular<br />
journey, and can adapt the vessel on the fly, tuning the practices to<br />
the specifics of the team or project.</p>
<p>Those of us who are less experienced with agile practices, having only<br />
implemented parts or aspects, or all of a single methodology on one or<br />
two teams or projects may try to repeat our experience and be<br />
frustrated when we don't repeat our original positive experience, are<br />
not masters, but journeymen, who need to borrow our tools from a master<br />
craftsman. &nbsp;We need the experience of an agile coach who can<br />
see<br />
where we are missing the boat, so to speak. &nbsp;</p>
<p>I am thankful for the masters who have gone before - the pioneers -<br />
Beck, Highsmith, Cockburn, Beedle, etc. &nbsp;They have built ships<br />
that I can sail, and I need to learn from their experience. &nbsp;I<br />
think that there are many, many more who have learned from the these<br />
masters, and have crafted their own vessels, sailed off to distant<br />
shores, but have not shared their saga with the community. &nbsp;</p>
<p>I suppose that I disagree with Dave in his definition of mastery, that<br />
mastery is the point when one can say, "Now I know it all" is what I<br />
disagree with. &nbsp;That would be like saying that a master<br />
carpenter<br />
will never see a situation that requires him to be "creative".<br />
&nbsp;In<br />
fact, I would suggest that innovation comes from the fact that mastery<br />
does not mean "I know it all", but it means I can try something when<br />
what I have done before doesn't work. &nbsp;I submit that one is a<br />
master of agile, when one can invent a practice that works where others<br />
fail, while maintain the tenets of agility.</p>
    ]]></content>
  </entry>
</feed>
