<?xml version="1.0" encoding="iso-8859-1" ?>

<rss version="2.0">
<channel>
<title>Eric.Weblog()</title>
<link>http://software.ericsink.com/</link>
<description>Thoughts about software from yet another person who invented the Internet</description>
<copyright>Copyright 2001-2007 Eric Sink. All Rights Reserved</copyright>
<generator>mine</generator>


<item>
<title>Upcoming Gigs</title>
<guid>http://software.ericsink.com/entries/guadec_bos.html</guid>
<link>http://software.ericsink.com/entries/guadec_bos.html</link>
<pubDate>Mon, 12 May 2008 08:19:41 CST</pubDate>
<description>
<![CDATA[
<p>In July I will be giving a keynote address at <a
href="http://guadec.expectnation.com/public/content/keynotes">GUADEC</a>, the
annual GNOME conference, being held this year in Istanbul.</p>

<p>In September I will be speaking again at the <a
href="http://businessofsoftware.org/">Business of Software</a> conference,
being held this year in Boston.</p>

<p>And finally, for something completely different, don't miss
the Jam Session at Tech-Ed on June 3<sup>rd</sup>.&nbsp; Several of us minions from
SourceGear are planning to take the stage and give our rendition of <a
href="http://en.wikipedia.org/wiki/Pinball_Wizard">Pinball Wizard</a>.&nbsp; It'll
be me on acoustic guitar, our development manager <a
href="http://vaultblog.sourcegear.com/">Jeremy Sheeley</a> on bass, and our product
manager Paul Roub playing the <a
href="http://blog.roub.net/2008/02/the_evil_mastermind_guitars_you_heard_me.html">Evil
Mastermind Schecter PT</a> that will be given away later that week.</p>

<p>And BTW, none of us will be dressed as <a
href="http://www.sourcegear.com/TEM/index.html">The Evil Mastermind</a>.&nbsp; This
should be obvious, as The Evil Mastermind would never do something actually
cool like a song by The Who.&nbsp; Rather, he would do something like a Kelly
Clarkson song and mistakenly believe it was cool.&nbsp; <b>:-)</b></p>

<p></p>
]]>
</description>
</item>

<item>
<title>Three Personal Highlights</title>
<guid>http://software.ericsink.com/entries/Gloat_20080509.html</guid>
<link>http://software.ericsink.com/entries/Gloat_20080509.html</link>
<pubDate>Fri, 09 May 2008 15:26:20 CST</pubDate>
<description>
<![CDATA[
<p>It's Friday afternoon, so I hope my readers will indulge me
a bit of gloating over three recent moments of personal triumph:</p>

<ol style='margin-top:0in' start=1 type=1>
 <li >Playing the 12<sup>th</sup> hole at my <a
     href="http://uofigolf.com/index.php?option=com_content&amp;task=view&amp;id=21&amp;Itemid=38">regular
     course</a>, I made a shot from about 80 yards out.&nbsp; Unfortunately, it was
     for par.&nbsp; <b>:-(</b><br>
     <br>
 </li>
 <li >This past Saturday I walked the <a
     href="http://www.500festival.com/marathon/2008MiniMarathonResults.asp">Indianapolis
     half marathon</a> in a personal record time of 14:57 per mile.<br>
     <br>
 </li>
 <li >After setting up my new subwoofer, I put in the <a
     href="http://www.imdb.com/title/tt0167260/">Return of the King</a> DVD and
     zoomed ahead to the Minas Tirith battle scenes.&nbsp; Seconds later, my younger
     daughter ran upstairs and cried, "Daddy, your movie is shaking the whole
     house!"</li>
</ol>

<p>All three of these were moments of great personal
satisfaction.&nbsp; The third one was the only one to result in maniacal laughter.</p>

<p></p>
]]>
</description>
</item>

<item>
<title>Windows XP and the importance of listening to customers</title>
<guid>http://software.ericsink.com/entries/Save_Windows_XP.html</guid>
<link>http://software.ericsink.com/entries/Save_Windows_XP.html</link>
<pubDate>Mon, 28 Apr 2008 10:22:38 CST</pubDate>
<description>
<![CDATA[
<p>On June 30, Microsoft will discontinue Windows XP in an
effort to force all PC users onto Windows Vista.&nbsp; As this date gets closer and
closer, they have stubbornly insisted that they will not change their plans.</p>

<p>Last week, Microsoft CEO Steve Ballmer <a
href="http://www.news.com/8301-10784_3-9927721-7.html?tag=nefd.only">blinked</a>,
but in a rather confusing way:</p>

<ul style='margin-top:0in' type=disc>
 <li >The sensible part:&nbsp; Ballmer claimed that they might
     reconsider their decision if that's what customers wanted.<br>
     <br>
 </li>
 <li >The confusing part:&nbsp; Ballmer appeared to be completely
     ignorant of the multitudes of people publicly begging for XP to get a stay
     of execution.</li>
</ul>

<p>Just want kind of customer feedback would Ballmer be able to
hear?</p>

<p>It's really not that hard to find overwhelming evidence of
large numbers of people who want to continue using XP.&nbsp; A simple Google search
for the string "<a href="http://www.google.com/search?q=%22save+windows+xp%22">save
windows XP</a>" results in over 200 thousand hits.</p>

<p>Oh yeah, I forgot -- Steve probably doesn't use Google. &nbsp;Maybe
the problem is that he just can't find any XP fans on the Internets?&nbsp; <b>:-)</b></p>

<p>Or maybe Ballmer is following the now fashionable trend of
counting an Internet person as only 3/5 of a real person?</p>

<ul style='margin-top:0in' type=disc>
 <li >Sure, Ron Paul has lots of fanatical supporters, but they're
     mostly just people on the Internet, and they don't really count.<br>
     <br>
 </li>
 <li >Sure, Barack Obama has raised truckloads of money, but he
     mostly gets it from people on the Internet, and they don't really count.<br>
     <br>
 </li>
 <li >Sure, over 170 thousand people have signed the <a
     href="http://weblog.infoworld.com/save-xp/">Save Windows XP petition</a>,
     but those people are on the Internet, so they don't really count.</li>
</ul>

<p>Or maybe this is simply the most arrogant corporate decision
in history?&nbsp; Maybe Steve can hear all of these desperate cries but he simply
doesn't care.</p>

<p>Power corrupts.&nbsp; Every monstrously large organization
eventually turns into, well, a monster.&nbsp; The next step is for all these
organizations to start borrowing each other's tactics.&nbsp; Hey Steve, why not
start waterboarding everybody who won't switch to Windows Vista?&nbsp; Apparently
it's legal.&nbsp; <b>:-)</b></p>

<p>The whole situation is most annoying to those of us who are
running small software companies.&nbsp; Unlike Microsoft, we actually have to listen
to our customers.&nbsp; When they tell us to jump, we ask how high.</p>

<p>Microsoft is telling millions of its customers to jump.&nbsp; Out
of principle, I am doing my best not to comply:</p>

<ul style='margin-top:0in' type=disc>
 <li >I'm typing this blog entry on Windows XP.<br>
     <br>
 </li>
 <li >That instance of Windows XP is actually a VMware image
     running on my Mac.&nbsp; I started using a MacBook Pro with Leopard a couple
     months ago.&nbsp; And I love it.<br>
     <br>
 </li>
 <li >I just donated fifty bucks to the <a
     href="http://www.reactos.org/">ReactOS</a> project.&nbsp; I'm figuring that in
     the long run, I've got a better chance of getting Windows XP from ReactOS
     than from Redmond.</li>
</ul>

<p>Some of my readers are horrified at this blog entry.&nbsp; "But
Eric, aren't you a .NET developer?"</p>

<p>Yes, I am.&nbsp; My overall posture toward Microsoft is still
friendly.&nbsp; I still use Windows every day.&nbsp; I still love Visual Studio.&nbsp; C# is
still my favorite language ever.&nbsp; Heck, I'm even a big WPF fan, so I'd actually
prefer to see the world switch to Vista.&nbsp; I've used Vista, and while I didn't
find it to be a compelling "must-have" upgrade, I rather liked it.</p>

<p>But none of this means that I'm going to give my blanket
agreement to every decision Microsoft makes.&nbsp; In this case, I object to
Microsoft's plan, not because Vista is so awful, but rather, because ignoring
customers is so wrong.</p>

<p></p>
]]>
</description>
</item>

<item>
<title>What is ALM?  Traceability</title>
<guid>http://software.ericsink.com/alm/traceability.html</guid>
<link>http://software.ericsink.com/alm/traceability.html</link>
<pubDate>Wed, 16 Apr 2008 14:13:25 CST</pubDate>
<description>
<![CDATA[
<h3>What is ALM?</h3>

<p>If you are a software developer, there are a whole bunch of
companies (including mine) who want to sell you stuff.</p>

<p>If you read any magazines, go to any conferences, or visit
any websites, there is a good chance you've seen their (our) marketing efforts.</p>

<p>More and more often, the term you see in those marketing
materials is "ALM".&nbsp; Ever wondered what that term means?</p>

<p>It means "Application Lifecycle Management".</p>

<p>Don't you feel better now that I've cleared all that up?&nbsp; <b>:-)</b></p>

<h3>Digression:&nbsp; Dead-End Acronyms</h3>

<p>So ALM is what I call a dead-end acronym.&nbsp; Like all
acronyms, nobody knows what it means until you see its expanded form.&nbsp; But with
<i>dead-end</i> acronyms, people can stare all they want at the expanded form
and they <i>still</i> don't know what it means.&nbsp; There's nowhere to go.&nbsp; It's a
dead-end.</p>

<p>We software developers have a tendency to create dead-end
acronyms.&nbsp; For example, SOA means "Service Oriented Architecture", but I still
don't know what that means.</p>

<p>My personal theory is that dead-end acronyms get created
when somebody forces the issue.&nbsp; They create an acronym which didn't want to be
created.&nbsp; Indigo didn't really want to be WCF -- it just wanted to stay Indigo.</p>

<p>Dead-end acronyms.&nbsp; Our special gift to the world.</p>

<h3>No, really.&nbsp; What is ALM?</h3>

<p>Back to the point.&nbsp; What is ALM?&nbsp; Let's look a bit deeper.&nbsp;
The expanded form actually does hold a few clues:</p>

<ul style='margin-top:0in' type=disc>
 <li >From the word "Application" (and from the overall context)
     we know that this is about "Software Development".&nbsp; </li>
 <li >The word "Management" is fairly intuitive all by itself.</li>
 <li >The word "Lifecycle" tells us that we're talking about the
     whole software development process.&nbsp; All of it.</li>
</ul>

<p>So, we can translate "ALM" to "Managing The Whole Software
Development Process".</p>

<p>I suppose it's obvious that "MTWSDP" doesn't exactly roll
off the tongue like "ALM" does.</p>

<p>Worse, I'd have to say we still haven't made much progress
here.&nbsp; Isn't there some way out of this dead-end?&nbsp; </p>

<p>What is ALM?</p>

<h3>Two roads diverged in a wood, and I...</h3>

<p>Starting from this point, attempts to define ALM usually go
in one of two distinct directions.</p>

<ol style='margin-top:0in' start=1 type=1>
 <li >The Trees (focus on the details)</li>
 <ol style='margin-top:0in' start=1 type=a>
  <li >List all of the activities in the whole software
      development process (idea, market research, requirements, design,
      architecture, implementation, testing, release, wild drunk release party,
      user support, postmortem, assignment of blame, sackings, regret over
      impulsive terminations, rehiring as contractors at twice the cost,
      lather, rinse, repeat).</li>
  <li >For each activity, list one or more tools that support
      that activity (requirements management, modeling, compilers, automated
      testing, issue tracking, project management, dart board, help desk, time
      tracking, etc).</li>
 </ol>
 <li >The Forest (look at the big-picture)</li>
 <ol style='margin-top:0in' start=1 type=a>
  <li >Talk about the benefits that software managers can get
      from looking at the whole lifecycle.</li>
  <li >Talk about the integration between the various tools in
      the whole software development process.</li>
 </ol>
</ol>

<p>I believe the essence of ALM lies in the big picture view,
in the real benefits that software managers get from using a truly integrated
suite of tools that give them the ability to deal with the whole software
development lifecycle.&nbsp; My definition of ALM proceeds from The Forest
perspective, the big picture view.</p>

<h3>Getting more specific</h3>

<p>So far this piece is over 500 words long and it still
doesn't say anything.&nbsp; It's time to get a bit more specific.</p>

<p>Before I go any further, let me say that this particular
article does not attempt to offer a complete definition of ALM.&nbsp; For now I am
going to focus on just one issue:&nbsp; Traceability.</p>

<p>Let's look at an example.</p>

<h3>The Mystery of the PersonCompanyAssoc Table, Part 1</h3>

<p><i>Joe is a technical support representative for CrummySoft,
an ISV that sells a CRM solution.&nbsp; He is working with a customer who says they
just upgraded from version 6.0 to 7.0 and suddenly everything became really slow.&nbsp;
In an effort to track down the problem, he goes to visit Sally, a program
manager.</i></p>

<p>Joe:&nbsp; One of my customers says version 7.0 is a lot slower
than 6.0.</p>

<p>Sally:&nbsp; How much is "a lot"?</p>

<p>Joe:&nbsp; Loading their dashboard page went from 1 second to
around 30 seconds.</p>

<p>Sally:&nbsp; That's a lot.&nbsp; How many other customers are
complaining about this?</p>

<p>Joe:&nbsp; I've heard of a few.&nbsp; Maybe a dozen.&nbsp; So far.</p>

<p><i>The detective work begins.&nbsp; Sally opens her IDE and digs
into the problem.&nbsp; Looking into the DB schema, she sees something odd.</i></p>

<p>Sally:&nbsp; Here's something odd.</p>

<p>Joe:&nbsp; What?</p>

<p>Sally:&nbsp; Somebody changed the SQL table schema during the 7.0
dev cycle.&nbsp; In 6.0 and prior, each person could be associated with exactly one
company.&nbsp; In fact, the People table had a column which was a foreign key into
the Companies table.&nbsp; Sometime during 7.0, this changed.&nbsp; Now we have a new
table called PersonCompanyAssoc, which allows a Person to be connected with
more than one company.</p>

<p>Joe:&nbsp; OK.&nbsp; So what's the problem?</p>

<p>Sally:&nbsp; The problem is that there were lots of places in the
code which assumed a Person would only be associated with one Company.&nbsp;
Somebody went through and tried to fix them all with a bunch of changes to
indexes, triggers and constraints.&nbsp; Not all of those fixes were done in a very
scalable way.&nbsp; Most customers will be unaffected, but I could imagine some
situations where we end up with a major slowdown.</p>

<p>Joe:&nbsp; What kinds of situations?</p>

<p>Sally:&nbsp; Well, for example, I'm guessing things would get bad
if the Locations table has lots of different entries for the same Company.</p>

<p>Joe:&nbsp; Bingo.&nbsp; My customer deals mostly with virtual
companies.&nbsp; Their database has one company which is scattered across thirty
different states and five countries in Europe.</p>

<p>Sally:&nbsp; That would do it.</p>

<p>Joe:&nbsp; So doesn't this change seem kind of stupid anyway?&nbsp;
Why would somebody need the ability to associate one person with multiple
organizations?</p>

<p>Sally:&nbsp; I don't know, but there's probably a reason.&nbsp; Let's
look for more clues.</p>

<p><i>Sally brings up the version control history log to find
out who made these code changes and why.</i></p>

<p>Sally:&nbsp; Apparently the PersonCompanyAssoc table was added by
a developer named Tony.&nbsp; The checkin comment explains what he was doing, but
there's no rationale for why and no mention of the spec for this feature.</p>

<p>Joe:&nbsp; So hey, as long as we're here in the code, can you
just put it back the way it was?&nbsp; If this change doesn't make any sense and
it's causing performance problems, why not just undo it?</p>

<p>Sally:&nbsp; It would probably be better to understand the whole
story before we just change it back.&nbsp; Let's go find Tony and ask for more info.</p>

<h3>Isn't version control enough?</h3>

<p>Version control does give you some traceability, and that's
a good thing.&nbsp; But in many cases, it is not enough.</p>

<p>Version control will tell you about code changes.&nbsp; It can
answer questions like Who, What and When.&nbsp; But the hardest question in
traceability is Why, and version control often lacks enough information to give
a good answer.&nbsp; Even if the developer is supposed to give a checkin comment
which explains why a change was made, the detective work tends to get stuck
because the clues dry up.</p>

<ul style='margin-top:0in' type=disc>
 <li >Why is this piece of code there?</li>
 <ul style='margin-top:0in' type=circle>
  <li >Oh, it was to fix a bug.</li>
 </ul>
 <li >Which bug?</li>
 <ul style='margin-top:0in' type=circle>
  <li >Oh, that one.</li>
 </ul>
 <li >But why was this a bug?</li>
 <ul style='margin-top:0in' type=circle>
  <li >Oh, the spec says it should work this way.</li>
 </ul>
 <li >But why?</li>
 <ul style='margin-top:0in' type=circle>
  <li >Oh, here's the rationale for that requirement.&nbsp; It came
      from marketing research.</li>
 </ul>
</ul>

<p>Very few developers write checkin comments which are good
enough to solve the really tough mysteries in software development, and they
shouldn't have to.&nbsp; We don't need better checkin comments.&nbsp; We need all the
artifacts from the whole software development process to be linked together.</p>

<h3>The Mystery, Part 2</h3>

<p><i>Sally and Joe walk across the CrummySoft campus to
building 71 where they find themselves in a seemingly endless room filled with
cubicles. &nbsp;The manager sitting next to the entrance at a mahogany desk with a
nameplate identifying him as Biff.</i></p>

<p>Biff:&nbsp; Can I help you?</p>

<p>Sally:&nbsp; We're looking for a developer named Tony.&nbsp; Is he
here?</p>

<p>Biff:&nbsp; Why do you want to see him?</p>

<p>Sally:&nbsp; He made a code change and we need to ask him for
more information about it.</p>

<p>Biff:&nbsp; OK, let's see.&nbsp; Tony.&nbsp; Ah yes, he's in cubicle
19-346-B.</p>

<p>Joe:&nbsp; 19-346-B.&nbsp; Where's that?</p>

<p>Biff:&nbsp; I gather that you've never been here before?&nbsp; Very
well.&nbsp; Cubicle 19-346-B.&nbsp; Go to aisle 19.&nbsp; Walk down to the 346<sup>th</sup>
cubicle.&nbsp; Tony should be in the one on your left.</p>

<p><i>Joe and Sally eventually reach Tony's cubicle where they
find him playing World of Warcraft.</i></p>

<p>Tony:&nbsp; You need somethin'?</p>

<p>Joe:&nbsp; Why did you add a PersonCompanyAssoc table during the
7.0 dev cycle?</p>

<p>Tony:&nbsp; How should I know?&nbsp; That was like nine months ago.&nbsp;
I've probably made at least two other code changes since then.&nbsp; I can't be
expected to remember details like that.</p>

<p>Sally:&nbsp; Do you know anyone who might know?</p>

<p>Tony:&nbsp; Ask Phil in QA.&nbsp; Maybe there's some info in that bug
tracking database I've seen him using.</p>

<p>Joe:&nbsp; So where do we find Phil?</p>

<p>Tony:&nbsp; Geez, have you guys never been here before or what?&nbsp;
Phil is in cubicle 61-842-A.&nbsp; That means you go down to aisle 61, turn left,
and walk down ---</p>

<p>Joe: &nbsp;Yeah, yeah, we got it.&nbsp; Thanks.</p>

<p><i>Sally and Joe meander their way across the cubicle field to
find Phil.&nbsp; Along the way, Joe pauses at the intersection of an aisle and a
row.&nbsp; The walls in all four directions are too far away to see.&nbsp; Continuing on,
they eventually reach their destination.</i></p>

<p>Sally:&nbsp; Phil, any idea why Tony added a PersonCompanyAssoc
table about six months ago?</p>

<p>Phil:&nbsp; Yeah, I think we did that to fix a bug.&nbsp; </p>

<p>Joe:&nbsp; Which bug?</p>

<p>Phil:&nbsp; How should I know?</p>

<p>Sally:&nbsp; Well could you look it up?</p>

<p>Phil:&nbsp; Fine, let's see.&nbsp; Oh yeah, it's bug 8675309.</p>

<p>Sally:&nbsp; Does that bug have any information about why the
change was made?</p>

<p>Phil:&nbsp; Not really, but there's a comment here by somebody on
the sales team.&nbsp; Did you talk to them yet?</p>

<p>Joe:&nbsp; Aha!&nbsp; Let's go ask the sales team!</p>

<h3>Team Size</h3>

<p>ALM tools are often associated with very large projects and
enterprise development.&nbsp; This is just intuitive.&nbsp; The more people involved, the
more complexity to be managed.</p>

<p>Imagine trying to solve a mystery and you get stuck.&nbsp; You
need more clues, so you start canvassing the neighborhood looking for people
who might have seen something suspicious.&nbsp; Now suppose that "the neighborhood"
is a software development division with 5,000 people in it.&nbsp; Those interviews
are going to take a while.</p>

<p>But chaos usually takes over long before a team gets that
large.&nbsp; Traceability may not be as important for a team of 50 as it is for a
team of 5,000, but it can still be pretty important.&nbsp; People forget why things
happen, and that forgetfulness is not a function of the size of the team they
are on.</p>

<p>You may be thinking, "My team is small.&nbsp; We shouldn't have
these kinds of problems, but this mystery still sounds familiar.&nbsp; Why does this
kind of detective work happen when we've only got 10 people?"</p>

<p>Are you sure you are counting everyone?&nbsp; :-)</p>

<p>How about your customers?&nbsp; They are part of your story.&nbsp;
When a customer asks for something, very often it triggers a sequence of
steps.&nbsp; And somebody will probably want to trace that sequence back to that
customer.</p>

<p>SourceGear is a pretty small company.&nbsp; We've got less than
50 people on our staff.</p>

<p>But our flagship product, Vault, is used by about 50 <i>thousand</i>
people.&nbsp; Sometimes we have a mystery to solve.&nbsp; And very often the detective
work leads us to one of those customers.&nbsp; Our customers add to the complexity
of our software lifecycle, and increase our need for traceability.</p>

<h3>The Mystery, Part 3</h3>

<p><i>When the plane arrives in Grand Cayman, Sally and Joe are
greeted by a dozen beautiful people with perfect tans who escort them to the main
company sales office, where, as always, a party is in progress.</i></p>

<p>Joe:&nbsp; Who should we talk to?</p>

<p>Sally:&nbsp; Let's find Bill.&nbsp; He came to the company
headquarters once for a meeting.&nbsp; I think he'll remember us.</p>

<p><i>Weaving through the crowd, they eventually find Bill,
martini in one hand, cell phone in the other.</i></p>

<p>Bill:&nbsp; Do I know you?&nbsp; Oh, wait.&nbsp; Don't you work at the HQ
back in Minneapolis?&nbsp; I think we met last summer when I came up for that golf
outing, er, I mean, sales training.&nbsp; So what brings you all the way here to
visit the sales team?</p>

<p>Joe:&nbsp; We're trying to solve a mystery.&nbsp; Between 6.0 and 7.0,
somebody changed the database schema to handle multiple company associations
per person.&nbsp; Any idea why?</p>

<p>Bill:&nbsp; Can I offer you a martini?</p>

<p>Sally:&nbsp; Seriously, Bill, this code change is causing a lot
of problems.&nbsp; We want to just rip it out, but we figure we should understand
the background first.</p>

<p>Bill:&nbsp; Yeah, yeah, whatever.&nbsp; That wasn't my deal.&nbsp; Ask
Marty.</p>

<p><i>After a bit more searching and stopping briefly to slide
under the limbo bar, Joe and Sally find Marty in the corner of the room
speaking intensely into his cell phone.</i></p>

<p>Marty:&nbsp; Don't worry, you can count on me this time!&nbsp; I'll
have the feature in version 8.0, I promise!</p>

<p>Sally:&nbsp; Hey Marty.&nbsp; We're trying to track down some
information.&nbsp; Somebody changed the DB schema during the 7.0 dev cycle to allow
multiple companies to be associated with each person.&nbsp; Were you the one who
requested that feature?</p>

<p>Marty:&nbsp; Yeah, that's me.&nbsp; I needed that tweak to close a
deal.&nbsp; Is there a problem?</p>

<p>Joe:&nbsp; Yes!&nbsp; That was a lot more than a "tweak".&nbsp; It may seem
simple, but it involved hundreds of code changes, and all kinds of things got
messed up!</p>

<p>Marty:&nbsp; Can I offer you a martini?</p>

<p>Sally:&nbsp; Seriously, can you tell us why this change was necessary?&nbsp;
Why would anybody need to keep track of multiple companies per individual?</p>

<p>Marty:&nbsp; One of my accounts is using our CRM product in
selling to a network of consultants.&nbsp; Those consultants have loose company
affiliations.&nbsp; One day they might be representing company XYZ, and the next day
they're working for company ABC.&nbsp; The assumption of "one company per
individual" just wasn't flexible enough.</p>

<p>Sally:&nbsp; Was it a good deal?&nbsp; I mean, was this worth the
trouble?</p>

<p>Marty:&nbsp; I think so.&nbsp; The deal was quite lucrative, and it
opened the door to half a dozen more like it, three of which I have already
signed.&nbsp; Look, I'm sorry somebody screwed up this code change, but the business
case behind it was solid.</p>

<p>Sally:&nbsp; Alright, fine.&nbsp; Thanks for the info.</p>

<h3>The Whole Team</h3>

<p>The full story of every significant software development
project includes many different people.&nbsp; Most of them are not writing code.&nbsp;
Tracing an issue backward can mean more than finding the bug report that
motivated a code change.&nbsp; We may need to go back further, back to the spec.</p>

<p>We might need to go back even further, back to the market
research or the sales engagement or the customer support ticket.</p>

<p>A truly comprehensive approach to traceability would
archive, index and link <i>everything</i>:</p>

<ul style='margin-top:0in' type=disc>
 <li >Requirements</li>
 <li >Version control</li>
 <li >Issue tracking</li>
 <li >Marketing research</li>
 <li >Wiki</li>
 <li >Email, discussions</li>
 <li >Tests</li>
 <li >Help desk tickets</li>
 <li >etc</li>
</ul>

<p>The challenge of an ALM tool is to support traceability
across all stages of the software lifecycle.</p>

<h3>The Mystery, Part 4</h3>

<p><i>Joe and Sally head back to the airport to catch a flight
back to the Twin Cities.</i></p>

<p>Sally:&nbsp; So I guess this code change needs to stay.&nbsp; But now
we've got another mystery.&nbsp; This code change caused a bunch of problems.&nbsp; Why
weren't those problems found in testing?</p>

<p>Joe:&nbsp; Let's go back to that QA guy and ask him.</p>

<p><i>Returning to the main company headquarters, they find
their way back to cubicle 61-842-A.</i></p>

<p>Phil:&nbsp; Whazzup?</p>

<p>Sally:&nbsp; We talked to the sales team and got some rationale
for that PersonCompanyAssoc table change.&nbsp; Now we're trying to figure out why
the resulting problems weren't found during testing.</p>

<p>Phil:&nbsp; Hey, don't look at me.&nbsp; I just do what I'm told.</p>

<p>Joe:&nbsp; Whatever.&nbsp; So the product supports multiple locations
per company, right?</p>

<p>Phil:&nbsp; Yeah, I guess so.</p>

<p>Joe:&nbsp; Do you guys have any tests which verify behavior for
that case?</p>

<p>Phil:&nbsp; I don't know.</p>

<p>Sally:&nbsp; You don't know?&nbsp; Why not?</p>

<p>Phil:&nbsp; I just don't.&nbsp; The tests aren't really organized like
that.</p>

<p>Joe:&nbsp; Well how are they organized?</p>

<p>Phil:&nbsp; By number.</p>

<p>Sally:&nbsp; And what do the numbers mean?</p>

<p>Phil:&nbsp; Well, nothing.</p>

<p>Sally:&nbsp; So is there any way to find which tests are designed
to verify which features?</p>

<p>Phil:&nbsp; Uh, well, no.&nbsp; You could always open an individual
test and read it to find out what it does.</p>

<p>Sally:&nbsp; Great.&nbsp; So you've got a bunch of tests and no way of
linking them to anything?</p>

<p>Phil:&nbsp; Exactly!</p>

<p>Sally:&nbsp; OK, I think we're done here.</p>

<h3>Forward Traceability</h3>

<p>Traceability can do more than just help you figure out
forgotten details of the past.&nbsp; Sometimes we want to trace something "forward"
through the software lifecycle, to see where it goes.</p>

<p>In this case, what we want is the following artifacts to be
linked together:</p>

<ol style='margin-top:0in' start=1 type=1>
 <li >Requirement:&nbsp; The system must support multiple locations
     per company.</li>
 <li >Test (validity):&nbsp; Verify that the system can support
     multiple locations per company.</li>
 <li >Test (performance):&nbsp; Verify that in a situation with
     multiple locations per company, the dashboard load time remains
     approximately constant.</li>
</ol>

<p>This kind of traceability is most helpful in finding things
that are simply missing.&nbsp; If the performance test above does not exist, our ALM
tool should be able to help us notice that.&nbsp; If a Requirement is dangling, with
no links to anything, it was probably never implemented, and our ALM tool
should be fussing about that.</p>

<h3>Traceability:&nbsp; Connecting Everything Together</h3>

<p>The ability to connect everything together is called
traceability.&nbsp; It allows us to look at the entire software development process,
even though it involves</p>

<ul style='margin-top:0in' type=disc>
 <li >lots of different people </li>
 <li >doing lots of different things </li>
 <li >at lots of different times </li>
 <li >in lots of different locations </li>
 <li >for lots of different reasons.</li>
</ul>

<p>In a good ALM system, every item is linked to all of the
other items related to it.&nbsp; Code changes are linked to bug reports.&nbsp; Bug
reports are linked to help desk items.&nbsp; Tests are linked to requirements.&nbsp; When
it comes time to do detective work, just follow the links.</p>

<p>You can't get good traceability merely by having one tool
for each lifecycle stage.&nbsp; You can assemble all of your favorite tools, but if
those tools don't support outstanding integration with each other, you won't
have traceability, so the result will not be ALM.</p>

<p>So is that all there is to ALM?&nbsp; Just traceability?&nbsp; </p>

<p>No, ALM is more than that, but traceability is a critical
ingredient.&nbsp; To have ALM, you've gotta have traceability.</p>

<h3>Why to use a good ALM system</h3>

<p>If CrummySoft had deployed an efficient ALM system with
complete information, Sally and Joe could have solved this mystery in minutes,
without the need to run all over the company and ask people questions.</p>

<h3>Why <i>not</i> to use a good ALM system</h3>

<p>If CrummySoft had deployed an efficient ALM system with
complete information, Sally and Joe would not have gotten a free trip to Grand Cayman.&nbsp; <b>:-)</b></p>

<p></p>
]]>
</description>
</item>

<item>
<title>Life Calculus</title>
<guid>http://software.ericsink.com/entries/Life_Calculus.html</guid>
<link>http://software.ericsink.com/entries/Life_Calculus.html</link>
<pubDate>Sat, 15 Mar 2008 10:52:41 CST</pubDate>
<description>
<![CDATA[
<p><img width=160 height=120 src="http://software.ericsink.com/entries/1739_image001.jpg"
align=right hspace=12>Yesterday my coworkers redecorated my office.&nbsp; Pictures
in this blog entry are photos of their work.&nbsp; Strangely enough, I found myself
quite appreciative of their act of vandalism.&nbsp; <b>:-)</b></p>

<p>Today is my 40<sup>th</sup> birthday.&nbsp; Like most other days,
I started by walking the dog and making a To-Do list.&nbsp; However, today's list
has a special item:</p>

<ul style='margin-top:0in' type=disc>
 <li >Decide whether to have a mid-life crisis or not.</li>
</ul>

<p><b>:-)</b></p>

<p>I'll confess I am not entirely thrilled about being 40.&nbsp; It
doesn't seem that long ago that 40 seemed far away.&nbsp; Now that it's here, I
realize that it's not what I expected.&nbsp; I thought my life at 40 would be
different.</p>

<p><img width=120 height=160 src="http://software.ericsink.com/entries/1739_image002.jpg"
align=left hspace=12>Many who know me would assert that I have nothing to
complain about.&nbsp; And they would be correct.&nbsp; My life has been filled with
blessings of all kinds, for which I am truly thankful.&nbsp; I am a published
author.&nbsp; Most would consider me financially successful.&nbsp; I am in a career where
I enjoy my work.</p>

<p>But still...</p>

<p>As the old saying goes, nobody lies on their deathbed
wishing they had spent more time at the office.</p>

<p>Like most everybody else, when I was 30 I looked ahead ten
years and formed a picture in my mind.&nbsp; My life today doesn't match that
picture very well.&nbsp; Examples:</p>

<ul style='margin-top:0in' type=disc>
 <li >I thought by now I would be more solid in the quality of
     my relationships with my loved ones and in the practice of my faith.<br>
     <br>
 </li>
 <li >I thought by now I would be a better guitar player.<br>
     <br>
 </li>
 <li >There's a messy pile in my study that has been there for
     ten years.&nbsp; (Yes, we moved six years ago.&nbsp; The heap moved too.)&nbsp; I thought
     it would be cleaned up by now.<br>
     <br>
 </li>
 <li >I always assumed that by 40 I would have learned to
     exercise regularly and stop eating junk food.</li>
</ul>

<p><img width=160 height=120 src="http://software.ericsink.com/entries/1739_image003.jpg"
align=right hspace=12>I go could on.&nbsp; And on.&nbsp; But you get the idea.</p>

<p>I am tempted to think about my regrets, the places where I
took a wrong turn, the places where I would have made a smarter choice if I
knew then what I know now.</p>

<p>But this whole line of thinking doesn't seem at all
conducive to good mental health, so today I will choose to focus on two things
which seem more constructive:</p>

<h3>1.&nbsp; Tapestry</h3>

<p>One of my favorite Star Trek episodes is called <a
href="http://en.wikipedia.org/wiki/Tapestry_(Star_Trek:_The_Next_Generation)">Tapestry</a>.&nbsp;
It is the story of someone given a chance to re-live a pivotal moment in his
youth so that he can avoid making the unwise choice he made the first time.&nbsp;
But it turns out that his reckless moment was a critical ingredient in his
later successes.</p>

<p>Today I remind myself that there are no do-overs, and I'm
not sure I would want one anyway.&nbsp; For every mistake I have made, there were negative
consequences and positive lessons.&nbsp; I can't expect to avoid the former and keep
the latter. &nbsp;They come together as an inseparable package.</p>

<h3>2.&nbsp; Life Calculus.</h3>

<p>Back in 2003 I wrote an article called <a
href="http://software.ericsink.com/Career_Calculus.html">Career Calculus</a>.&nbsp; In a
nutshell, it says that at any given moment in your career, what you know is far
less important than whether you are learning.</p>

<p>Today I remind myself that the same principle applies in
life.&nbsp; I am confident in my first derivative.&nbsp; Whatever I am today, I think I
will be a better person tomorrow.</p>

<p>So if I'm still blogging when I'm 50, I expect I will be
able to report progress on some of the items mentioned above.</p>

<p>And just to be clear, if that heap of junk on the floor of
my study is still there, it will be larger than it is now, and I plan to report
that as progress.&nbsp; <b>:-)</b></p>

<p align=center style='text-align:center'><b><img border=0
width=160 height=120 src="http://software.ericsink.com/entries/1739_image004.jpg"></b></p>

<p></p>
]]>
</description>
</item>

<item>
<title>SourceGear at SD West next week</title>
<guid>http://software.ericsink.com/entries/sdwest_mar2008_preview.html</guid>
<link>http://software.ericsink.com/entries/sdwest_mar2008_preview.html</link>
<pubDate>Fri, 29 Feb 2008 08:19:15 CST</pubDate>
<description>
<![CDATA[
<p><a href="http://www.sdexpo.com/">SD West</a> is next week
and SourceGear has a whole bunch of stuff happening:</p>

<h3>Fortress 1.1 and Vault 4.1</h3>

<p>We like to use trade shows as a public debut of new
products.&nbsp; Last week <a
href="http://vaultblog.sourcegear.com/articles/2008/02/21/vault-4-1-and-fortress-1-1-are-released">we</a>
<a href="http://ianolsen.wordpress.com/2008/02/20/vault-41-fortress-11-ships/">shipped</a>
"dot one" <a
href="http://blog.roub.net/2008/02/vault_41_and_fortress_11_released.html">releases</a>
of <a href="http://www.sourcegear.com/vault/">Vault</a> and <a
href="http://www.sourcegear.com/fortress/index.html">Fortress</a>.&nbsp; SD West
will be our first opportunity to talk with customers in person about these new
versions.&nbsp; </p>

<p>Interactions like these are a big part of what makes a trade
show trip worthwhile for us.&nbsp; The business of software can be so impersonal.&nbsp;
Software flows out our T1 line.&nbsp; Money flows in.&nbsp; I love trade shows because
they're a place where customers are not just rows in a database.&nbsp; People stop
by and tell us they love our product.&nbsp; We thank them.&nbsp; People come and tell us
we disappointed them.&nbsp; We listen.</p>

<p>But mostly, people come and ask us what's new.&nbsp; We show
them.&nbsp; And their reactions are some of the best product feedback we get.</p>

<p>Fortress 1.1 and Vault 4.1 have some cool new stuff.&nbsp; Here's
a shot of the new "tag cloud" feature in Fortress:</p>

<p><img border=0 width=576 height=362
src="http://software.ericsink.com/entries/1738_image001.gif"></p>

<p>Come see us in booth 308 next week and we'll show you.</p>

<h3>T-Shirts and Comic Books</h3>

<p><img width=114 height=174 src="http://software.ericsink.com/entries/1738_image002.jpg"
align=right hspace=12>Continuing our <a
href="http://www.sourcegear.com/TEM/index.html">Evil Mastermind</a> theme, we
have arranged to have a comic book placed in the conference bag for every
attendee.</p>

<p>We also have a new edition of the Evil Mastermind T-shirt.&nbsp;
We're bringing a thousand of them to give away in our booth.</p>

<h3><br clear=all>
Beat Jeremy at Guitar Hero</h3>

<p><img width=201 height=201 src="http://software.ericsink.com/entries/1738_image003.jpg"
align=left hspace=12>The other tenants in our office building don't have any
idea what we do.&nbsp; They refer to SourceGear as "that company with a pool table
up on the top floor".</p>

<p>I wonder what those folks would have said about the <a
href="http://software.ericsink.com/articles/H_O_R_S_E.html">company HORSE games</a> we
used to have at our previous location.&nbsp; <b>:-)</b></p>

<p>Anyway, I strongly believe that a little recreation is a
critical part of the culture of any good software company.</p>

<p>These days, the popular place to be at SourceGear is the room
with the video game consoles hooked up to the plasma TV.&nbsp; It turns out that our
development team lead is pretty darn good at Guitar Hero.&nbsp; In fact, he will be <a
href="http://vaultblog.sourcegear.com/articles/2008/02/12/sourcegear-at-sdwest">taking
on all challengers</a> in our booth at SD West next week.&nbsp; We'll give a 5-user
Fortress license to anyone who can beat him.</p>

<h3><br clear=all>
Evil Mastermind guitar</h3>

<p><img width=164 height=203 src="http://software.ericsink.com/entries/1738_image004.jpg"
align=right hspace=12>And if we're going to play Guitar Hero, why not have the
real thing as well?&nbsp; On the last day of the show we will have a prize drawing
for an Evil Mastermind electric guitar.&nbsp; It's a Schecter PT, and the customization
work was professionally done.&nbsp; I saw this instrument yesterday, and it looks
really sweet.&nbsp; For more details, see <a
href="http://blog.roub.net/2008/02/the_evil_mastermind_guitars_you_heard_me.html">Paul
Roub's blog</a>.</p>

<h3><br clear=all>
My panel session on Friday</h3>

<p><img width=144 height=144 src="http://software.ericsink.com/entries/1738_image005.jpg"
align=left hspace=12>Friday morning at the conference I will be moderating a
panel discussion.&nbsp; It's in the <a href="http://www.sdexpo.com/2008/west/biz.htm">Business
of Software track</a>, and the topic is Private Company Exit Strategies.</p>

<h3><br clear=all>
The Jolt Awards</h3>

<p><img width=139 height=109 src="http://software.ericsink.com/entries/1738_image006.jpg"
align=right hspace=12>We are honored that SourceGear <a
href="http://www.sourcegear.com/diffmerge/downloads.html">DiffMerge</a> has
been chosen as one of the Jolt Award <a
href="http://www.joltawards.com/finalists.html">finalists</a> this year.&nbsp; We'll
be there at the announcement ceremony March 5<sup>th</sup>.&nbsp; The competition in
our category looks really tough, but somebody's gonna win, so we're hoping it's
us.&nbsp; <b>:-)</b></p>

<p><br clear=all>
</p>
]]>
</description>
</item>

<item>
<title>Why should I be optimistic about Trolltech and Nokia?</title>
<guid>http://software.ericsink.com/entries/trolltech_nokia.html</guid>
<link>http://software.ericsink.com/entries/trolltech_nokia.html</link>
<pubDate>Tue, 12 Feb 2008 13:04:47 CST</pubDate>
<description>
<![CDATA[
<p>I know, I know.&nbsp; Pessimism just isn't very attractive.&nbsp; But
sometimes an optimist can't find anything to say.</p>

<p>A couple of weeks ago, <a href="http://trolltech.com/">Trolltech</a>
announced that they are being acquired by Nokia.&nbsp; I decided to simmer for a
couple weeks before making any comment, but my perspective has not changed.&nbsp; I
just can't see this as good news.&nbsp; Bluntly, I assume this will be the death of
Trolltech.</p>

<p>And that would be a shame.&nbsp; Trolltech is on my short list of
software companies that I admire.&nbsp; Their product, Qt, has an amazing
reputation.&nbsp; Technologically, it seems to be the top dog in a space which is
crowded with lots of people trying to offer solutions to a very tough set of
problems.&nbsp; Trolltech plays well with both the open source world and the
commercial world, and they make a heckuva lot of money doing it.&nbsp; I'm
impressed.</p>

<p>(But I still wish they would put the pricing back on their
website.&nbsp; Yep, the unnamed company in my <a
href="http://software.ericsink.com/entries/Sales_Guy_Tantrum.html">Sales Guy Tantrum</a> last
month was Trolltech.)</p>

<p>I have no affiliation with Trolltech (or Nokia).&nbsp; I am not
even a customer (of either one).&nbsp; As someone who is very interested in the
business of software, I just hate seeing a good software company morph into a
bad one. &nbsp;Nokia is a great company and I'll be happy to see them prove me
wrong, but in general, when a software company gets acquired by a non-software
company, it immediately begins a steep and steady decline.</p>

<p>Managing a software company, especially one that sells to
developers, is not like anything else.&nbsp; It's just different, and that's that.</p>

<ul style='margin-top:0in' type=disc>
 <li >If you're great at the business of software, there's an
     excellent chance you would be incompetent as a business manager in any other
     field.</li>
 <li >Similarly, anybody who is excellent in another field is
     almost certainly going to struggle if they take the reins of a software
     venture.</li>
</ul>

<p>Nokia is a great cell phone company.&nbsp; None of their skills
are going to apply very well to the development, maintenance, marketing and
sales of a C++ portability framework.</p>

<p>So maybe I'm jumping the gun a bit, but I like to beat the
rush.&nbsp; I'm ready now to mourn the loss of Trolltech, yet another great software
company destroyed by a BigCo who assumed that managing a software business should
be easy.</p>

<p>If I'm wrong, tell me why.</p>

<p></p>
]]>
</description>
</item>

<item>
<title>On the Perils of Wikipedia</title>
<guid>http://software.ericsink.com/entries/perils_of_wikipedia.html</guid>
<link>http://software.ericsink.com/entries/perils_of_wikipedia.html</link>
<pubDate>Wed, 23 Jan 2008 12:16:24 CST</pubDate>
<description>
<![CDATA[
<p>It's hard to decide how afraid to be of something that is
really bad and really rare.</p>

<p>This problem is currently one of the most controversial
issues in the United States.&nbsp; Ever since <a
href="http://en.wikipedia.org/wiki/September_11,_2001_attacks">September 11,
2001</a>, we have been wrestling with the question: How afraid of terrorism
should we be?</p>

<ul style='margin-top:0in' type=disc>
 <li >We all agree that terrorism is really bad.&nbsp; What happened
     on 9/11 was awful.</li>
 <li >But it's also really rare.&nbsp; I personally have never met a
     Muslim who wanted to hurt me.</li>
</ul>

<p>How afraid should we be?&nbsp; </p>

<ul style='margin-top:0in' type=disc>
 <li >Some people are very afraid.&nbsp; They focus more on the
     &quot;really bad&quot; side of the issue.&nbsp; Many of these folks are willing
     to give up their own civil liberties just to feel safer.&nbsp; </li>
 <li >Others are not afraid at all.&nbsp; They focus more on the
     &quot;really rare&quot; side of the issue.&nbsp; They prefer to spend their
     resources and attention in other areas.</li>
</ul>

<p>This blog entry is not the place for me to take a stance on
any of these issues.&nbsp; For now I will simply say that I understand both
perspectives. &nbsp;This whole situation is simply the most obvious example of my
point, which was:</p>

<p>It's hard to decide how afraid to be of something that is
really bad and really rare.</p>

<p>Issues like these are like an icy ski slope.&nbsp; Some people
stand at the top.&nbsp; Some people stand at the bottom.&nbsp; Very few people stand
anywhere else.&nbsp; It's too slippery.</p>

<p>It is perhaps interesting to note that these issues can be equally
polarizing when the context is far less important, like the digital world.&nbsp;
Granted, the underlying topics are far less weighty.&nbsp; When discussing things
like terrorism or child abduction, the definition of "really bad" is quite
different than it is when talking about music piracy or vandalized Wikipedia
entries.&nbsp; </p>

<p>Still, the polarizing effect looks exactly the same.&nbsp; It's
hard to decide how afraid to be of something that is really bad and really
rare.&nbsp; Some people stand at the top of the slope.&nbsp; Others stand at the bottom.</p>

<h3>Wikipedia</h3>

<p>I don't know anybody who has lukewarm feelings about
Wikipedia.&nbsp; Folks either love it or they hate it.</p>

<p>My daughter's school teacher hates it.&nbsp; Wikipedia can
provide no claims of accuracy.&nbsp; There is no good way to be sure that the
information is correct.&nbsp; When it's not correct, there is either no one to blame
or no way to punish them.&nbsp; All of these are crucial attributes of a traditional
encyclopedia.</p>

<p>I understand this perspective, but on this particular issue,
I'm standing at the top of the slope.&nbsp; I love Wikipedia.&nbsp; The principle is just
very appealing:&nbsp; The distinction between reader and writer is largely removed.&nbsp;
Anyone can add or change the content.&nbsp; Since the good guys far outnumber the
bad guys, the result is a body of content which is constantly growing and
improving.</p>

<p>(It's kind of the same principle as <a
href="http://software.ericsink.com/Career_Calculus.html">Career Calculus</a>, except
for an encyclopedia.&nbsp; Focus on the first derivative.&nbsp; Instead of worrying about
how good the encyclopedia is now, worry about whether it is getting better and
how that's happening.)</p>

<p>I admit that there are obvious risks.&nbsp; Since anybody can
edit a Wikipedia page, it is always possible for the content of a page to be
incorrect or even vandalized.</p>

<p>But the tradeoff seems to work well in practice.&nbsp; I probably
use Wikipedia every day.&nbsp; The information I find there has been consistently
helpful.&nbsp; I like Wikipedia better than a traditional encyclopedia.&nbsp; Much
better.</p>

<p>But maybe this is because the threat isn't very real to me.&nbsp;
Personally, I have never encountered a vandalized Wikipedia article.&nbsp;
Occasionally I find an entry which is lame, but I don't remember seeing one
that was blatantly wrong or intentionally damaged.&nbsp; Most of the time, the
content in Wikipedia is excellent.</p>

<p>But the fact remains:&nbsp; Every time I use Wikipedia, I am
taking a risk.&nbsp; Since I have never gotten burned by that risk, the peril
doesn't seem very real.</p>

<h3>The Peril is Real</h3>

<p>Wikipedia currently has an <a
href="http://en.wikipedia.org/wiki/Eric_Sink">entry about me</a>.&nbsp; This
morning, my 10-year-old daughter told me that she tried to edit that entry. &nbsp;Suddenly
my entire perspective on Wikipedia changed.&nbsp; This was the first time I had to
confront the idea of a vandalized Wikipedia entry in any sort of real way.</p>

<p>As it turns out, she didn't succeed.&nbsp; But she's a very
bright young lady, so I'm sure she'll figure it out soon.</p>

<p>As a matter of principle, I refuse to edit my own Wikipedia
page.&nbsp; So, I have a favor to ask of my readers.</p>

<p>Sometime soon my Wikipedia entry is going to change.&nbsp; Any
content about SourceGear, AbiWord or Spyglass will be deleted.&nbsp; The new version
of the article will focus primarily on my atrocious failings as a father,
evidenced by my ongoing refusal to allow my youngest daughter to get a hamster.</p>

<p>When this happens, could one of you folks fix it for me?&nbsp;
Thanks.</p>

<p></p>
]]>
</description>
</item>

<item>
<title>Never keep your emotions bottled up</title>
<guid>http://software.ericsink.com/entries/Sales_Guy_Tantrum.html</guid>
<link>http://software.ericsink.com/entries/Sales_Guy_Tantrum.html</link>
<pubDate>Tue, 15 Jan 2008 16:09:42 CST</pubDate>
<description>
<![CDATA[
<p>Last week I was considering the purchase of a piece of
software.&nbsp; I went to the vendor's website for pricing.&nbsp; It wasn't there.&nbsp;
Annoyed, I filled out the form so that I could be contacted by one of their <a
href="http://software.ericsink.com/bos/Closing_the_Gap_Part_1.html">sales people</a>.&nbsp; The
following day I got a response:</p>

<p style='margin-left:.5in'>Thanks for considering (product
name deleted).&nbsp; Please write back to me with your phone # or call me at the #
below -- we can discuss pricing as I learn about your application and how you
plan to use (product name deleted) for development.</p>

<p>So I sent an email with the following response:</p>

<p style='margin-left:.5in'>Hi (name deleted),</p>

<p style='margin-left:.5in'>OK.&nbsp; Please bear with me for just a
moment while I vent.</p>

<p style='margin-left:.5in'>#ifdef FRUSTRATED_RANT</p>

<p style='margin-left:.5in'>First, I hate the fact that you
guys don't put pricing on your website.&nbsp; I looked up the old version of your
site using archive.org, so I've got a ballpark idea of what the pricing was
around six months ago.&nbsp; Mostly I just want to know if anything has changed.</p>

<p style='margin-left:.5in'>Second, it's absurd that when a
customer asks for pricing, you won't give it to them.&nbsp; Instead, you answer the
question with a question.&nbsp; I'm not even the slightest bit interested in telling
you about our application and how we plan to use (product name deleted) for
development.&nbsp; I just want to know your pricing and your license terms.</p>

<p style='margin-left:.5in'>And for the hat trick, it's
incredibly frustrating that you want to do this by phone.&nbsp; I hate phones with a
passion, especially when they're completely unnecessary.</p>

<p style='margin-left:.5in'>Bottom line:&nbsp; I'm interested in
buying your product.&nbsp; The only obstacle in my way is YOU.&nbsp; If your product
didn't have such a great reputation, I would give up right now.</p>

<p style='margin-left:.5in'>#endif</p>

<p style='margin-left:.5in'>OK, sorry about that.&nbsp; I figured if
I get all this off my chest then I'll have a much better chance of getting
through our phone call without saying anything rude.&nbsp; Please call me at
217-XXX-YYYY.&nbsp; I promise to be nice.&nbsp; <b>:-)</b></p>

<p style='margin-left:.5in'>-- </p>

<p style='margin-left:.5in'>Eric</p>

<p>Fortunately, my "vent before the call" strategy worked out
very well.&nbsp; The sales person called me and we had a very pleasant and cordial
conversation.</p>

<p></p>
]]>
</description>
</item>

<item>
<title>Exception Handling in Running a Business</title>
<guid>http://software.ericsink.com/entries/Business_Exceptions.html</guid>
<link>http://software.ericsink.com/entries/Business_Exceptions.html</link>
<pubDate>Thu, 13 Dec 2007 13:34:51 CST</pubDate>
<description>
<![CDATA[
<p>I'm going to the Rose Bowl.</p>

<p>I am a University of Illinois alum and an avid fan of college
sports.&nbsp; The Illini football team had a great season this year and will play
USC in Pasadena on January 1st.&nbsp; In fact, this is the just the second time in
my lifetime that Illinois has made it to the Rose Bowl.&nbsp; For those of us here
in central Illinois, this is a really big deal.&nbsp; Who knows when it will happen
again?</p>

<p>So last week when the University started selling tickets, I
placed my order.&nbsp; A few days later I received confirmation that I was going to
actually get the tickets I had requested.&nbsp; That email said:</p>

<p style='margin-left:.5in'><i>"tickets will be shipped to the
address listed above via UPS Overnight Delivery"</i></p>

<p>I laughed out loud.&nbsp; UPS Overnight?&nbsp; I live right here in
Champaign-Urbana.&nbsp; The University of Illinois Athletic Ticket Office is less
than two miles from my office.&nbsp; Surely I could just go over during my lunch
hour and pick them up?</p>

<p>No, I suppose not.&nbsp; These folks are trying to process orders
for over 25,000 tickets and they have very little time to do it.&nbsp; They probably
just want to have one standard method of handling them all.&nbsp; Dealing with the
special cases would slow everything down.</p>

<p>The next day I got email from UPS with a tracking number for
my tickets:</p>

<p><img width=345 height=196 src="http://software.ericsink.com/entries/1734_image001.jpg"></p>

<p>Sure enough -- my tickets were being sent 1.8 miles by "Next
Day Air". &nbsp;At this point, I fully expected that this envelope would be
traveling across town by way of O'Hare.</p>

<p>Much to my surprise, UPS actually figured out that it was
already in its destination city:</p>

<p><img width=454 height=288 src="http://software.ericsink.com/entries/1734_image002.jpg"></p>

<p>So, let's review:&nbsp; Both the University and UPS faced a
situation which was somewhat of an exception to their normal workflow.&nbsp; One of
them treated the exception as a special case.&nbsp; The other one did not.&nbsp; </p>

<p>And in my opinion, both of these organizations did exactly
the right thing.</p>

<p>I think one of the toughest parts of running a business is
dealing with all the exceptions.&nbsp; These things never get much attention at the
genesis of a company.&nbsp; We write our business plan and we try to figure out how
we're going to handle everything from customer issues to staffing issues to
bugs to parking.&nbsp; But then life hands us a diversity of circumstances we never
expected.</p>

<ul style='margin-top:0in' type=disc>
 <li >One of your staff needs to have surgery but they've used
     up all their leave days.<br>
     <br>
 </li>
 <li >Your biggest customer wants you to add a special feature
     that won't be useful to anybody else. <br>
     <br>
 </li>
 <li >The policy says anybody who purchased on or after June 17<sup>th</sup>
     will get the upgrade for free.&nbsp; The guy who bought at 10:00pm on June 16<sup>th</sup>
     is on the phone.</li>
</ul>

<p>Sometimes the right thing to do is to handle the situation
as a special case, even if doing so takes extra time.</p>

<p>And sometimes, it's best to just shove everything into the
meat grinder and let sausage come out the other side.</p>

<p>But how do we know which approach to use for a given
situation?&nbsp; The issues in play can include fairness, cost, ethics, focus, and
so on.</p>

<p>And when is the time to realize that a certain kind of
exception is happening often enough that it's worth defining a way to handle
it?</p>

<p>I don't have any silver bullet answers for these questions.&nbsp;
In entrepreneurship, there is no substitute for good judgment.&nbsp; </p>

<p>Just keep in mind that exceptions <i>are</i> going to
happen, and how we navigate them can be a major definer of our success in
business.&nbsp; Pay attention, and use common sense.</p>

<p></p>
]]>
</description>
</item>


</channel>
</rss>
