Pair Programming Roundtable at SD Code Camp, Interested?

Do you plan on attending the San Diego Code Camp the weekend of June 26-27?  If so, please consider voting for the session I submitted, “Getting the Most out of Pair Programming.”  To vote, go here: http://www.socalcodecamp.com and log in (or register), then click on the Sessions tab, scroll down the the G’s (alphabetical by title), and check the box next to the “Interested” count.  Thanks.

Here’s the Session Description I Submitted: I’ll start with a 10- to 15-minute presentation of my experiences with pair programming going back 10 years Continue reading Pair Programming Roundtable at SD Code Camp, Interested?

User Stories: It’s SMART to INVEST

The basic framework for a good user story has 3 parts: identifying which user/role (or other stakeholder) benefits, what that person wants (the goal), and the payoff (why it’s important).  You’ll often see this framework expressed as the following template: “As a ________, I want ______, so that __________”.   To paraphrase Mary Poppendieck’s quintessential requirements example,

“As the VP of Distribution, I need us to redesign the REAR windshields of our cars to withstand wind-speeds of up to 130 MPH (as our FRONT windshields already do), so that we don’t have any more accidents when our cars are loaded onto transports facing backwards and then hauled at 70 MPH into a hailstorm with headwind gusts of 50 MPH.

Since the second blank represents a goal, a lot of user-story writers find the SMART mnemonic helpful.  It’s one that’s taught in traditional goal-setting seminars, but as you can see, there’s no consensus on exactly what the mnemonic stands for:

Specific / Significant / Stretching
Measurable / Meaningful
Attainable / Achievable
Realistic / Relevant / Reasonable
Time-bound / Testable / Trackable

So, a better mnemonic that’s especially pertinent to user-stories is INVEST (think “Return-on-INVESTment”): Continue reading User Stories: It’s SMART to INVEST

Product Owner is the Most Stressful Role in Scrum

Among other points brought up by Barbara Nelson at the OC APLN meeting last week, she contends that Product Owner is the most stressful role in Scrum, and I don’t doubt that.  I’m sure it’s especially true in organizations that haven’t yet wizened up to the fact that product marketing takes a triad of full-time roles (a Product Strategist, a Technical Product Manager, and a Product Marketing Manager aka. Go-To-Market Manager).  Not only do some organizations try to cram all three roles into a single position, but they often pile on the tasks of a Sales Engineer to boot.

Then, comes along Scrum (or some other form of Agile) and the whole Technical Product Manager role gets turned upside down to become what Scrum calls a Product Owner. About the only good news here is that Mike Cohn shows in his book, Succeeding with Agile, that the time required of a Product Owner while an organization is adopting Agile is not too intense right at the start.  New Scrum development teams place much higher demands on the ScrumMaster than the Product Owner at first, before the ratio flip-flops.  So, there’s a little leeway for the product management organization to figure out how to accommodate Scrum in their day-to-day activities while the development teams are still getting up to speed on Scrum.  That leeway is a small gift that shouldn’t be squandered.

For more about the triad of product marketing roles, be sure to grab Pragmatic Marketing’s free e-book, The Strategic Role of Product Management.

Week in Recap

The second week of the month is always busy for me.   On Wednesday, I reconnected with Barbara Nelson of Pragmatic Marketing when she spoke at the Orange County APLN meeting in Irvine. It was the first time I’d seen her since she taught my Pragmatic Marketing class years ago. (We were both at the 1-day project managers conference at UC Irvine in February, but failed to connect.)

It was another great APLN meeting. For one thing, I snagged a laminated copy of the new-and-improved Pragmatic Marketing Framework chart, the one that shows the 37 different areas of responsibility of product marketing management. This chart served as the base layer for most of the slides that Nelson presented, as she talked about different roles within product marketing and the impact of Agile on those roles.  (More on that in a future post.)

The next night, I attended the Orange County Java User Group meeting where Josh Long stood in for Rod Barlow and gave a thorough review of the state of concurrency in the Java world and how they take advantage of it at Shopzilla.  I picked up more than a few pointers.  The OCJUG presentation calendar page has a link to the complete slideshow.

Next week, I’m participating in the kickoff for a new Scrum adoption project, so there will be plenty of things going on shortly to inspire new posts.  In the mean time, I’m also looking forward to the Orange County GTD Meetup next weekend.

Test-First Development Can Be Liberating

Experienced agilists talk about becoming “test infected.”  For everyone, unit testing starts out as a chore that seems like it’s more work than it’s worth, but then you get over a certain hump and suddenly unit testing is a breeze.  The benefits become manifold and profound, and you begin to wonder how you ever programmed without it.

One important milestone on the way to achieving test-infected enlightenment is the transition from test-after to test-first.  All developers start out writing the production code first and then write unit tests around it.  It’s the only way we learn.  But, eventually, we begin to see the power of writing the tests first.  This used to be called Test-Driven Development, but it’s more accurately referred to as just Test-First Development (although we still abbreviate it as TDD).

For me, the greatest thing about TDD is that it gets the subjective part of the problem out of the way early, leaving just the objective part to puzzle out.  “Okay, now that we know what we need to accomplish, we just have to get it to work.”  It’s a rather liberating feeling. Continue reading Test-First Development Can Be Liberating

Lessons in YAGNI

YAGNI stands for “You Ain’t Gonna Need It” (yet).   It’s a mnemonic meant to remind us developers not to speculate. That we should only put in code that addresses the task at hand and worry about tomorrow’s challenges tomorrow. There are many good reasons for this advice, the chief among them being that situations may change between the time that the speculative development happens and the need for the feature actually arises. In that case, the speculative development will turn out to have been wasted development time that could have been spent on addressing more immediate problems.

I thought I had learned this lesson years ago. I thought I was pretty sensitive to YAGNI and had a good track record for resisting it. But, recently I introduced a bug in a system that I was working on, and the ultimate reason for the bug is that I had committed the “crime” of speculative development. Continue reading Lessons in YAGNI

Is the User an Expert or a Novice? It Depends

Pragmatic Marketing LogoI posted earlier that Barbara Nelson of Pragmatic Marketing will be one of the presenters at ProductCamp this Saturday. When a company I was working with six years ago hired Pragmatic Marketing to teach everyone their system, it was a definite game changer, and she was the one who taught the course.  For my part, as a software engineer, I learned from her how to work much more closely and effectively with the marketeers.  The insights we all gained from Pragmatic Marketing’s experience were invaluable.  They are lessons that I continue to apply every day.

As just one tiny example, I’m reminded of an Aha! moment I experienced back then. It was the notion that novices don’t typically stay novices for very long. Continue reading Is the User an Expert or a Novice? It Depends

Unfinished Projects = Costly Excess Inventory

Mary Poppendieck’s seminal work, Lean Software Development: An Agile Toolkit, lists the 7 wastes of manufacturing and maps them to software development, among other things.  (In a recent webcast, Poppendieck added 3 more wastes to the list, and I’ll write about those in another post.)  Of the original seven wastes, the one that I found most enlightening is that unfinished projects lying about is the equivalent of having excess inventory on hand. Continue reading Unfinished Projects = Costly Excess Inventory

ProductCamp at UC Irvine Sat 2/27/2010

ProductCampLogo

Product Managers and Project Managers will be gathering for an “unconference” at U.C. Irvine next Saturday.  It’s free to sign up for anyone who’s interested.  Go to http://www.productcampsocal.org to sign up to attend and also to vote on the sessions you’d like to see.

One of the proposed sessions is being led by Barbara Nelson of Pragmatic Marketing.  She’s was my instructor when I took the Pragmatic Marketing course six years ago, and I’m very much looking forward to seeing her again.  If her participation is any indication of the general caliber of this event, then we all stand to gain greatly.  See you there.

a blog by Craig L. Jones, Software Agilist