Posts

Otter's Law

For all the 'take back agile" and "agile smagile" and "apologizing for agile" and all the other post-agilists and so-called post-agilists in the world, I give you Otter's law: Any methodology followed via obligation and knowledge-avoidance cannot produce positive change.  I've ranted about change gone wrong and methodologies followed badly and horrible oversales and undersales and all, but it comes down to otter's law ultimately. Too many companies have huge gains from using XP and Scrum and what-have-you. Too many others tried "the same thing" with entirely different results. Some teams are whole-heartedly into the whole agile thing, and they seem to have pretty good. Others don't seem very excited and don't get much out of it. Is it excitement that they need? I don't think so. I think that the lack of excitement and the lack of progress have the same root. I think it's a lack of profluence in agile-a...

Wrong naming revisit

I was looking at the excellent work by appium, and saw this little snippet in an example: var el = driver.FindElementById ( "name_input" ); el.Clear (); el.SendKeys ( "Appium User" ); el.SendKeys (Keys.Return); There's nothing horribly wrong  with the name el, except that it's exactly what we ask people not to do with names.  El is short for element (a bit of mental mapping, but the length of the name reflects the shortness of scope). But it is not informative. The variable "el" (EE-EL) looks like "e1" (EE-ONE) to the casual reader. The name doesn't look right.  Also, "element" is what it's made of, not what it's for.  Yes it's an element. But it means "the name input field" so "nameField" or"name_field" or "name" might be better. Or even "input" if it's the only input field in the block....

What is a Coach?

I'm a software org/team/individual coach. What the heck does that mean? On a closed mailing list, Geepaw asked for our definitions of a software team "coach," and several offered opinions.  This one is entirely mine.  On reading my definition, John Kern interpreted it to mean "individuals" whereas I intended these to apply to teams and organizations as well. I thank him for bringing up the possible misinterpretation, and I leave it up to my readers to understand I mean it in a plural sense; organizations and teams have skills and habits and mindsets just as individuals do. Without further ado: A coach is someone whose: 1) work is with people 2) primary product is an improvement in their abilities  3) secondary product is an improvement in the way they interact with teammates and peers. 4) teaching comes through interaction , not mere lecture or advice (that would be a counselor) 5) work is done at the request and permission of th...

Preplanning Poker: Is This Story Even Possible?

Image
The story says "attach an e-commerce server." Well, maybe it says "As a product manager I want my system to incorporate an ecommerce server so that I can collect money." Can you get that done this iteration? It sounds like a three-story-point effort to me, right? Hold On A Second This story doesn't have a plot. It is a state of being. I don't think that  saying "once upon a time there was a little girl" would qualify me as a story teller.  Right away I'm nervous. What the heck does it mean? What do we want to do here?  Let's not throw this into the sprint backlog with (of all things) a story point number on it. Let's certainly not stick somebody's name on it. Let's think a little.  We're not aligned on what this "story" means.  The New Preplanning Poker You already know about planning poker , and the benefits of silently estimating first, then comparing results. You know that it helps av...

Microtesting TDD: A Quick Checklist

Quick pointers: See each test fail at least once (so you can trust it). Make test fail messages helpful because they fail when you are working on something else. Prioritize! Use a list for tests you want to write. "Ignored" tests will do nicely. Run all the tests so you know when your last change has broken something. Keep your feedback loop as tight as you possibly can. I get to see these all violated, so I thought I'd make a short list and save you some time.  The first two go together. You want each test to fail so you can see the message. Some time in the future you'll make a change, and an older test will fail and you'll see the test class name, the test name, and the assert message. Those three should work together so that you know what kind of mistake you made.  That goes with number 5, too. If you only run the one test you're working on, you may have dozens of breakages by the time you get around to running all the tests. If you ...

Your Transition Isn't Very Agile

Agile's teaching of "thin, vertical slices" doesn't apply just to features. Organizations move forward in thin vertical slices too. Story mapping teaches us to do incremental, value-first programming and integrate the "threads of functions" all the time from end-to-end.  CI teaches us that integrating thin slices frequently avoids pre-release integration nightmares (and post-release nightmares).  Likewise, we leave room for learning and growing, because what we learn in iteration N may give us different options and opportunities in iteration N+1 and onward. We have an idea of where we want to go, but we are always seeking best value. However, too few agile transitions are done in an agile way. It's only reasonable that a pre-agile company would want a waterfall, Big-Design-Up-Front plan with staffing and milestones for an agile transition. But we, as post-transition coaches and consultants know better and are supposed to be ...

Programming Is Mostly Thinking

Image
Pretend you have a really great programming day.   You only have to attend a few meetings, have only a few off-topic conversations, don't get distracted or interrupted much, don't have to do a bunch of status or time reporting, and you put in a good six hours of serious programming [note: this RARELY happens in an 8-10 hour day].   I want to review your work in the morning, so I print out a diff of your day's work before going home.   Sadly, overnight the version control system crashes and they have to recover from the previous day's backup. You have lost an entire day's work.   If I give you the diff, how long will it take you to type the changes back into the code base and recover your six-hours' work? Programming is 11/12ths Thinking I've been touting this figure for some time now, and people keep asking me where the study is that produced such an odd number. Well, it's not pulled out of thin air and it's not the result of a thoro...