Software engineering has existed as a discipline for over fifty years, and still people continue to fall into all of the classic engineering fallacies. Rewrites fail with high frequency, feature creep smothers nascent projects, and engineering timelines get repeatedly pushed back until they are all but meaningless. None of these statements are surprising, but what's surprising is that great engineers who are very aware of these pitfalls can ensnared by them anyway.
In this talk, we'll go over how we've structured the culture at Stripe to avoid these traps. We're certainly not immune to the classic fallacies, but each time a project goes poorly we adapt our workflow to mitigate the relevant failure mode in the future. We'll describe the principles driving how we approach software projects (and the history of how we discovered them), as well as why it's important to bake these ideas directly into the culture.