bdd


Verification, Verification, Verification

Boris Cherny, the head of Claude Code at Anthropic, said something last week that should sound familiar to anyone who’s read this blog: “The verification is probably the single most important thing that people do not get right.” The skill in working with AI, he argued, is less about prompt engineering and more about handing […]


Learn From the Source

Years ago, listening to Horace Dediu’s podcast, I heard Bob Moesta interviewing Horace about a car he’d recently bought. Bob was walking through the purchase the way he does, when Horace mentioned something about gas mileage. Bob paused the interview. “Did you see what just happened? Horace just tried to tell me he got a […]


From the Scariest Problem to a Row of Simple Changes

Years ago we built a dating app called Zazazu. At its heart was an in-app economy more complicated than anything a dating app had tried before. The original model was simple: a straightforward 1-1 currency per transaction. Then the business evolved, the way businesses do, and the founders needed something entirely different: free-to-play, a multi-tiered […]


If You Can’t Explain It Simply, You Don’t Understand It Well Enough

When I think about what’s served me best across nearly 30 years of building software — the technical skills, the architecture knowledge, the years of shipping products — none of it comes close to this: I learned how to explain things to people. That probably sounds underwhelming. It’s not. The Superpower Nobody Teaches You Earlier […]


Effective Test Automation in iOS Development

Test automation is probably the single most important factor within an agile software project. Providing a customer with small, working increments of a product, delivered frequently, requires the pipeline from feature design to product delivery to operate very fast. The biggest hurdle in delivering a small change quickly is regression testing. The trouble stems from […]


Common Pitfalls of BDD

Introduction So you’ve decided you want to drive development from behaviors, created with a shared understanding in a shared language among the Three Amigos (product owner/designer, developer, and tester). You will, most likely, immediately start seeing some benefits. But you’ll probably also encounter some difficulties. It’s important to understand that these difficulties are common. They […]


The Line Between “What” and “How”

Introduction A pervasive problem in software development is finding the line between what is a sufficiently detailed description of a product requirement and describing the "implementation details" of that requirement. Put simply; it is a problem of finding the line between what and how. A product requirement should contain everything about the "what" (and leave […]


BDD as Evolved TDD

Introduction I see Behavior-Driven Development (BDD) as an evolution of Test-Driven Development (TDD). If we think about what the purpose, and real benefit, of TDD is, it’s almost impossible not to find ourselves talking about BDD, even if we aren’t calling it that. TDD means, literally, tests drive software development. What do we mean by […]