Category: Tools and Techniques

Testability & Good Design

Much of the time, the test-driven development yahoogroup is pretty quiet, but it has recently awakened from winter hibernation.  The question “Is it OK to add code to a class only to improve its testability?” stirred up a wide-ranging discussion that brought in the topic of what constitutes good design.  “Uncle Bob” Martin drew a bold line in the sand with his comment,

One reasonable definition of good design is testability.  It is hard to imagine a software system that is both testable and poorly designed.  It is also hard to imagine a software system that is well designed but also untestable.

I greatly sympathize with this statement, though I wouldn’t go quite that far.  I don’t think it is so hard to imagine code that is testable, but poorly designed.  For a trivial counter-case, there could be rampant duplication of testable code.  I would call that poorly designed, but it doesn’t affect it’s testability.  Therefore I would soften Uncle Bob’s definition to “One reasonable component of the definition of good design is testability.”

To me, the notion of “testable code” is the same thing that “testable circuit” was back when I worked on a custom integrated circuit.  Mostly, that depends on the ability to put the circuit or code into a known state, exercise it, and see the interactions with its collaborators and its resulting state. Read More

If you don’t automate acceptance tests?

Amr Elssamadisy reports on InfoQ that automated acceptance tests are “only used by a small minority of the community.”  Is this true?  If you and your team don’t use automated acceptance tests, please let me know how you handle regression tests as the application grows larger.  You can leave a comment here or, if you’d rather not say it in public, email me directly. Read More

Agility and Predictability

I was reading the latest post on Johanna Rothman’s Managing Product Development blog.  In it she says,

Serial lifecycles provide a (false) prediction. And, boy oh boy, is that prediction comforting to your senior managers. “When will the project be done?” might be their most-asked question. Of course, a serial lifecycle provides a prediction that’s almost guaranteed to be wrong, especially if you use a project scheduling tool. The tool provides you a single-point estimate, which is the first date you can’t guarantee the project won’t be done by”“the first possible, optimistic date.

I like that characterization of the predicted date.  Another characterization, usually true of serial lifeycles, is that the predicted delivery date is the first day of schedule slip.  I’ve seen many serial projects get almost to that date before they first admit that they’re in trouble. Read More

More on Agile Usability

I recently wrote about Agile Usability.  Now I find an article on StickyMinds, “Getting Agile With User-Centered Design,” by Jon Dickinson and Darius Kumana.  They talk about a number of issues that can come up.  My favorite bit is this:

We must actively challenge the mindset of divided responsibility–” You spec and design it; we’ll build what you spec.” Everyone should work toward the shared vision of a successful experience.

That says so elegantly what I tried to say in my article.

AYE 2008 – Moving Projects Forward: The Clinic Method

As I slowly work through my notebook from the Amplifying Your Effectiveness Conference (having blogged about sessions on Unearthing the Data You Need, Remembering Your Resources When Stressed, and Congruent Coaching), I come to Jerry Weinberg’s session of Tuesday afternoon, Moving Projects Forward: The Clinic Method.

As long as projects are staffed and led by people, we can be sure that they will sometimes get stuck, or headed in the wrong direction, or something.  This is true no matter what sort of methodology you follow.  Even if the methodology is perfect, the people following it are not.  They will make mistakes.  They will have blind spots, and not see what it is that they’re not seeing.  Projects will still get in trouble.  (Yes, even Agile projects.)

So, what do you do about this certainty? Read More

Agile Usability

If I had time, I would re-read Tom DeMarco’s book Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency, because I have precious little slack in my own life, these days.  So it is that I just now got around to reading Jakob Nielsen’s article, Agile Development Projects and Usability, which William Pietri noted on the Agile Usability list on November 17.

The statement

“For a project to take interaction design and usability seriously, it must assign them ‘story points’ (i.e., resources) on an equal footing with the coding”

jumped out at me.  Alistair Cockburn wrote a thoughtful reply where he noted the same statement.  I agree with Alistair’s comments, but I’d like to comment on this statement from a slightly different perspective. Read More

AYE 2008 – Congruent Coaching

Continuing with my recap of the AYE Conference sessions I attended, I come to Johanna Rothman‘s session, Choosing the Right Coaching Approach: Congruent Coaching. This was a time-slot where I wanted to attend every single session. I chose this session because coaching is a big part of what I do, and Johanna is one of the best people I know to learn to coach more effectively. Read More

AYE 2008 – Remembering Your Resources When Stressed

On last Monday afternoon, I attended the session, Remembering Your Resources When Stressed: The Self Esteem Toolkit led by Jerry Weinberg. This session dwelt on a idea Jerry borrowed from Virginia Satir. We have the capability to do the things we need to do, but we often forget our powers when we’re stressed. The toolkit is a set of reminders of the capabilities we have. Jerry has added to Virginia’s original list, and published them in More Secrets of Consulting. Read More

1 Comment

Categories: Tools and Techniques

Tags: ,