Category Archives: Uncategorized

Ask an Agile Coach: Should I count partially complete user stories in my velocity?

Hello readers, apologies for the lack of posts lately; lots of work at hand. Today’s Ask an Agile Coach question comes from a comment on the last installment, which is rephrased here. In one form or another, I have gotten this question for years now:

Should I count partially complete user stories in my velocity? For example, if I have a 100-point story that’s almost done, should I add 80 points to my delivered points total for this sprint?

The answer is no, you should not.

Remember that Scrum was designed to enable empirical process control for software development. The team is committing to work in fixed intervals, with the intent being that a team becomes quite proficient at knowing how much work they can move from concept to customer within that fixed interval. To that end, the points that go into velocity are points delivered. Delivered points come from stories that are completed. When stories are incomplete, they are carried over, and velocity is lower than expected for the Sprint. Hopefully, these points plus the additional work pulled in will cause the next Sprint to have a higher number of delivered points and the two values will level one another out.

If a team or Scrum Master insists on counting part of a story’s points in velocity, they are masking a symptom and thus choosing to ignore the underlying causes. This short-circuits the process and the valuable feedback it provides.

If a team finds itself with carryover continually affecting velocity in a negative manner, it is usually an indication that the team needs to improve their ability to plan and commit to work within a Sprint.

One area to target is honing the ability to break work down into thinner vertical slices of user-oriented functionality. If stories are perpetually 50-80% done at the end of a Sprint, revisit the team’s approach to user story writing and trying to carve smaller functional slices (but not so small that you violate the INVEST heuristic from Bill Wake; an alarming number of practitioners have fallen into hyper-granularity in their stories).

Another area to address is the cross-functional team’s (and your Scrum team is cross-functional, right?) understanding of what it takes to go from concept to customer. If stories seem to invariably look smaller or the team seems to perpetually overcommit, it may be that some of the more vocal team members are expressing estimates that reflect a myopic focus on simply the writing of code instead of all the tasks involved in completing a given story. Encourage the other cross-functional members to speak up in User Story writing, Sprint Planning, and Backlog Grooming about what they need to do to complete the stories in question. This has always resulted in more accurate story sizes for me over the years.

Barry Hawkins of All Things Computed provides coaching and mentoring in how to successfully apply the process and technical disciplines of Agile Software Development.

Dry spell

Wow, I haven’t touched this thing for some time.

It’s not that I have forgotten about it; I have 4 unfinished topics, 2 of which might actually be worth someone reading. Blogging just hasn’t done much for me these past months — or is it years already? Yeah, now that I look back through the archives, my posting seems to have dropped off sharply right around the time 2 things happened; the start of my company and the birth of my daughter. Those happened within 3 weeks of one another. It was a hectic time; perhaps it stayed that way. The only flurries of frequent posts were actually centered around Open Space meetings with Bruce it seems. That stands to reason; those events were oases of peace and inspiration amid the desert that was my first independent contract; quite a soul-drainer, that one.

It certainly hasn’t been a case of not having topics to write about; my encounter and subsequent embrace of Python, my disillusionment (gasp!) with the Rails community after checking it out for awhile, discovering Domain-Driven Design (or did it discover me?) and the revelations that have ensued; tons going on, just haven’t felt inspired to write much.

It seems like the dry spell might be passing, but it’s too early to pass judgement. What I do know is that this is the first I’ve felt like updating this thing in forever.

Debian Graphical Installer — excellent work, guys

I recently had to provision a laptop at my client’s site for my use. Certain third-party applications that are key to managing the technology practice there are Windows-only, but I (am fortunately allowed to) refuse to have a Windows-only machine. They are cool enough to let me shrink the corporate WIndows XP image and set up a Debian sid instance for dual-booting. I took my trusty CD of a recent daily snapshot (the fact that I have been able to use daily snapshots of the Debian Installer ISO for several years with little to no trouble is in itself a huge testimony to the quality of that project’s work) and popped it into the media drive of this rather battered Dell Latitude D600. I had heard at DebConf that the graphical installer was now fully part of the daily snapshots, so on a whim I invoked it with the ‘expertgui’ directive at the boot prompt.


Language selection in the graphical Debian Installer

If you haven’t seen this, go and burn an ISO of the daily snapshot for your architecture and boot into it. (I won’t even elaborate on the fact that being able to choose from 11 different architectures is massively impressive.) What a beautiful interface, and how amazingly tasteful as far as look-and-feel. It’s very professional-looking, yet not corporate. There’s a button to capture snapshots of the install screens right there on each screen. It may take a minute or two to adjust to having the right line in the display highlighted before clicking the button to continue in more-complex screens, but the annoyance is neglible. I was thoroughly impressed, so much so that I wiped my backup laptop, a ThinkPad T42, and did a reinstall using the graphical interface. You can still pop over to the other virtual terminals just like in the character-based installer; the graphical interface seems to use the fifth virtual terminal. I just popped out of it to the second via Ctrl + Alt + 2 and was able to mount a USB drive with some firmware I needed.

I wiped the T42 so I could run the IBM recovery and get XP back on a small partition. Hey, how else am I going to play Warcraft III? (Seriously, though, if anyone has managed to get Warcraft III to run via an emulator, let’s talk.) I found it a study in contrasts, installing XP and then installing Debian immediately after. The first thing I noticed with XP is how little visibility I have into the install process compared to the Debian installer. I suppose I shouldn’t have to since all these vendors have supposedly ensured (stifling audible laughter here) a smooth installation process for me. However, when something does go wrong, I am pretty much out of luck. Second, I have come to take for granted how quickly you can fully provision an OS instance with Debian’s rich package-management system. The benefits of an awesome package management system are painfully obvious as soon as you have to reinstall Windows or OS X, especially if you are a software developer with a whole litany of tools necessary for your work.

A graphical installer was the last major impediment to me recommending Debian to my friends and relatives who are too befuddled by a character-based application or installer. This closes a significant gap in the Debian offering, and I wish to sincerely thank those who have poured so much time into the installer project as a whole and have gone the extra distance to create an interface that reaches out to the less-technically-oriented crowd.

DebConf6 Formal Dinner — Inolvidable

A Coronation

A coronation of the oddest sort

Surreal, just surreal.

A Cascade

Water from the torrential downpour came through the wall like a waterfall

An unbelievable rain came, and eventually overwhelmed the roof and came down the wall like a waterfall.

A Calamity

Imagine a black square here. The power went out, and we all just rolled with it. It was kind of fun, actually.

A Cleanup

In the spirit of community numbers of Debian people collaborated for a quick cleanup

In the spirit of community, numbers of Debian people collaborated for a quick cleanup.

A bit chilly in a hot place; a distributable Java JRE and JDK arrives

So it’s finally OK to mention it now; Java has made it explicitly possible (read legal) to distribute the Sun Java JRE/JDK on a GNU/Linux distrubtion. The new license is for Java SE 5 on Linux only, called the Operating System Distribution License for Java, or DLJ for short. You can read the license in text or pdf form. The FAQ for the DLJ is also available in text and pdf. Heck, go through the README for the JRE and JDK while you’re at it.

So what does that mean? Well, GNU/Linux distrubtions like Debian can now package a Java runtime environment or Java development kit in their repositories. That was previously not possible due to restrictions present in Java licensing. Users still have to accept the Java SE 5 binary code license that is totally not free and has the same restrictions Java has always had, but this at least makes packaging and supporting Java less painful for distributions.

Sun is coordinating the efforts via a project, jdk-distros. This is an unprecedented level of cooperation from Sun with external parties in anything related to Java. I consider myself fortunate to have been a founding member of the project. It has been a pleasant and refreshing experience to meet a few optimistic and forward-thinking people from Sun who have a keen interest in Free Software; a big thanks to Simon Phipps and Tom Marble. I was encouraged that they allowed our contributions to be covered under the MIT license. If you would have told me that a month ago I would have laughed at you.

The Debian announcment should be posted on the debian-devel-announce list today. I am sure this will draw both praise and ire from the Debian community. That’s cool, though; the rich diversity is part of what makes it such a vibrant organism.

Mourning the loss of a domain name, finding a better one

I recently let a domain name expire,, and it was scooped up by some domain-squatting outfit out of Illinois, DotaCom something-or-other. It really stinks, because it took me a long time to come up with the idea of byte masonry as my personal metaphor for coding as craft. I actually like that name better than the name/domain under which I incorporated.

What I really liked about bytemason was the mason part; I am fascinated by the work of brick masons. To me, there are strong analogies between brick masonry and quality coding. Both require discipline to do many small things right while never losing sight of the big picture. These two elements must be held in dynamic tension and balance; otherwise the end product will be unsound.

I was never crazy about the byte part, but it was the best available thing I could come up with at the time. These days, bytes are certainly a more common reference than bits, unless you work in embedded systems or hardware engineering, I guess.

After wheedling around GoDaddy for over an hour, a new domain name finally came to me. I now own I like both components of this name. I have long been fascinated with the arts of the Celts. The intricacy and the symmetry of their metalwork and stone sculpture mesmerizes me. I also like code as opposed to byte, because it more closely ties to the general product of programming as opposed to a discreet unit of code’s composition.

I had also toyed with “The Artful Coder”, a takeoff from the notorious Oliver Twist character The Artful Dodger. However, since his primary skill was avoiding arrest and it serves as a term to infer someone is generally skilled in avoiding responsibility, that was a glaring mismatch. It’s a shame; it sounds quite catchy. I mean heck, Jack Dawkins, Barry Hawkins — it’s almost destiny. I guess if you camp out on that whole “lazy programmer” mantra that might fit. If so, all the domains for it are available; go snatch ‘em up.

Oh yeah, and is one character shorter. o/ Woohoo! I’m hopeless.

Programming The New Web, Day 1

It appears that this conference will be everything I had hoped. The group is small and refreshingly cross-disciplined. We have folks from large enterprise shops, mid-range consultancies using Java, Ruby, PHP, and Python, and solo developers from several disciplines. There’s even a ColdFusion person!

The OpenSpaces conference format is already fulfilling its promises. We had a full docket of topics before we even had our first break!

In the afternoon session we had a good discussion about Content Management Frameworks/Systems. It’s interesting to me to see Drupal, WordPress, Plone, and others now being referred as Content Management Frameworks instead of Content Management Systems. I hypothesized that perhaps it was because of issues with clients who expected a CMS to be something akin to off-the-shelf software packages that are just installed and then ready-to-use. With the shift to “framework” instead of “system”, the idea of a need for customization and buildout is more clearly expressed. I gave heavy endorsement to Drupal as a CMS. I have heard that some people were using WordPress as a CMS, and there were a few folks with clients doing that.

Eclipse wrangling

Sheesh, what a day. Went into the office looking forward to having the place to myself, only to find that the entire infrastructure had not yet been brought back up after a weekend of power testing in the facility. In disbelief I booted my workstation anyway, hoping something might pop up. Nope. I went to the LAN room, and the only thing running were the cooling fans of the cabinets. I pondered powering up the backbone and the mail and resource servers myself, but then thought better of it. That would be a pretty cavalier maneuver for someone who is a guest consultant.

In dismay I headed back to the house with the hope of prototyping some Servlet Filter mockups for the security mechanism I have to integrate into our Spring-based application at work. It was then that I discovered that my troubles last week with Eclipse reliably causing the IBM PowerPC 1.4.2 JDK to core dump were not over. I spent hours trying different options to overcome this obstacle; no luck. I did end up filing Eclipse bug reports #97375 and #97378, which will hopefully help the cause.

You know, I am thankful that the woeful tales of those who do corporate blogging have caught the eye of mainstream media. It helps remind me to keep my mouth shut when I am having days like the last 30 or so at work. 8^)