<?xml version="1.0" encoding="iso-8859-1" ?><rss version="2.0"><channel><title>Eric Sink</title><link>http://www.ericsink.com/</link><description>SourceGear Founder</description><copyright>Copyright 2001-2011 Eric Sink. All Rights Reserved</copyright><generator>mine</generator><item><title>Support for git's fast-import format in Veracity</title><guid>http://www.ericsink.com/entries/vv_fast_import.html</guid><link>http://www.ericsink.com/entries/vv_fast_import.html</link><pubDate>Fri, 09 Sep 2011 10:00:00 CST</pubDate><description><![CDATA[<p>Version 1.1 (coming sometime in the next few weeks) of Veracity will have support for import and export using the <a href="http://www.google.com/search?q=git+fast-import">fast-import</a> format popularized by git.  (If you are interested in trying this feature before the 1.1 release, grab a recent <a href="http://download.sourcegear.com/Veracity/nightly/">nightly build</a>.)</p>

<p>I was initially a bit resistant to having this feature.  Getting people to switch from git to Veracity isn't really a big focus for us, so I didn't think we needed it.</p>

<p>But it seems like the fast-import format is becoming a de facto standard for interchange of version control data.  In addition to git itself, it is now possible to export in this format from Mercurial, Bazaar, Subversion and Perforce.  By supporting fast-import, we make it possible for a wide range of users to import their data and give Veracity a test drive.</p>

<p>Veracity can export into this format as well.  Some people will try Veracity and decide it is not for them.  They can export their Veracity repository into a fast-import file and take it to git or Mercurial or wherever they want.  Hopefully that makes it a little less scary to give young Veracity a closer look.</p>

<h3>Using fast-import with Veracity</h3>

<p>To import into Veracity, first you need to get your repo into a fast-import file.  The steps to do this will vary depending on what VCS you are using now.  For example, from git, it looks something like this:</p>

<pre style="background-color: #E0EFF1; padding:0.15in; border-radius:12pt;">
git fast-export --all --signed-tags=strip &gt; ~/my_repository.fi
</pre>

<p>Then create a new Veracity repo using that import file:</p>

<pre style="background-color: #E0EFF1; padding:0.15in; border-radius:12pt;">
vv fast-import ~/my_repository.fi name_of_new_repo
</pre>

<p>To go in the other direction:</p>

<pre style="background-color: #E0EFF1; padding:0.15in; border-radius:12pt;">
vv fast-export name_of_repo ~/my_repository.fi
</pre>

<p>Which should produce a fast-import file that can be imported into whatever participating VCS you choose.  For example, importing into git would look like this:</p>

<pre style="background-color: #E0EFF1; padding:0.15in; border-radius:12pt;">
mkdir new_git_repo
cd new_git_repo
git init
git fast-import &lt; ~/my_repository.fi
</pre>

<h3>Current state of the feature</h3>

<p>This feature is new and is currently being tested.  I won't be surprised if there are some wrinkles that need to be ironed out.  But we've successfully handled some significant test cases.</p>

<ul>
    <li>We have exported the Perl repository (with 24 years of history) from git and then imported it into Veracity.</li>
    <li>We have exported the Mercurial repo from hg (using hg-fast-export) and then imported it into Veracity.</li>
    <li>We have exported the Veracity repo from Veracity and then imported it into git.</li>
    <li>We have not yet tested interoperability with other tools like Subversion or Bazaar.</li>
    <li>Currently, incremental import and export are not supported.</li>
</ul>

<p>Any questions about this feature should go to our <a href="http://veracity-scm.com/qa">Q&amp;A area</a> on the Veracity website.</p>

<p>Enjoy!</p>

]]></description></item><item><title>Stories from my experiences learning Scrum</title><guid>http://www.ericsink.com/entries/agile_2011_paper.html</guid><link>http://www.ericsink.com/entries/agile_2011_paper.html</link><pubDate>Thu, 01 Sep 2011 14:51:05 CST</pubDate><description><![CDATA[<p align=center style='text-align:center'><i><span
style='font-size:8.0pt'>This is the paper I submitted for the proceedings of
Agile 2011.</span></i></p>

<p><b>Abstract</b>--An experienced (read: "old") software
developer recounts the ups and downs of learning Scrum as part of a
geographically distributed team working on a pre-release product.</p>

<h3>A New Project</h3>

<p>In January of 2008, Jeff and I began working on a new
project.&nbsp; Originally, we just called it an exploration, more like research than
product development.&nbsp; We wanted it to eventually become SourceGear's next big
product.&nbsp; But we had a lot of work to do before we could even consider that.</p>

<p>Jeff lives in southern Indiana.&nbsp; I live in central
Illinois.&nbsp; For quite a while, it was just the two of us.</p>

<p>What development methodology did we use?&nbsp; Well, we both
have plenty of gray hair (or rather, I assume and hope that Jeff's hair would
be gray if he had any left). We've been working together since 1992.&nbsp; And even
though it's easy to look at our code and know which of us wrote it, we tend to
have the same approach, in all the ways that matter.</p>

<p>So, our development methodology looked like this:</p>

<p align=center style='text-align:center'><b>Every day, do
whatever seems <br>
to make the most sense.</b></p>

<p>And this mostly worked fine.</p>

<p>Eventually, our research project moved far enough along
that our company decided to make it real.&nbsp; We decided to commit to make it a
product and to name it Veracity.</p>

<p align=center style='text-align:center'><i><span
style='font-size:8.0pt;line-height:95%'>Disclosure:&nbsp; Veracity has been
developed entirely by my company, SourceGear, and I hope that we someday find a
way to make money doing something related to it.&nbsp; If the mention of Veracity
here offends you, remember that Veracity itself is open source (Apache License
version 2.0).&nbsp; If you're still bothered, keep in mind that there's a very good
chance I will fail to make any money and therefore end up selling my guitar
collection to pay for ramen noodles.&nbsp; If you're still not feeling better,
please accept my apologies, and my suggestion that you dismiss me as the evil,
money-grubbing entrepreneur that I am.</span></i></p>

<p>To do that, we needed to gradually migrate more of our
developers onto the effort.</p>

<p>But Jeff and I are the wrong foundation for building a
team.&nbsp; Neither of us is likely to ever win an award for our ability to work and
play well with others.&nbsp; If our team of two became a team of ten, who would, you
know, coordinate stuff?&nbsp; We would need somebody sort of manager-ish, right?</p>

<p>Jeff is, well, a nerd.&nbsp; To the core.&nbsp; He's one of the best
developers I have ever known, but he's not really the manager type.&nbsp; To be
fair, I guess we don't really know if Jeff would be any good as a project
manager.&nbsp; Similarly we don't know if Gwyneth Paltrow would beat Mike Tyson at
boxing.&nbsp; She's never tried it.&nbsp; It never really occurred to anybody that she
would.</p>

<p>But I've tried it.&nbsp; Er, management, not boxing.&nbsp; And it
usually hasn't gone very well.&nbsp; In my history with SourceGear, I have
functioned well as a provider of vision or code, but my efforts to be a
provider of structure or predictability have largely failed.&nbsp; In short, I'm a
lousy manager.&nbsp; Most of my coworkers are polite enough not to say it that way,
but I think we all know the score.</p>

<p>Regardless of what terminology you prefer, a team of ten
people needs <i>somebody</i> who is thinking about those people.</p>

<ul>
    <li>Who is doing what?</li>

    <li>What does everybody need?</li>

    <li>Are the obstacles getting cleared out of their way?</li>
</ul>

<p>These are mostly questions about people, not code.&nbsp; It's
not really that I don't like people.&nbsp; I just get so engrossed in the project
that I forget about them.</p>

<p>So the first thing we had to fix about our team was to
make it into a container where people could be placed safely.&nbsp; In March 2009,
we added a third person, Ian.&nbsp; The idea was that Ian would initially join the
team as a developer and become the project manager as the team grew.&nbsp; We wanted
him there early so he could develop a lot of knowledge of the code before his
time became consumed with helping others.</p>

<p>How did our methodology change with the addition of Ian?&nbsp;
Not that much.&nbsp; The group was still very small.&nbsp; You can survive without much
structure when there are only two or three people involved.&nbsp; We changed our
methodology to:</p>

<p align=center style='text-align:center'><b>Every day, do
whatever seems <br>
to make the most sense.<br>
And try to remember to<br>
talk to each other.</b></p>

<p>And this mostly worked fine.</p>

<h3>And then there were eight.</h3>

<p>In the fall of 2009, several other SourceGear developers
got freed up all at the same time.&nbsp; We began transitioning them to join our team.&nbsp;
Suddenly, our methodology seemed inadequate.</p>

<p>SourceGear had never really been big on any kind of formal
process.&nbsp; We had some of the elements.&nbsp; We tend to do specs.&nbsp; We have
reasonably formal QA.&nbsp; We have test plans, continuous integration, release cycles,
and stuff like that.&nbsp; But nobody is really following any sort of documented
process or methodology.&nbsp; So as the team was growing, we talked about maybe
trying to follow some kind of method that is well-known.&nbsp; We asked ourselves if
maybe we should try and use Scrum.</p>

<p>I recall the initial discussion about Scrum with only Ian,
Jeff and myself. Ian was enthusiastic about Scrum.&nbsp; I was enthusiastic about
not having to do Ian's job.&nbsp; And Jeff mumbled something about tracking down a
stray pointer that was causing his code to dump core.</p>

<p>So we decided to give Scrum a try.&nbsp; In the course of
writing this paper, we dug up Ian's slide deck from the team meeting where he
announced our plan to use Scrum.&nbsp; It talks about pigs and chickens and sprints
and backlogs and burndown charts and daily standups and the obligatory
reference to Michigan football that he can't resist mentioning at every
meeting.</p>

<p>Attitudes from the people on the team about Scrum seemed
to fall in three groups:</p>

<p style='margin-left:.45in;text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>People
who thought Agile was a synonym for "No process" and "We don't have to do specs
anymore".</p>

<p style='margin-left:.45in;text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>People
who thought Agile would be a strict, burdensome methodology, filled with TPS
reports and all kinds of distractions to prevent us from building software.</p>

<p style='margin-left:.45in;text-indent:-.25in'>3.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Oh,
and there was one guy who knew about Agile and liked the idea.</p>

<p>

<table cellpadding=0 cellspacing=0>
 <tr>
  <td width=36 height=0></td>
 </tr>
 <tr>
  <td></td>
  <td><img width=599 height=367 src="scm/1811_image001.gif"
  alt="Text Box:  &#13;&#10;Figure 1&#13;&#10;"></td>
 </tr>
</table>

<br clear=ALL>
So, Scrum survived its first meeting at SourceGear and we kept moving forward.&nbsp;
We tried to calm the people in groups 1 and 2 by talking about the difference
between discipline and ceremony.&nbsp; We talked about wanting to raise our level of
discipline as a software team, but not to raise our level of ceremony.&nbsp; Nobody
wants a team of ten to follow some sort of big-M methodology which involves
more paperwork than software work.</p>

<p>We decided to proceed with Scrum and agreed to use the
parts that work, ignore the parts that don't make sense, and try to get better
improve our practices every sprint.</p>

<h3>The daily standup</h3>

<p>We began holding a 15-minute status meeting every day at
11am central time.&nbsp; At first, we had plenty of grumbling on the team about the
idea of a meeting every day.&nbsp; Some of that grumbling might have come from me.&nbsp;
I'm no fan of meetings.&nbsp; But our daily standup has turned out to be a useful
thing without being too much of a disruption. We've mostly learned to exchange
just the right amount of information.&nbsp; We use our daily standup to start
discussions which then get taken offline.</p>

<p>We do try to follow a basic script, going around the room
with each person giving a brief report:</p>

<ul>
    <li>What I just did</li>

    <li>What I'm doing next</li>

    <li>What I need</li>
</ul>

<p>We've had a wide diversity of styles for reports.&nbsp;
Sometimes a report turns into a rambling stroll.&nbsp; And once in a while, a
discussion breaks out and has to be killed mercilessly.</p>

<p>In my opinion, the most memorable report ever came from
Brody, who had been working on the "merge" feature.&nbsp; When it came his turn to
speak, he simply bellowed, "MERGE".&nbsp; That was it.&nbsp; One word.&nbsp; Actually, one
syllable.&nbsp; I wanted to tell Brody that if he had wanted to expend even less
effort, he could probably have used the unvoiced form of the consonant.&nbsp; I
think if we had all heard "MERSH", we could have figured out what was going on
and he wouldn't have had to use quite so much energy.</p>

<p>Our daily standup is somewhat complicated by the fact that
our team is not all in the same location.&nbsp; Most of us are in Champaign,
Illinois, but we've got one developer in Indiana and another in Florida.&nbsp; So
our Scrum meetings involve the use of a speakerphone.&nbsp; And this has triggered
various colorful discussions about what kind of music is played in the virtual
conference room while people are waiting for others to join the call.</p>

<p>For a very long time, the hold music was some sort of a
classical piece.&nbsp; People complained, so I suggested we might switch to some
classic Van Halen.&nbsp; People complained even more.</p>

<p>I don't remember how we ended up switching to Styx, but
that's when the complaining soared to new heights.&nbsp; I thought the level of
whining was way out of proportion, and tried to that there were plenty of worse
things to listen to.&nbsp; Meanwhile, Troy, who runs our phone system and is also a
developer on the team, wisely started refusing to change the music unless
somebody logged a bug.&nbsp; So I added work item T00097 (see Figure 1).</p>

<p>To my amazement, people thought this was an improvement
over the previous selections.&nbsp; But this playlist didn't last long.&nbsp; Currently,
those who dial in first for the daily standup are treated to a recording of
Soviet spy transmissions from the cold war.&nbsp; None of us understand it because
(a) we don't speak Russian and (b) the messages are apparently encoded with a
one-time pad, but everyone seems to agree that it's better than Mr. Roboto.</p>

<p>Someday perhaps we'll find some hold music that doesn't
actively discourage punctuality.&nbsp; In the meantime, I can still say that using
the phone for the daily scrum has worked out better than I might have
predicted.&nbsp; When Paul (in Florida) told us that he was leaving for a bit to
ride his bike over to the beach so he could watch the launch of the space
shuttle, it was nice for all of us on the call to be able to say, "I hate you"
with just the right vocal inflection.&nbsp; Such subtleties can more easily get lost
when using written forms of communication.</p>

<p>I have come to think of our daily standup as being similar
to a security guard at a bank.&nbsp; Most security guards stand around for their
entire career without ever firing their weapon.&nbsp; It's probably a boring job.&nbsp;
But the consistent presence of that security guard probably prevents some big
problems from ever happening.&nbsp; Our daily standup is the same way.&nbsp; Nothing
exciting ever really happens.&nbsp; But we can confidently assume that many big
problems have been avoided because we regularly take the time to get synced up.</p>

<h3>Working Together</h3>

<p>The culture of Scrum teams seems to be built on working
together in shared spaces.&nbsp; In contrast, our company has always placed a high
value on each person having a private office.</p>

<p>We are aware that there are tradeoffs here.&nbsp; A private
office gives each person a quiet place to work, but it also creates the
opportunity for people to get isolated.&nbsp; So even as we provide private offices,
we create ways to drag people out of them, including soda in the kitchen, lunch
together on Wednesdays, a pool table, and a video game room.</p>

<p>As we get involved with Scrum and begin hearing stories
from other people, sometimes it seems like we are missing out on something by
not using shared spaces.&nbsp; One of our first Scrum resources was an excellent
video [1] made by Hamid Shojaee, founder of Axosoft. </p>

<p align=center style='text-align:center'><i><span
style='font-size:8.0pt;line-height:95%'>Disclosure:&nbsp; I have no significant
legal or financial connection with Axosoft.&nbsp; One of SourceGear's products
includes a feature that supports integration with one of Axosoft's products.&nbsp;
The two companies exchanged some marketing favors, but no money.&nbsp; Last time I
saw Hamid we shared a cab to the airport.</span></i></p>

<p>Last year Hamid moved his company into new office space
which is configured specifically for Agile teams. Nobody has a private office,
not even Hamid.&nbsp; Everyone sits in carefully designed work rooms, designed to
accommodate six people.</p>

<p>At SourceGear, we haven't been quite as brave.&nbsp; It feels
like it would be so hard for us to make a radical change, for three reasons:</p>

<p style='margin-left:.45in;text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>People
are accustomed to having their own office.&nbsp; It would seem like taking something
away from them.</p>

<p style='margin-left:.45in;text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>It
would cost us a pile of money to reconfigure our space.&nbsp; I'd be hesitant to
spend that much cash on something that we would consider an experimental
change.</p>

<p style='margin-left:.45in;text-indent:-.25in'>3.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Our
offsite people wouldn't be able to participate in the work rooms anyway.</p>

<p>So we have kept our offices, but we try to promote as much
real-time interaction as possible.</p>

<p>One thing we did very early on was to try something we
called "pair programming lite". Ian grouped all the developers into pairs.&nbsp; We
were not instructed to actually do real pair programming.&nbsp; Rather, we were
simply to stay in greater contact, work together on features, review each
other's code, and so on. Not surprisingly, Ian assigned Jeff and I to be
partners, probably because he didn't think anybody else should have to put up
with us.</p>

<p>This experiment didn't work very well, as evidenced by (a)
the fact that we stopped doing it, and (b) none of us seem to remember much
about it.&nbsp; I had completely forgotten about "pair programming lite" until I was
looking through old emails during the writing of this paper.&nbsp; I asked the other
people on our team if they remembered anything.&nbsp; The only thing I got back was
that Jeremy and Mary Jo were partners, and Jeremy used to bring her chocolate
to appease her when he got too annoying.</p>

<p>It's interesting how some agile practices are easily
adapted for our circumstances and some are not.</p>

<p>Because we don't work in shared spaces and we are
geographically distributed, we do place a lot of emphasis on the
between-iteration meetings.&nbsp; Everyone comes to Champaign, and we spend a lot of
face time, reviewing what happened the previous sprint and talking about what
should happen during the next one.</p>

<p>We also make use of an online chat room, Campfire [2],
from 37signals.</p>

<p align=center style='text-align:center'><i><span
style='font-size:8.0pt;line-height:95%'>Disclosure:&nbsp; I have no financial or
legal connection with 37signals.&nbsp; I just like their product.</span></i></p>

<p>We use the chat room to create a virtual environment that
provides some of the benefits of working together in a shared physical space.&nbsp;
Our basic guideline is that if you are working, you should be in the chat
room.&nbsp; </p>

<p>Campfire has been an amazing resource for our team.&nbsp; We
have little conversations there all throughout the day (see Figure 2).&nbsp; We ask
technical questions.&nbsp; We talk about whose fault it was that the build broke.&nbsp;
We make jokes and post lolcat pictures.</p>

<p>It may not be quite as cool as having a well-designed team
work room, but it is working very well for our situation.</p>

<h3><img width=331 height=558 src="scm/1811_image002.gif" align=left
hspace=12 alt="Text Box:  &#13;&#10;Figure 2&#13;&#10;">Iterations</h3>

<p>One of our first decisions was about how long our sprints
should be.&nbsp; The Scrum gurus seem to always say that each iteration should be
2-3 weeks.&nbsp; I find their arguments to be compelling, but I also find it hard to
imagine how that could work for our current situation.&nbsp; Our major stumbling
block has been the notion of meaningful end-of-sprint releases.</p>

<ul>
    <li>When the product has never been released to users, what is an
end-of-sprint release?</li>

    <li>Exactly what are we releasing?</li>

    <li>To whom?</li>

    <li>How do we get a full development and QA cycle in the boundaries
of a single sprint?</li>
</ul>

<p>We currently have iterations of 4-5 weeks.&nbsp; But we have
struggled with what it means for us to be "release-ready".&nbsp; We didn't even try
doing end-of-sprint releases until after sprint 11.&nbsp; Then we began talking
about being "release-ready" as more of a <i>relative</i> thing.&nbsp; During active
development, the stability of the code fluctuates.&nbsp; We simply try to make sure
that the end of the sprint is a time when things are <i>more</i> stable than
they were in the middle of the sprint.&nbsp; As much as possible, tasks should be
completed and stuff should be checked in to the repository.&nbsp; This is our way of
implementing good practices without trying to force things to happen that don't
make sense.</p>

<p>Because Veracity is open source, even if we have struggled
to figure out what "ready" means, the word "release" is pretty clear.&nbsp; At the
end of every sprint, we package up the code and make it available for anyone
who wants to see it. &nbsp;We label these code snapshots as "preview releases", and
they include source code only, no compiled executables.&nbsp; These previews give us
the opportunity to practice release preparation, hoping that the picture will
be more complete when the product is more mature.</p>

<h3>Burndown Charts</h3>

<p>For us, one of the most useful parts of Scrum is the
burndown chart.&nbsp; By adopting the disciplines of planning each sprint,
estimating each task, and tracking our time, we are rewarded with a pretty
picture.</p>

<p>Let me try and explain that better.</p>

<p>The real issues here are estimation and time tracking.&nbsp; In
general, programmers hate both of these.&nbsp; I am no exception.&nbsp; I don't <i>want</i>
to try and figure out how much time something is going to take.&nbsp; And I
certainly don't want to keep track of how I am spending my time.&nbsp; Just leave me
and my compiler alone and when the task is done, we will tell you.</p>

<p>I believe my attitudes about such things are not
atypical.&nbsp; As developers, we carefully hone our ability to give excuses for not
doing things we don't want to do.</p>

<p>I have come to think of estimation and time tracking as
being similar to code coverage.&nbsp; People who have never really tried using code
coverage tools are quick to point out all the reasons why code coverage is a
waste of time.&nbsp; They can describe in great deal why code coverage will not
solve all their problems.&nbsp; They know that even 100% code coverage does not
guarantee that software is correct.&nbsp; All of their excuses are built on facts.&nbsp;
But it is also difficult to find someone who has used code coverage who
believes it is pointless.</p>

<p>Similarly, many of us can spout reasons why estimation and
time tracking are a bad idea.&nbsp; It's a hassle.&nbsp; It's a waste of time.&nbsp; The
estimates are never correct anyway.&nbsp; Steve McConnell has an excellent book on
software estimation [3].&nbsp; But for some of us, the mere length of this book (308
pages) becomes part of our excuse not to do estimation.&nbsp; If it takes 308 pages
to explain it, then it's gotta be more trouble than it's worth, right?</p>

<p>It is true that best practices can be taken too far.&nbsp; Many
of them produce their greatest returns when applied in a small way.&nbsp; Nobody's
going to be hiring me as an agile coach, but I've got more experience than I
did two years ago, and I've learned some great lessons.&nbsp; Nowadays, when
somebody tries to tell me that estimation and time tracking are pointless, I
ask them, "Have you tried these practices with 4-week sprints and a burndown
chart?"</p>

<p>This is obviously not my first time trying to use
estimation and time tracking, but my previous experiences didn't work quite as
well. Scrum is part of the reason why:</p>

<ul>
    <li><i>Short sprints</i> make estimation and time tracking <i>easier</i>.</li>

    <li><i>Burndown charts</i> make estimation and time tracking <i>worthwhile</i>.</li>
</ul>

<p>

<table cellpadding=0 cellspacing=0>
 <tr>
  <td width=36 height=0></td>
 </tr>
 <tr>
  <td></td>
  <td><img width=599 height=368 src="scm/1811_image003.gif"
  alt="Text Box:  &#13;&#10;Figure 3&#13;&#10;"></td>
 </tr>
</table>

<br clear=ALL>
Estimation is really hard when you're trying to decide how much time it will
take to do a task which is (a) eight months away, and (b) dependent on stuff
that is supposed to be done in the seven months intervening.&nbsp; So don't do
that.&nbsp; When something doesn't make sense, that might be a good indicator that
you're doing it wrong.&nbsp; Don't try to claim that estimation is a waste of time
until you've tried doing it in 4-week chunks.</p>

<p>And once you start doing estimates, then you get to use
burndown charts, which, in my humble opinion, are deeply neato.&nbsp; The burndown
chart gives us a visual representation of how our progress is going for any
given sprint (see Figure 3).</p>

<p>The red line shows the ideal, what our work <i>should</i>
look like.&nbsp; The green line shows reality.&nbsp; If we extrapolate the green line
until it crosses the X axis, we can see when we could expect the tasks in the
current sprint will be done, based on our progress so far.</p>

<p>Monitoring our burndown charts has allowed us to have a
more realistic idea of when our product cycle will be complete.&nbsp; If we fail to
finish the tasks for one sprint, something in the future is going to have to
shift.&nbsp; Either the date moves back, or the feature list gets shorter.</p>

<p>Note that none of this stuff has been a panacea for us.
There was a period of several months where every time we finished a sprint we
had to insert a new one to deal with the stuff that didn't get done. Ian
described sprint 15 as the first sprint where he didn't have to redo the 1.0
plan.</p>

<p>If I were being particularly pessimistic, I would observe
that the only problem Scrum has solved is being unaware of our other problems.&nbsp;
But that's still a pretty big deal.&nbsp; It is always better to confront reality
than to avoid it. </p>

<h3>Dogfooding</h3>

<p>Throughout this development cycle, we have been building a
tool to support Scrum at the same time as we are learning how to do Scrum.&nbsp; </p>

<p>When the team first got started, we used Jira [4] by
Atlassian.</p>

<p align=center style='text-align:center'><i><span
style='font-size:8.0pt;line-height:95%'>Disclosure:&nbsp; I have no legal or
financial connection with Atlassian.&nbsp; In fact, I suppose it would be accurate
to say that they are a competitor, one for whom I have much admiration.</span></i></p>

<p>Later, we migrated all our project tracking to Veracity's
Scrum module. Building tools for Scrum practitioners has forced us to think
about Scrum in different ways than we would by simply practicing it.</p>

<p>Sometimes this has been incredibly helpful.&nbsp; One of the
things we did was build a dashboard that is integrated with our build system,
so we can see at a glance how the continuous integration and nightly builds are
getting along.&nbsp; We release a snapshot of the code every night if the nightly
build passes all the automated tests (see Figure 4).</p>

<p>At other times, the duality of our situation has made
things awkward.&nbsp; Sometimes we get in debates about how the more experienced
Scrum teams would want our software to work.&nbsp; For example, we have a
long-running argument about the "priority" field.&nbsp; Our company has been selling
bug-tracking software for 10 years.&nbsp; Every tool we have ever written has had a
priority field.&nbsp; All bug-tracking tools have a priority field.&nbsp; It is heresy to
suggest not having one.</p>

<p>But if we're doing Scrum, do we really need one?&nbsp; What
would we use it for?&nbsp; When we plan sprints, we move stuff from the backlog into
the current sprint.&nbsp; Once it's in the sprint, it doesn't really have a
priority.&nbsp; It's either in the sprint or it's not.</p>

<p>I suppose the priority field <i>could</i> be more useful
as we make decisions about what gets moved from the backlog into each sprint.&nbsp;
But it's not like we're going to just sort by priority and take the top 10
items per person.&nbsp; The priority field contains one person's subjective opinion
of how important something was at some point in the past.&nbsp; When I'm triaging
stuff for the next sprint, I want to know how important this work item is <i>now</i>.</p>

<p>Another recurring issue is about how much flexibility
should be provided for people who get behind on their scrum planning and time
tracking.&nbsp; And I'll just go ahead and admit that I am one of the primary
culprits.</p>

<p>During sprint 14, I basically did no planning or time tracking.&nbsp;
I did plenty of coding, but in terms of making sure other people could see how
my work was going, I did a terrible job.&nbsp; I promised to do better in sprint 15.</p>

<p>

<table cellpadding=0 cellspacing=0>
 <tr>
  <td width=60 height=0></td>
 </tr>
 <tr>
  <td></td>
  <td><img width=599 height=310 src="scm/1811_image004.gif"
  alt="Text Box:  &#13;&#10;Figure 4&#13;&#10;"></td>
 </tr>
</table>

<br clear=ALL>
And then in sprint 15, I got a little behind.&nbsp; So I resolved to catch up.&nbsp; I
started by creating work items for all of the things that were supposed to be
in my sprint 15 plan.&nbsp; And then I went to retroactively log time for those
tasks starting at the first day of the sprint.&nbsp; But I found that Veracity
wouldn't let me log work for an item before the date it was created.</p>

<p>So once again our team ended up in a philosophical
discussion of how Scrum should be done, blended with a discussion of how our
software should work.&nbsp; It seemed to me that any Scrum team should want to
provide amnesty for developers who actually want to get caught up.</p>

<p>Anyway, through a combination of increased discipline and
cheating, I was able to get my sprint 15 burndown chart to be a fairly accurate
reflection of what really happened.&nbsp; And I am pleased to report that I did a
much better job planning and time tracking during sprint 16.&nbsp; There's hope for
me yet.</p>

<h3>We're not done yet</h3>

<p>We're going to continue trying to do Scrum better,
improving with each iteration.&nbsp; Looking ahead, I see a number of places we can
move forward.</p>

<h4>End-of-sprint releases</h4>

<p>I hope that after our first release to end users, we will
be able to consider short sprints with a truly release-ready build at the end
of each sprint.</p>

<h4>Cooperating with the rest of the company</h4>

<p>Currently, the pigs work mostly in isolation.&nbsp; We just
haven't had many chickens around.&nbsp; That will change as the product gets into
the hands of end users.&nbsp; Our pigs and chickens will have to learn how to deal
with each other.</p>

<h4>Managing our backlog</h4>

<p>We need to spend more time and attention between sprints
when we prioritize our backlog.&nbsp; So far, it has been reasonably simple to
figure out what is going to happen in each sprint.&nbsp; We are dogfooding.&nbsp; Each
sprint, we fix the stuff that doesn't work.&nbsp; In the future, more voices and
stakeholders will be involved.&nbsp; The process of planning each sprint will change
and will [I think] become a bit more typical of Scrum practices.</p>

<h4>Making the Product Owner role more meaningful</h4>

<p>My role will evolve into something more like the Product
Owner.&nbsp; This Scrum role has not really existed for us, at least not in the way
I think it usually does.&nbsp; In terms of vision and direction, Veracity has a lot
of me in it, but I've been working primarily as a coder.&nbsp; In the future, I will
be stepping off the development team and working more in the non-programming
roles.</p>

<h4>Interacting with other agile practitioners</h4>

<p>As we continue gaining experience with agile development,
we are interested in the degree to which those who use agile practices function
as a community.</p>

<p>In the past, our company has a great deal of experience
working within the Microsoft .NET community.&nbsp; We found partners and friends
there, people with whom we could consult or commiserate.&nbsp; Looking to the
future, we have found ourselves wondering: Where do developers find community
without being religiously devoted to a platform?</p>

<h5><span style='font-variant:normal !important;text-transform:uppercase'>References</span></h5>

<p>[1]<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span>http://www.youtube.com/watch?v=Q5k7a9YEoUI</p>

<p>[2]<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span>http://campfirenow.com/</p>

<p>[3]<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span>McConnell, Steve.&nbsp; "Software Estimation:&nbsp; Demystifying the Black Art",
Microsoft Press, 2006.</p>

<p>[4]<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span>http://www.atlassian.com/software/jira/</p>
]]></description></item><item><title>Video of my presentation from OSCON 2011</title><guid>http://www.ericsink.com/entries/oscon_2011_video.html</guid><link>http://www.ericsink.com/entries/oscon_2011_video.html</link><pubDate>Mon, 22 Aug 2011 19:05:37 CST</pubDate><description><![CDATA[<p>Part 1:</p>
<iframe width="560" height="345" src="http://www.youtube.com/embed/1qCIff0N3Yw" frameborder="0" allowfullscreen></iframe>

<p>Part 2:</p>
<iframe width="560" height="345" src="http://www.youtube.com/embed/iqDu7s7hSsg" frameborder="0" allowfullscreen></iframe>

<p>Part 3:</p>
<iframe width="560" height="345" src="http://www.youtube.com/embed/HH8nFadt9SA" frameborder="0" allowfullscreen></iframe>

]]></description></item><item><title>Free Printed Copies of "Version Control by Example"</title><guid>http://www.ericsink.com/entries/vcbe_print_edition_free.html</guid><link>http://www.ericsink.com/entries/vcbe_print_edition_free.html</link><pubDate>Thu, 11 Aug 2011 18:49:48 CST</pubDate><description><![CDATA[<p>The printed copies of <a
href="vcbe/index.html">Version Control by Example</a>
arrived last week.&nbsp; We moved <i>seven tons</i> of books into our fourth-floor
office space and all the tenants on the third floor are still alive.</p>

<p>Now that we have lots of copies, I want to give a bunch of
them away.</p>

<h3>How do I get one of those free books?</h3>

<p>Fill out our book request form at:</p>

<p style='text-indent:.5in'><a
href="http://book.sourcegear.com/vcbe/request_book">http://book.sourcegear.com/vcbe/request_book</a></p>

<h3>Do I have to pay for shipping?</h3>

<p>Nope.</p>

<h3>What if I'm outside the United States?</h3>

<p>No problem.</p>

<h3>I'd prefer to pay for the book.&nbsp; Will the request form accept a credit card
number?</h3>

<p>Nope.</p>

<h3>Don't you at least have a tip jar?</h3>

<p>Nope.</p>

<h3>I really want to pay for my copy.&nbsp; Can't you help me do this?</h3>

<p>OK, fine.&nbsp; The book will also be available <a
href="http://www.amazon.com/Version-Control-Example-Eric-Sink/dp/0983507902/ref=pd_rhf_p_t_1">on
Amazon</a>.&nbsp; Things aren't fully set up yet, but the book is in the Amazon
system, and they should be showing it as "in stock" pretty soon.</p>

<h3>Why are you giving away books?</h3>

<p>Because I want to make this content accessible to more
people.&nbsp; Some people like paper.&nbsp; Not everyone reads blogs.</p>

<h3>But isn't this kind of expensive?</h3>

<p>Not really.&nbsp; I've done lots of things crazier than this.&nbsp;
Heck, people often pay more per click on AdWords than it costs to print and
ship a book.</p>

<h3>So this book is just advertising hype?</h3>

<p>Gosh, I hope not.&nbsp; It was written to be balanced and
objective. &nbsp;I had feedback from dozens of reviewers, all of whom were
evaluating the content as a saleable version control book.</p>

<h3>If it's not advertising, then why did you compare your book giveaway to
AdWords?</h3>

<p>Because I <i>do</i> get some benefit from people reading my
book, including increased awareness of me and what I do.</p>

<h3>"Increased awareness"?&nbsp; That still sounds like marketing.</h3>

<p>Yeah kinda.</p>

<p>I just like to write content that (1) people want to read,
and (2) talks about what I am doing.</p>

<p>If I can't talk about what I'm doing while keeping it
interesting for readers, then I'm probably not doing anything interesting.</p>

<p>I've been using this formula on my blog for years. Now I'm
just doing it on paper too.</p>

<h3>Whatever.&nbsp; If you're giving this book away, it must be crap, right?</h3>

<p>Gosh, I hope not.&nbsp; But don't take my word for it.&nbsp; The entire
book is <a href="vcbe/index.html">online</a> in
several different formats.&nbsp; The printed edition has the same content -- it's
just prettier.&nbsp; And heavier.</p>

<h3>How long will this offer be available?</h3>

<p>I don't know.&nbsp; We reserve the right to discontinue it or
change the terms at any time.</p>
]]></description></item><item><title>Why Another DVCS?</title><guid>http://www.ericsink.com/entries/why_another_dvcs.html</guid><link>http://www.ericsink.com/entries/why_another_dvcs.html</link><pubDate>Mon, 01 Aug 2011 18:43:57 CST</pubDate><description><![CDATA[<p>The first reaction from many folks when they see Veracity is
to ask us why we built another DVCS.&nbsp; Having responded to this question many
times now, I have finally learned that it is actually two different questions.</p>

<p>Some folks are trying to ask the following question:</p>

<p style='text-indent:.5in'><i>How is Veracity different from
Git?</i></p>

<p>The chart on the front page of <a
href="http://veracity-scm.com/">veracity-scm.com</a> contains some answers.</p>

<p>However, other folks are trying to ask this question:</p>

<p style='margin-left:.5in'><i>Eric, you clueless idiot, what
recreational pharmaceutical were you smoking when you decided to build yet
another DVCS that has no chance of survival because Git has won and all other
tools will eventually be crushed under the weight of the awesomeness of
Torvalds and his disciples?</i></p>

<p>This question requires a somewhat different answer.</p>

<h3>Has Git Already Won?</h3>

<p>Let's start with a Venn diagram:</p>

<p><img border=0 width=576 height=432
src="scm/1806_image001.gif"></p>

<p>Oh geez.&nbsp; That picture turned out to be somewhat <i>ruder</i>
than I intended it.&nbsp; Let me clarify a thing or two:</p>

<ul style='margin-top:0in' type=disc>
 <li >I mean no criticism here of Git.&nbsp; It's an outstanding
     piece of software in many ways.</li>
 <li >Any criticism of Git's fans or users is intended to be constructive,
     accompanied with much brotherly love and support.</li>
</ul>

<p>Seriously, Git fans, you and I are on the same team here.&nbsp;
We're DVCS fans.&nbsp; </p>

<p>But, well, sometimes when I meet some of the more
evangelistic Git fans, I just want to tell them to get out more.&nbsp; See a broader
perspective.</p>

<h3>You Are Here</h3>

<p>DVCS is the <a
href="http://www.ericsink.com/vcbe/html/history_of_version_control.html">third
generation</a> of version control.&nbsp; I believe the distributed model is the
future of our industry, but that future is NOT fully here yet.</p>

<p>Really.&nbsp; It's not.</p>

<p>DVCS seems <i>so</i> popular right now, but that's mostly an
illusion resulting from the fact that early adopters are loud and tend to hang
around with their own kind.</p>

<p>Here's a reasonably accurate picture of the status quo:</p>

<p><img border=0 width=576 height=283
src="scm/1806_image002.gif"></p>

<p>Most developers are still using boring old centralized
tools.&nbsp; The mind reels at the thought of all those programmers struggling to
use a version control system that has so little buzz.&nbsp; I mean really.&nbsp; How can
they possibly get anything done using a tool that hardly ever gets mentioned on
<a href="http://www.reddit.com/">Reddit</a>?</p>

<p>Linus <a href="http://www.youtube.com/watch?v=4XpnKHJAok8">spoke</a>
of Subversion as "the most pointless project ever started".&nbsp; Well, Subversion
is the most popular version control system on the planet.&nbsp; Gosh I would love to
someday see Veracity become as pointless as Subversion.</p>

<h3>Why did we build another DVCS?</h3>

<p>Because the third generation of version control is not over.</p>

<p>It's just getting started.</p>

<p>&nbsp;</p>]]></description></item><item><title>VCBE in EPUB.  Kindle, not yet.</title><guid>http://www.ericsink.com/entries/vcbe_epub.html</guid><link>http://www.ericsink.com/entries/vcbe_epub.html</link><pubDate>Mon, 01 Aug 2011 14:59:55 CST</pubDate><description><![CDATA[<p>I have added an EPUB file to the <a
href="vcbe/index.html">Version Control by Example</a>
homepage.&nbsp; This e-book format seems to accommodate most readers except the
Kindle.</p>

<p>In general, this book doesn't translate to e-book formats nearly
as well as a novel. Throughout the book, I used a lot of illustrations, source
code listings, and color.&nbsp; If the rendering of these things on my iPad is
typical, then I would say that they made the journey to EPUB in acceptable but
not perfect condition.</p>

<p>But for now I cannot say the same thing about the Kindle.&nbsp;
My initial attempts to create a Kindle version have been incredibly
disappointing.&nbsp; The resulting e-book just looks awful.&nbsp; If and when I come up
with a Kindle version that looks decent, I will make it available.</p>
]]></description></item><item><title>Version Control by Example</title><guid>http://www.ericsink.com/entries/vcbe_update.html</guid><link>http://www.ericsink.com/entries/vcbe_update.html</link><pubDate>Sun, 24 Jul 2011 21:29:51 CST</pubDate><description><![CDATA[<p><img width=348 height=261 src="scm/1804_image001.jpg"
align=right hspace=12>My version control book is finished!&nbsp; <b>:-)</b></p>

<p>The book's home page is at <a
href="http://www.ericsink.com/vcbe">http://www.ericsink.com/vcbe</a>.&nbsp; Right
now you can browse the book online or download a PDF.&nbsp; We're planning Kindle
and EPUB versions, but they're not ready yet.</p>

<p>Printed copies of the book will be available in another week
or two.&nbsp; We've actually got a few now, but we're taking them to <a
href="http://www.oscon.com/oscon2011">OSCON</a> this week.&nbsp; Once we get the
rest of them from the bindery, we should have plenty to go around.</p>

<h3>More info on the book</h3>

<p>Back around 2004 I wrote a series of blog entries called <a
href="http://www.ericsink.com/scm/source_control.html">Source Control HOWTO</a>.&nbsp;
My intent was to turn this content into a book.</p>

<p>But I kept getting distracted by other things.&nbsp; As time
passed, the original material became rather stale.&nbsp; Those blog entries were
written before DVCS became popular.&nbsp; Everything in the version control world is
different now.&nbsp; Eventually I realized that if I wanted to write a book about
version control, I would be starting from scratch.</p>

<p>So I did.</p>

<ul style='margin-top:0in' type=disc>
 <li >The title of the book is "Version Control by Example".&nbsp; It
     has 13 chapters and is 288 pages long.</li>
 <li >The emphasis of the book is on DVCS.&nbsp; Subversion gets lots
     of attention, but it is the only non-DVCS which is covered beyond a
     passing mention.&nbsp; </li>
 <li >The in-depth examples include four open source version
     control systems:&nbsp; Subversion, Mercurial, Git, and Veracity.</li>
</ul>]]></description></item><item><title>Veracity 0.9.1</title><guid>http://www.ericsink.com/entries/veracity_0_9_1.html</guid><link>http://www.ericsink.com/entries/veracity_0_9_1.html</link><pubDate>Sat, 16 Jul 2011 22:37:40 CST</pubDate><description><![CDATA[<p>Veracity 0.9.1 is available.</p>

<p>This release is a big milestone -- it is the first release
which we are identifying as "ready to use".</p>

<p>Even though we have been dogfooding Veracity for over a
year, each release has been accompanied by verbiage which discouraged people
from relying upon it.&nbsp; This was mostly because we thought we might still change
a repository storage format in ways that might not be backward compatible. Well,
we have finally decided that this hesitation is no longer necessary. All future
releases of Veracity will be compatible with a repository created with version
0.9.1.</p>

<p>Version 1.0 is coming very soon.&nbsp; In fact, we considered
blessing this build with the magical "1.0" designation.&nbsp; But we decided to do a
little more polishing and make 1.0 happen during the week of <a
href="http://www.oscon.com/oscon2011">OSCON</a> at the end of this month.</p>

<p>The Veracity home page is:</p>

<p style='text-indent:.5in'><a
href="http://www.veracity-scm.com/">http://www.veracity-scm.com/</a></p>

<p>The front page contains a comparison chart which I <i>hope</i>
will be perceived simply as a way of describing Veracity's place in the world
relative to other things.&nbsp; I don't want this triggering a flame war with people
quibbling over details while they argue which DVCS is the best.</p>

<p>Available <a href="http://veracity-scm.com/downloads.html">downloads</a>
include the source code as well as packaged builds for Windows, Mac and Ubuntu
Linux.</p>

<p>A public instance of the Veracity repository is online at:</p>

<p style='text-indent:.5in'><a
href="http://public.veracity-scm.com/">http://public.veracity-scm.com/</a></p>

<p>If you want to track our progress regularly, you can clone
this instance:</p>

<p style='text-indent:.5in'><b><span style='font-size:9.0pt;
font-family:"Courier New"'>vv clone
http://public.veracity-scm.com/repos/veracity veracity</span></b></p>

<p>At the moment, you cannot push to the public server.&nbsp; We
haven't done the homework necessary to let us accept patches and contributed
code from the community.&nbsp; We will get all our ducks in a row as soon as
possible.</p>

<p>Finally, veracity-scm.com includes a <a
href="http://veracity-scm.com/qa">Question+Answer</a> area, running <a
href="http://www.osqa.net/">OSQA</a>.&nbsp; For any and all questions about
Veracity, this is the place.&nbsp; We've thrown a few seed questions in to get
things started.</p>]]></description></item><item><title>Distributed Bug Tracking Avoids Out-of-Sync Bugs and Code</title><guid>http://www.ericsink.com/entries/roub_dbt.html</guid><link>http://www.ericsink.com/entries/roub_dbt.html</link><pubDate>Thu, 07 Jul 2011 15:08:38 CST</pubDate><description><![CDATA[<p>The good news:&nbsp; My coworker Paul Roub has written a very
nice <a href="http://blog.roub.net/2011/07/distributed_bug_tracking_dvcs_.html">blog
entry</a> about using distributed bug tracking with Veracity.</p>

<p>The bad news:&nbsp; His article was inspired by me being a
bonehead.</p>]]></description></item><item><title>SQL Source Control</title><guid>http://www.ericsink.com/entries/sql_source_control.html</guid><link>http://www.ericsink.com/entries/sql_source_control.html</link><pubDate>Wed, 06 Jul 2011 14:26:09 CST</pubDate><description><![CDATA[<p>If I weren't such a lousy student maybe I would get a
masters degree in business.&nbsp; My graduate thesis would be entitled, "The 21
Questions that People Ask at Trade Shows".&nbsp; You see, I have noticed that all
the visitors to our booths at TechEd and PDC and DevConnections always ask the
same questions.</p>

<ul style='margin-top:0in' type=disc>
 <li >Why should I switch to Vault?</li>
 <li >How much does it cost?</li>
 <li >Does it integrate with Visual Studio?</li>
</ul>

<p>After going to enough trade shows, we've basically heard
them all.&nbsp; Nobody ever asks anything new.</p>

<p>Except for that time some guy with a Unix beard wanted to
know if we were hiring and do we do criminal background checks and how many
felony convictions are considered acceptable for a new hire.&nbsp; That was ...
different.</p>

<p>Anyway, one of the questions we hear at every show is:</p>

<p style='text-indent:.5in'>Can I use Vault to version control
my SQL stuff?</p>

<p>To which we reply:</p>

<p style='margin-left:.5in'>Well, no.&nbsp; You see, we could do
this feature, but it would require us to build a whole bunch of SQL-specific
tooling and that would put us in competition with Red Gate and we don't want to
be there because Red Gate is a great company and Neil Davidson and Simon
Galbraith are great guys so it would just be easier if you went over to the Red
Gate booth and asked them to do this and let them know that we'll be available
to help and by the way would you care for one of our free T-shirts?</p>

<p>I am quite pleased to say that, thanks to Red Gate's
efforts, we won't have to give this answer anymore.&nbsp; Earlier this year, they
shipped <a
href="http://www.red-gate.com/products/sql-development/sql-source-control/">SQL
Source Control 2.1</a> which includes integration support for Vault (and
apparently every other prevalent version control tool on the planet).</p>

<p>It is miserable in the extreme for a developer to be working
without good support for version control.&nbsp; If you're doing SQL development,
this is the product you want to use.&nbsp; My compliments to our friends at Red Gate
for meeting this need.</p>

<p>&nbsp;</p>]]></description></item></channel></rss>
