<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<channel>
<title>Thoughts On ...</title>
<link>http://www.williamcaputo.com/</link>
<description></description>
<dc:language>en-us</dc:language>
<dc:creator>William E. Caputo</dc:creator>
<dc:date>2006-07-15T14:23:36-06:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.64" />
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>

<item>
	<title>Business and IT converging?</title>
	<link>http://www.williamcaputo.com/archives/000280.html</link>
	<description><![CDATA[<div class="quote">
If we keep doing what we're doing, we're going to keep getting what we're getting. -- Stephen R. Covey
</div>

<p>A <a href="http://www.computerworld.com/action/article.do?command=viewArticleTOC&specialReportId=9000100&articleId=112368">Computer World article</a> talks about business and IT alignment/integration:</p>

<pre>
As more CIOs move toward business and IT alignment over the next 
several years, the makeup and structure of IT will change. IT and business unit
employees will work more closely together -- and in some cases, 
interchangeably.
</pre>
<p>(Via <a href="http://it.slashdot.org/article.pl?sid=06/07/15/0144241">Slashdot</a>)</p>

<p>I speculated on the roots of this split, and the eventual convergence of business and IT <a href="http://www.williamcaputo.com/archives/000121.html">last year</a>.</p>

<p>I believe that it is through such closer interaction and blurring (but not elimination) of distinction between business and IT -- and not the application of Agile to large classic IT projects where they are doomed to become their opposite -- is where the principles and practices of XP and related methodologies will have their lasting impact on software development.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=280</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000280.html</guid>
	<dc:date>2006-07-15T14:23:36-06:00</dc:date>
</item>
<item>
	<title>Applying Technology is not Technology</title>
	<link>http://www.williamcaputo.com/archives/000274.html</link>
	<description><![CDATA[<div class="quote">
Ability is the power of applying knowledge to practical purposes. -- Unknown.
</div>

<p>Via <a href="http://www.schneier.com/blog/archives/2006/06/economics_and_i_1.html">Bruce Schneier</a>:</p>

<pre>
I've long said that the fundamental problems in computer security are no 
longer about technology; they're about applying technology. Workshops 
like WEIS are helping us understand why good security technologies fail 
and bad ones succeed, and that kind of insight is critical if we're going 
to improve security in the information age.
</pre>

<p>Bruce referring to a conference (<a href="http://weis2006.econinfosec.org/">WEIS</a>) that looks at the relationship between economics and computer security.</p>

<p>I think this is a great point, but Bruce doesn't go far enough. I think this can be generalized to: The fundamental problems in <i>professional computing</i> are no longer about technology but applying technology.</p>

<p>I'm sure that people who are still pushing the boundaries in things like AI, nanotech, etc. would beg to differ, but for the vast majority of people who are involved with technology (i.e. those supplying and using computer-based systems in the business world), the problem has shifted.</p>

<p>Not that long ago (i.e. within my time as a professional programmer), hard drive size, memory size, bandwidth and processor speed were forefront concerns for any business application design, often requiring workarounds or selection (or anticipation) of new technlogies. Now the discussion has shifted to how we effectively apply the tools and technologies at our disposal (I haven't heard anyone say something along the lines of "well we can do that if we just get more memory" in a long time). Even my phone has more processing power now than some of the desktop machines used by companies 10 years ago.</p>

<p>This is not to say our work is done. But rather that its just getting started. Now the challenge is to understand how to use the things we have effectively and efficiently (arguably a bigger challenge). </p>

<p>It also might explain the growing sense that CS degrees are insufficient to prepare people for a career as a professional programmer. As the fundamentals become more commodotized, the application becomes more central to success.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=274</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000274.html</guid>
	<dc:date>2006-07-05T14:12:08-06:00</dc:date>
</item>
<item>
	<title>Knowledge Nodes</title>
	<link>http://www.williamcaputo.com/archives/000273.html</link>
	<description><![CDATA[<p>One could (and I guess I am about to) argue that the various communication tools that are central to Extreme Programming -- namely the practices: small team; pair programming; co-location; daily-standups; continuous integration; on-site customer; and iteration planning game -- are aimed at producing a situation where everyone knows everything about the design and features of the system being worked on.</p>

<p>As the number of people on a software team grows, it becomes harder to accomplish this goal, and so there becomes a need for people who are what I term knowledge nodes: these people seek to understand the entirety of the design and features being worked on, so they can communicate relevant bits of that information to others who then have partial (but presumably sufficient) knowledge to do their jobs. Further, it appears common (and a function of both culture and team-size) to break the two areas of knowledge (i.e. design and feature-set) from each other and create specialized nodes for each of them.</p>

<p>The name of role such a person plays on the team varies, but Project Manager, Analyst, Lead Developer, Lead Programmer and Architect are all commonly used. Each of these incline toward the design or the feature (i.e. technical and business) aspects of the information on a project-by-project basis.</p>

<p>What do the people who are good at these roles have in common? In my experience, they are good communicators: they are skilled at gathering, explain ing and sharing knowledge about the design and/or the features of a software system.</p>

<p>The interesting thing (or at the very least: the reason I started writing this today) is that even very small teams need at least one such person. Even on a team with a half-dozen people or so (such as the one I work with now), if the knowledge of the system fails to reach a knowledge node -- it is less likely to get shared with everyone.</p>

<p>Right or Wrong I have always seen myself in this role. I've also (right or wrong) had a tendency to feel like if I didn't know something about the design or features of the system I was working on <i>it wasn't known</i>. </p>

<p>(and so, yes this entire analysis may be nothing more than ego gratification of my self-perceived role on software projects)</p>

<p>So now that I've found yet another way to describe my role on a software project, so what? Well, for those of you who also find yourself in this (or working with someone playing this) role, I have some advice:</p>

<p>That while you may think that things are not known (objective) unless you know them (subjective) remember that's your ego talking (but it still may be true if your team has come to rely on it).</p>

<p>If you are not someone who likes to talk endlessly (I've heard the word 'pontificate' a few times in my career) about design and feature ideas, get your thoughts to someone who does -- they'll make the rounds for you.</p>

<p>On small teams, one or two such people are more than enough (too many, and there will be no work, just talk) -- but you do need at least one to forge a team (otherwise everyone will just work on their bit without knowing about the rest).</p>

<p>Don't confuse knowledge nodes with knowledge creators -- good teams have both, and often the same person isn't good at both.</p>

<p>Particularly (as in my case) people are rarely good at both at the same time. I find that I can share design and feature knowledge, or I can create it, but when I am doing a lot of one, I am doing very little of the other. (team-size, iterations and pairing help with this -- as does some self-discipline on my part to keep it balanced).</p>

<p>Finally, the (presumed) XP goal of everyone knowing everything is in pratice accomplishable by making sure the knowledge node(s) of the team know everything and then get it shared around. If you are playing this role, you have to gather *and* share. If you are disinclined to do so, you have a responsibility -- at least -- to get what you know to such a person, so they can share what you  know about the system with everyone else. This use of knowledge nodes may be (I don't know I just musing here) the key to an effective software team.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>1</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=273</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000273.html</guid>
	<dc:date>2006-04-02T17:01:59-06:00</dc:date>
</item>
<item>
	<title>How to Start an Interplanetary War</title>
	<link>http://www.williamcaputo.com/archives/000272.html</link>
	<description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/The_War_of_the_Worlds_%28novel%29">H.G. Wells</a> apparently got it <a href="http://www.universetoday.com/am/publish/thor_mars_mission.html">backwards</a>.</p>

<p>The thought of firing a space-based railgun at an unsuspecting planet in order to observe the resulting "debris plume, looking for any evidence of life" sounds somewhat <a href="http://www.theonion.com/content/node/32647">Onion-esque</a> to me.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>2</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=272</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000272.html</guid>
	<dc:date>2006-02-14T14:23:09-06:00</dc:date>
</item>
<item>
	<title>XP Exaggerated Redux</title>
	<link>http://www.williamcaputo.com/archives/000270.html</link>
	<description><![CDATA[<p>Here's a wayback machine link to what I believe was <a href="http://web.archive.org/web/20011206025452/www.xpexaggerated.com/index.html">the best proceedings summary from XPUniverse 2001</a>. (via <a href="http://blog.alancfrancis.com/2006/02/blast_from_the_.html">Alan Fancis</a>)</p>

<p>XPEX was a parody summary that (as Alan points out) came to us after many rounds of Guinness in the Hotel lobby (somewhere right after Alan declared that XP needed a Flag if it were to <a href="http://www.eddieizzard.com/home.izz">conquer the world</a>, if I recall correctly).</p>

<p>There's a lot of in-jokes of course (some *very* dated to the conference), but a lot of more general pop culture and Extreme Programming community references. For fun, see how many you can find.</p>

<p>Big thanks to Alan for resurrecting this. I needed a brief light moment before I dive back into the crazy rewrite/refactoring that has been my sole focus for the past two weeks.</p>

<p> </p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=270</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000270.html</guid>
	<dc:date>2006-02-10T12:59:02-06:00</dc:date>
</item>
<item>
	<title>Job Postings</title>
	<link>http://www.williamcaputo.com/archives/000269.html</link>
	<description><![CDATA[<p>Those of you who read this site regularly may <a href="http://www.williamcaputo.com/archives/000231.html">remember </a> that I left <a href="http://www.thoughtworks.com">ThoughtWorks</a> last year to join a software team full-time.</p>

<p>Well, <a href="http://www.redbox.com">my team</a> is hiring. Specifically, we are looking for a <a href="http://chicago.craigslist.org/sof/130437779.html">Reporting Analyst</a>, and a <a href="http://chicago.craigslist.org/sof/130436035.html">Junior Developer</a>.</p>

<p>If you think you might be interested (or know someone who else who may be), please feel free to follow those links to the job descriptions and follow the resume submission criteria there (the above point to <a href="http://www.craigslist.org/">Craigslist</a>, they are also on <a href="http://www.monster.com/">Monster</a>, <a href="http://jobsearch.monster.com/getjob.asp?JobID=38709280&AVSDM=2006%2D01%2D24+12%3A25%3A07&Logo=1&q=redbox&cy=us">here</a> and <a href="http://jobsearch.monster.com/getjob.asp?JobID=38709245&AVSDM=2006%2D01%2D30+15%3A22%3A03&Logo=1&q=redbox&cy=us">here</a>).</p>

<p>Please don't send anything directly to me -- while I will be closely involved in the hiring process, I am not managing the process itself, so sending something to me will probably just ensure that you <i>don't</i> get considered nearly as quickly or reliably.</p>

<p>I have refrained thus far from talking a lot about Redbox, and what I've been doing here. That may change in the near future, but for now, I will only say that we are building a great software system, we have a great team, and yes we are practicing Extreme Programming.</p>

<p>I look forward to hearing from you.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=269</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000269.html</guid>
	<dc:date>2006-02-02T12:42:27-06:00</dc:date>
</item>
<item>
	<title>Competition</title>
	<link>http://www.williamcaputo.com/archives/000268.html</link>
	<description><![CDATA[<div class="quote">
"You've climbed the highest mountain in the world. What's left ? It's all downhill from there. You've got to set your sights on something higher than Everest." -- Willi Unsoeld
</div>
<p>What if you're team is better than 99% of team's developing software? What if you are better at software development than 99% of the people who've ever tried?</p>

<p>What if you've climbed to the base camp of Mount Everest? Then you would be farther along the path than 99% of who've ever lived.</p>

<p>Now all you have to do is climb Mt. Everest.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=268</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000268.html</guid>
	<dc:date>2006-01-31T10:39:14-06:00</dc:date>
</item>
<item>
	<title>Automatic Discipline</title>
	<link>http://www.williamcaputo.com/archives/000267.html</link>
	<description><![CDATA[<div class="quote">
"Consciousness is terrified of its own spontaneity, because it feels this spontaneity as <i>beyond</i> freedom." -- Jean Paul Sartre <a href="http://plato.stanford.edu/entries/sartre/#4"><i>The Transcendence of the Ego</i></a>
</div>

<p>Summary: Given a choice between automation opt-out and automation opt-in, choose the former.</p>

<p>The spirit of build process automation is finding ways to remove reliance on individual discipline, memory and technique; replacing it with tools that help us to remember to do the right thing -- usually  by ensuring that when we forget a critical step in the process, the effect is immediate and local (rather than deferred and team-wide). That is: when I mess up, I know right away, and only I am affected (usually by my changes not being integrated).</p>

<p>A lot of people don't like this. Some believe in the better nature of the team, and feel that its too restrictive to have certain process activities happen automatically -- particularly when those activities can be more detailed, or sophisticated if done manually. Others fear that this will slow them down too much (my experience is that its the opposite). I also have encountered others who simply don't like that much discipline constraining their actions. I question the professionalism of this point of view, since unless they make no mistakes, it means that they simply defer or shift their impact -  usually to their teammates or customers, but to each his own (as long as I don't have to work with them).</p>

<p>But mainly its the first group that is the most challenging -- the better nature people. They argue that people need to be disciplined -- its part of being a professional. The thing is: I'd rather the discipline come early (in setting up the process) than be hoped for in the heat of the critical 11th hour bug-fix. By shifting the notion of discipline from "make sure you do x, y and z on each check-in" to: "maek sure that y and z happen automatically, that way if you forget x, the build will break -- oh and its more likely to happen if you put it off (so make sure you do it often)" we get discipline with teeth.</p>

<p>A recent example from my current situation illustrates the difference. Like many teams practicing continuous integration, our team rebuilds the database as part of the build. If a programmer makes changes to the database schema, those changes are not reflected in the code base unless they update and check-in a binary "back-up" of the database. This file is then used (if there are changes) to rebuild the database on the build machine, and other development machines. There is no way to overlook this step -- one can (with effort) circumvent it, but one can't simply forget since one's changes won't make it into the build, and it will probably break (having story tests helps here too, but that's a different entry).</p>

<p>We used to use a text representation, but by switching to the binary format, we greatly reduced our build time -- at the expense of indivdiual change tracking (before the changes to each database object were versioned in the source code repository). Recently, we decided to add back (but not use to rebuild) the generation of the text representation. Unfortunately, our first pass requires opt-in on the part of the programmer (one needs to remember to run the old script and annotate the changes on check-in, as well as run the binary update). Its opt-in because unlike before, those scripts aren't used for anything (other than documentation), so failure to update them will not fail the build.</p>

<p>I discussed this with the programmer who implemented the solution (his name is Brian), and we debated the merits of the alternatives. My preference is to make the script run as part of the official build (managed by <a href="http://ccnet.thoughtworks.com/">CruiseControl</a>), purely as a housekeeping step. His counter was that having it done by the programmer on check-in allows detailed descriptions of what changed. We haven't -- as of this writing -- changed it yet, however Brian informed me earlier this week that he woke up in a cold sweat the other night thinking that he had in fact forgotten to run this script, and is now working out how to include it in our build.  (Thus, I have officially caused someone nightmares by talking about continuous integration!)</p>

<p>Its the right choice. The extra documentation potential is simply far outweighed by the risk of omission. By moving the execution into the build, we get an automated change-log of each database object (each one is stored separately allowing a diff), <i>and</i> the guarantee that it will happen if anyone wants their changes actually submitted into the code base.</p>

<p>Brian's intuition is understandable -- its a bit simpler to implement, and its tempting when one has a high regard for the quality of one's teammates (as we do) to rely on their professionalism, but experience shows that no one is perfect, someone <i>will</i> forget to run the script, and they'll forget when we need it the most: in the heat of a critical fix with time pressure.</p>

<p>The only answer that allows me to sleep at night: use the build process to keep ourselves honest, that's what its there for.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=267</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000267.html</guid>
	<dc:date>2006-01-26T13:20:46-06:00</dc:date>
</item>
<item>
	<title>Free Features</title>
	<link>http://www.williamcaputo.com/archives/000266.html</link>
	<description><![CDATA[<div class="quote">
"There Ain't No Such Thing As A Free Lunch," -- Robert A. Heinlein <a href="http://en.wikipedia.org/wiki/The_Moon_is_a_Harsh_Mistress"><i>The Moon is a Harsh Mistress</i></a>
</div>

<p>Summary: Avoid the temptation to deem features "in scope" because of the illusion that they are free.</p>

<p>Its very common for customers, when asked if they want a story to include option x, to reply: "well, I'll take it if it doesn't cost anything" -- i.e. if it doesn't change the estimate.</p>

<p>While its tempting (especially if its small) to give in to this, its a mistake. Here's why:</p>

<p>First, if the option in question is needed, then its needed whether cheap or expsensive (we'll get to ROI in a minute), so this is a dead giveaway that the value of the feature has not been established (IOW, its likely something "cool" but not something valuable). Second, nothing is ever free, its either already there, or someone will spend time adding it -- time that could be used for something that <i>is</i> considered valuable.</p>

<p>Yes, there are features where if cheap enough, they could be included. Such marginal ROI features however are not generally when this situation arises (those usually float near the bottom-middle of the story stack). In such cases though, they should still have some point value attached (even if you have to throw a couple together to make a one point story).</p>

<p>So, why is this so common? I think the answer is due in part to the fact that many development efforts have slack -- hidden slack -- built in because of the all-to-common practice of negotiated estimation. Negotiated Estimation is where the software creator guesses at the time it will take (usually padding the result in anticipation of pushback), and the software customer (or a representative project manager) pushes back on the estimates to coerce the result into alignment with expectations. At the extreme this becomes not a negotiation, but a one-way edict: The software <b>will</b> be completed within this time. The result is a strange compromise (strange in that both compromises are known to the creator, not the customer): The schedule is sandbagged, and quality is sacrificied.</p>

<p>Many customers are experienced with this mode of development, and so push the creators to add features (assuming their estimates are conservative). The most pressure is brought by former programmers who padded their estimates and assume that others do too. This also produces another wasteful side-effect: Vague areas are filled in by the programmer; ambiguous business rules are guessed at, speculative features that seem to add completeness are included, and non-functional eye candy are lovingly tweaked -- all without the customer's involvement. This is an awful lot of inefficiency, for free.</p>

<p>However, if you subscribe to the principle (you may not) that the person who is going to use and pay for the software should be the one -- the only one -- to <i>decide</i> (suggestion and advice are something else) what functionality is included, then you can see how such reliance on the programmer to make the decision whether speculative "free" features are added is counter to this goal. Instead, I subscribe to the notion that its better to have slack visible (it should exist regardless), get all effort quantified (not negotiated!), and assume all features are out, unless explicitly included (with the inevitable ambiguities resolved via regular customer discusion). It makes for better expectations all around, it builds trust, it puts decidable changes (i.e. changing scope instead of trying to change estimates) in the hands of the decision makers, and -- at its best -- results in better quality software, with better work environments.</p>

<p>But that's just me.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>1</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=266</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000266.html</guid>
	<dc:date>2006-01-25T12:51:56-06:00</dc:date>
</item>
<item>
	<title>Asking about Trust</title>
	<link>http://www.williamcaputo.com/archives/000265.html</link>
	<description><![CDATA[<div class="quote">
"A desire to be observed, considered, esteemed, praised, beloved, and admired by his fellows is one of the earliest as well as the keenest dispositions discovered in the heart of man." -- John Adams (Attributed)
</div>
<p>[Note: Yet another old draft]</p>

<p>"Can you be trusted?"</p>

<p>It's a question we ask people all the time -- not necessarily out loud, but we do so nonetheless. We ask it by evaluating their actions, and their words. We look, rather than listen for the answer. More than their personalities, more than their motives, we look at their results.</p>

<p>This entry was drafted not long after I found myself wanting to literally ask someone this, but didn't. I reflected afterward: "Why not?" Why, almost as soon as the notion formed, was my inclination to reject the idea?  It would be rude for one -- even politically inexpedient as I was a consultant and that person a client manager. It seemed pretty illogical for another -- seeming about as fruitful as asking someone if they are a liar.</p>

<p>Yet the more I thought about it, the more I liked the idea. I figured the rude part could be mitigated by careful phrasing, but that left the logical futility. Since the answer is going to be some form of, "Yes, I am trustworthy" why bother?</p>

<p>My conclusion was that the value (if any) would come, not from <i>what</i> the person answers, but <i>how</i> -- and what they did afterward. If his actions had shown the question had rattled him, or led to a change in behavior (I am assuming that it was prior behavior that led to my desire to ask in the first place), it could be a sign that the person is manipulating how they are viewed by others.</p>

<p>In short, I concluded that usually asking the question would be useless, but the surprise factor of throwing it right out there, might just rattle someone's cage enough for you to get an accurate glimpse inside.</p>


<p>I kinda wish now, I had asked. Maybe someday, I will.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=265</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000265.html</guid>
	<dc:date>2006-01-24T10:20:04-06:00</dc:date>
</item>
<item>
	<title>The Steelers</title>
	<link>http://www.williamcaputo.com/archives/000263.html</link>
	<description><![CDATA[<div class="quote">
Yoy, And Double Yoy! -- Myron Cope.
</div>

<p>Congratulations to my hometown <a href="http://news6.steelers.com/">Pittsburgh Steelers</a> on their pending trip to the Super Bowl after a great run in the AFC playoffs. Go Steelers!</p>

<p>I have vivid (and fond) memories of the pandemonium in my hometown (about 40 miles outside of Pittsburgh) after the Steelers beat the Rams in Super Bowl XIV -- hard to believe that was 26 years ago.</p>

<p>Other Fond Steeler-related memories for me include: meeting (and having my picture taken) with <a href="http://www.rockybleier.com/story.html">Rocky Bleier</a> when I was about 11, and playing at Three-Rivers Stadium for the conference championship for my senior year in High School (we lost 19-0, but it was a memorable experience nonetheless).</p>

<p>A less-fond, but still vivid memory stems from an encounter with my childhood hero <a href="http://en.wikipedia.org/wiki/Mike_Webster">Mike Webster</a>. My dad and I had gone to a Steeler game, and I was so keen to get Webster's autograph that I talked my dad into waiting by the player's exit for what seemed like forever. Finally, he came out -- and walked right by me without acknowledging me in any way. That's hard on a little kid and I was really disappointed, but eventually got over it (he was still the greatest center who ever lived after all) -- especially later once I realized that he might have been too ill to notice (for more follow the link).</p>

<p>Anyway, I'm not known for following football too much, but I've really followed the NFL this season. I credit (blame?) Tivo and the HBO show "Inside the NFL" for changing that this year. Apparently, I picked a good season to pay attention. Watching the Steelers in Super Bowl XL will be a great finish.</p>

<p>Hopefully this year, Pittsburgh will get the mythic "One for the Thumb."</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=263</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000263.html</guid>
	<dc:date>2006-01-23T10:18:51-06:00</dc:date>
</item>
<item>
	<title>Bad Links</title>
	<link>http://www.williamcaputo.com/archives/000262.html</link>
	<description><![CDATA[<div class="quote">
"I won't complain. I just won't come back." -- Brown & Williamson advertisement
</div>

<p>This site has been through several incarnations. For the earliest, <a href="http://blog.alancfrancis.com/">Alan Francis</a> guest-hosted it off his old site (twelve71). After getting a domain name, I hosted it for a time on the ThoughtWorks gigaton server (a sorta catch-all server with free space for employees). That was great (read: free), but the fact that it got used for all kinds of things made it less reliable than I wanted, so I went hunting for a permanent home. Again, Alan was there to help; this time in the form of recommending <a href="http://www.bytemark.co.uk/index.html">Bytemark</a>. I've been there ever since. Great service, great price. Just the right balance of control and reliability that I was looking for.</p>

<p>With all that moving around and rebuilding, some links have rotted away, and there are some links out there that don't go where they should. I wanted to fix that. So I tackled the first one this week: Links to url's that point to Alan's old site. IOW, Once again, I looked to Alan for help.</p>

<p>Here's an example of the problem:</p>

<p>Keith Ray <a href="http://homepage.mac.com/keithray/blog/2003/10/16/">links to an early posting here</a>. That link points to: http://www.twelve71.com/caputo/archive/000236.html. From the context of Keith's posting, its clear that link is meant for <a href="http://www.williamcaputo.com/archives/000009.html">my take on exceptions</a> (a rebuttal of an <a href="http://www.joelonsoftware.com/items/2003/10/13.html">article</a> from Joel Spolsky). The real page is actually named archives/000009.html. What to do?</p>

<p>There are two challenges: Getting traffic going to the folder on Alan's machine to come to mine, and redirecting archive links into their new location. Alan dealt with the former, and I the latter. Here's how we did it:</p>

<p>Alan was kind enough to add a permanent redirect from the folder to my site. He accomplished this easily by simply adding the following to his httpd.conf (Apache of course):</p>

<pre>
Redirect permanent /caputo http://www.williamcaputo.com #requests for /caputo folder redirected to site
</pre>

<p>If the directory/file structure on my site was the same, this would just work, but because I've changed some things since then, I had more work to do. The biggest difference is that my permanent links used to be under a directory called '/archive/' but now are located in '/archives/' -- so I added that folder. Next, the articles under the old folder had different names than they do now -- the version of MovableType that I use, annoyingly uses the index number of the database entry for the file name. This has changed in newer versions. Since I didn't want to copy the files to both, and the numbers have changed, I decided to handle this at the OS level via symlinks. However, symlinks (by default are not followed by Apache, so I had a change to make to httpd.conf too:</p>

<pre>
 &lt;Directory /path/to/wwwroot/archive/&gt;
        Options FollowSymLinks
&lt;/Directory&gt;
</pre>

<p>This allows symlinks <i>only</i> in the archive folder. Now I can create a symlink in archive/000236.html that redirects to archives/000009.html. The only downside is that they actually show up as two different pages in my traffic stats, but I consider that an advantage: it will be easier for me to track how much traffic actually goes through the older "sites" (and possibly notify other websites to update links).</p>

<p>With that one out of the way, I still need to detect and handle dead links (i.e. 404 errors). I need to investigate log readers for that purpose (time is at a premium, suggestions welcome). I also need to deal with incorrect links (i.e. links that point to real pages on my site, but not the one's they are supposed to). Some of these are easier than others (more on those as I fix them).</p>

<p>This might seem like a lot of work. Granted, I could simply say: "That's the problem of those who linked to me -- they should keep links up to date" but that doesn't really help those trying to find their way here -- nor does it help me get more readers. In the end, that's just bad customer service... not something I believe in.</p>

<p>As a bonus, I got to learn a bit more about Apache. I just hope things don't change more -- keeping this page's working would then be quite a challenge.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=262</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000262.html</guid>
	<dc:date>2006-01-19T11:07:44-06:00</dc:date>
</item>
<item>
	<title>Visual Studio Team System Jumpstart</title>
	<link>http://www.williamcaputo.com/archives/000261.html</link>
	<description><![CDATA[<div class="quote">
"Beware consultants bearing gifts" -- Anonymous
</div>

<p>Short entry today. Clark Sell has been doing a lot with Visual Studio Team System (VSTS), and he's <a href="http://csell.net/PermaLink,guid,1151f1f6-121c-4060-9a76-92b8e6162ccd.aspx">posted a jumpstart kit</a> (almost a portal/clearinghouse) to help people wend their way through getting started with it.</p>

<p>Good Stuff, thanks Clark.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=261</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000261.html</guid>
	<dc:date>2006-01-18T11:32:10-06:00</dc:date>
</item>
<item>
	<title>Aligining Value</title>
	<link>http://www.williamcaputo.com/archives/000260.html</link>
	<description><![CDATA[<div class="quote">
"The shaping of deeply felt values into meaningful, apposite form, is present in all communities, and will find some means of expressions among all..." -- Dell Hymes
</div>

<p>Mike Roberts <a href="http://www.mikebroberts.com/blog/archive/Tech/Agile/Ifitreallywasallaboutbusinessvaluemylifewouldbesomucheasier.html">points out</a> the difficulty of applying Agile methods in an organization with values that don't match those of Agile practioners. Specifically Mike describes the difficulty (but possibility) of using an Agile method when the organization doesn't align software development with business value. Why business value? Well, according to Mike this is what many feel Agile methods value:</p>
<blockquote>
The principles behind the Agile Manifesto state "Our highest priority is to satisfy the customer through early and continuous delivery of valuable software." I've often heard this shortened into a frequently used battle-cry of Agile: It's all about business value!.
</blockquote>

<p>("Business Value" here seems to mean some objective, measurable bottom-line goal)</p>

<p>Mike then goes on to note that in an environment where this "Business Value" is not the goal, Applying an Agile method successfully is much more difficult. Fortunately Mike also points to a way forward: "what's needed is a knowledge about what motivates every individual within the stakeholder community." I assert that this is what should be done in the first place.</p>

<p>I think Mike has (perhaps unintentionally) illuminated a flaw in Agile as commonly practiced these days. Namely: those Agilists who are running around issuing the battle cry of "Its about business value" are making software development about them rather than their Customer. I.e. they are violating the very principle they profess to practice.</p>


<p>If you don't feel its important to understand what your customer values, if you assume that they (or worse tell them that they should) equate valuable software with 'software of Business Value' of course you are going to have a very difficult time succeeding (unless they happen to agree), because you are <i>working toward a goal other than that of your Customer.</i></p>

<p>For those people who believe this (I am not saying that this necessarily includes Mike) what I am about to say might seem profound (to everyone else it'll just be common sense): Customer satisfaction is not achieved by preaching to your customer that they must strive for "business value" -- or any other valuation that you have defined as important, but rather by understanding <i>their</i> goals and giving them  software that achieves what <i>they</i> value, whatever that might be. IOW: 'Business Value' means 'What the Customer Values' -- no more, no less.</p>

<p>So, save yourself the trouble; leave this "Business Value" stuff out of it. If that happens to be the goal of your Customer then by all means that's how to measure the value the software you're creating (and certainly its good when one has such customers), but that does not imply that it <b>must</b> be the goal of one's Customer, or that there are not legitimate Customers who may value something else (particularly in big IT where Agile adoption is all the rage right now). That little detail seems to have gotten lost during the Agile diaspora.</p>

<p>The fact that "[S]atisfy the customer through early and continuous delivery of valuable software" has turned into: "It's all about business value" means that being about the Customer, or more generally the People (once a key Agile value) is no longer true. If this is the case, this reinforces my feeling that Agile is in the process of becoming its opposite, serving to reinforce the very problem it was once a reaction against: Programmers deciding what's important for their Customers, instead of asking them. Wrapping it up in a pretty Agile wrapper just soils the wrapper.</p>

<p>In short, its not about whether one's stakeholders are striving for "Business Value" that makes using an Agile method hard, its that getting one's stakeholders aligned is hard -- regardless of method. What allows one to deliver anyway is the ability to align one's effort with the customer's desires, not the other way round.</p>

<p>Not telling them what they must value would be a good start.</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>5</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=260</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000260.html</guid>
	<dc:date>2006-01-17T14:40:34-06:00</dc:date>
</item>
<item>
	<title>Lisp Again</title>
	<link>http://www.williamcaputo.com/archives/000259.html</link>
	<description><![CDATA[<div class="quote">
"Above and beyond these considerations, programming in Lisp is great fun." -- Harold Abelson, Gerald Jay Sussman <i><a href="http://mitpress.mit.edu/sicp/full-text/book/book.html">Structure and Interpretation of Computer Programs</a></i>
</div>

<p>A few weeks ago, <a href="http://www.williamcaputo.com/archives/000245.html">I mentioned</a> that there is some buzz in the blogosphere that Agile and lisp may be converging as the future of programming at Microsoft. In the comments, <a href="http://codebetter.com/blogs/jeremy.miller/">Jeremy Miller</a> asked me "how or where a functional language approach is advantageous" and I suggested that someday I might follow up on why.</p>

<p>Well, Sriram Krishnan has provided both a good start on answering that question, and pointers to a whole lot more resources, so for now at least I will simply <a href="http://blogs.msdn.com/sriram/archive/2006/01/15/lisp_is_sin.aspx">refer you to him</a>.</p>

<p>Enjoy!</p>]]></description>
        <author>William E. Caputo</author>
	<slash:comments>0</slash:comments>
<comments>http://www.williamcaputo.com/xyz-bin/mt/mt-comments.cgi?entry_id=259</comments>
	<guid isPermaLink="true">http://www.williamcaputo.com/archives/000259.html</guid>
	<dc:date>2006-01-16T09:20:44-06:00</dc:date>
</item>


</channel>
</rss>