🍫 CocoaPatterns — iOS & Mac Development Since 2009 RSS
🍫 CocoaPatterns
Because someone has to write this stuff down
"We ship apps. Sometimes they even work."

Panic-Driven Development: Ship It When the Dread Is High Enough

Why use a sprint cadence when the human adrenal system provides a perfectly good scheduler?

DP
Dana Purcell
@dpurcell_dev · CocoaPatterns

Most development teams use sprint cycles, roadmaps, or quarterly OKRs to pace their work. My team uses panic. It works roughly as well, costs nothing to implement, and requires zero Confluence pages to document the process.

The core insight of Panic-Driven Development is that humans have a built-in urgency mechanism — the fight-or-flight response — that, when properly activated by an imminent demo, angry Slack message, or App Store rejection notice, produces focus levels that two-week sprints can only dream of.

"We've shipped some of our best code at 2am the night before a client demo. We've also shipped some of our worst code at 2am the night before a client demo. PDD does not discriminate."

The PDD Velocity Model

In traditional Agile, velocity is calculated from story points per sprint. In PDD, velocity is a function of Threat Proximity: how close the threatening event is, and how catastrophic its consequences are perceived to be.

📊 PDD Velocity Formula

Velocity = (Consequence Severity × Perceived Inevitability) ÷ Hours Until Reckoning

Maximum productivity is achieved in the final 4–6 hours before a deadline, when everything is high and Hours Until Reckoning approaches a value that produces genuine physical symptoms.

Our Panic Taxonomy

  • Level 1 (Yellow): Ambient dread. You're behind but you could catch up. Lots of coffee and unnecessarily early Slack responses.
  • Level 2 (Orange): Active concern. Demo is tomorrow, feature is 60% done. You're canceling your evening plans.
  • Level 3 (Red): Full panic. Demo is in 3 hours, feature is not working, the client is "bringing the whole board." Peak velocity. Zero tests.
  • Level 4 (Black): Post-panic acceptance. The demo has happened. Everything is calm. You are writing the hotfix in a state of Zen-like resignation.
commit a4f2c91 - "fix the thing"            (Level 3)
commit b8e3d02 - "it works dont touch it"   (Level 3)
commit c1a9f44 - "PLEASE"                   (Level 3, 2:47am)
commit d3b7e55 - "okay it actually works now" (Level 4)
commit e5c2a88 - "cleanup and tests"         (Level 4, after 9hrs sleep)

Level 4 code is, paradoxically, our best code. If we could bottle Level 4 and apply it to Level 2 problems, we'd have a real methodology. Instead we have a blog post.

2 Comments — Powered by Disqus
KO
k_osei_ios · 1 month ago
"PLEASE" at 2:47am is devastatingly accurate as a commit message.
DP
dpurcell_devAuthor · 1 month ago
That commit message is from our actual git log. I've hidden the repo.