Treat code as disposable

Loading image...The Kiro ghost tossing a window of code marked with a code symbol into a trash can.

Code is cheap now. Continuously evaluate whether what you’re building is worth shipping at all, and worth the operations and maintenance that follow. You can afford to prototype something in a day and walk away, or get close to production-ready in two weeks and start over when you realize it’s not the right product.

In the past, throwing away code was hard for two reasons: it felt personal because you spent months writing it, and starting over meant months more work. Both of those reasons are gone now. The important thing is to ship the right thing, not to nurse your first draft into production or avoid a re-architecture because of sunk cost.

Throw away code that isn’t serving you. The agent can build the next version before the end of the day.

Your tests at the boundaries are the exception. Unit tests get thrown away with the code, but the ones that make it safe to start over remain: end-to-end integration tests for behavior, property-based tests for invariants, and load tests for performance and concurrency at scale. Together they are the contract any rewrite has to satisfy.