Independent Stories in the INVEST Model
The INVEST model is a reminder of the important characteristics of user stories, and it starts with I for Independent. Independent stories each describe different aspects of a system's capabilities....
View ArticleThe System Metaphor Explored
The System Metaphor is one of the less popular parts of Extreme Programming (XP). Newer descriptions often even omit it. But metaphor is useful – when you have a good one, it really helps you...
View ArticleNegotiable Stories in the INVEST Model
In the INVEST model for user stories, N is for Negotiable (and Negotiated). Negotiable hints at several important things about stories: The importance of collaboration Evolutionary design Response to...
View ArticleValuable Stories in the INVEST Model
Of all the attributes of the INVEST model, "Valuable" is the easiest one to, well, value. Who is against value? We'll look at these key aspects: What is value? The importance of external impact Value...
View ArticleIntensifying Stories: Running with the Winners
For a given story headline, many interpretations are possible. These vary in their quality and sophistication. I call this the intensity or depth of a story. Story intensity is a knob you can control,...
View ArticleResources on Set-Based Design
“Two roads diverged in a yellow wood, yet I could travel both.” —Not Robert Frost A reading list on set-based design (part of lean product development). Applied Fluid Technologies. Information on...
View ArticleEstimable Stories in the INVEST Model
Estimable stories can be estimated: some judgment made about their size, cost, or time to deliver. (We might wish for the term estimatable, but it’s not in my dictionary, and I’m not fond enough of...
View ArticleResources on Refactoring
Refactoring is a key skill in developing software. These resources can help you improve. If you just want practice with refactoring, choose some Exercises. If you’re just starting out, consider the...
View ArticleResources on Test-Driven Development (TDD)
Test-Driven Development (TDD) is an approach to designing and implementing software: write tests, write code, refactor, and repeat; all in small steps. If you just want practice, choose some Exercises....
View ArticleResources on CI and CD
Continuous Integration (CI) and Continuous Delivery (CD) (or Continuous Deployment) – enabling a flow of value. Other resource summaries: BDD, TDD, Refactoring. [Disclosure: Note that I may have been...
View ArticleDisplay: Testing Graphics, Part 2
In Part 1, we discussed models for graphics. As we move into testing, let’s start with the visible part: the display. Test Display Capabilities You sometimes care about the physically capabilities of...
View ArticleScreen-Based Tests: Testing Graphics, Part 3
Screen-Based Tests: Two Extremes Screen-based tests focus on what’s visible rather than internal representations. We’ll consider two extremes for testing screen-based output: fully manual and fully...
View ArticleInternal Objects: Testing Graphics, Part 4
In our final article in the series on testing graphics, we’ll look at testing internal objects (rather than testing at the display level). We’ll look at several decisions around testing. The first...
View ArticleTDD Impact Calculator
TDD – Test-Driven Development – is one of the tools people use to improve their programming. Many teams find that this discipline helps them reduce their defects. Could it make a difference to your...
View ArticleJumping the S Curve: Life Extension for Products
We implement feature by feature, seeking value; adding up the value forms an S curve with characteristic regions. Can we overcome the tendency of products to fade away? Feature by Feature Let’s look at...
View ArticleIntensifying Stories Through Prediction
Rather than focusing on “splitting” a story, figure out a minimal form of a story, and intensify it – make it more powerful or desirable. We’ll explore one dimension, prediction: how can we make a...
View ArticleRefactoring: Pull Common Code from Conditional
We’ll look at two refactorings suitable for conditional statements: Pull Up Common Head of Conditional and Pull Down Common Tail of Conditional. I originally learned these as performance optimizations...
View ArticleDelivery Strategies
How do you handle delivery of new features or new systems? The easiest way is to just add the new features or replace the existing system, with no transition, but this is not the only approach. We’ll...
View ArticleUser Story Vocabulary: Problem, Solution, or Widget?
The vocabulary of your user stories frames the domain of discourse: what are your stories about? It’s helpful to think of “the headline” and “the rest”. “The headline” is what you’d write on an index...
View ArticleLimits of Refactoring: What IS Behavior?
Martin Fowler writes, “Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet it improves its internal structure.”...
View Article