Get the latest tech news
Requirements change until they don't
Requirements, phase changes, and formal methods.
It doesn't make sense to spend a lot of time proving a design works, and then deliver the product and find out it's not at all what the client needs. It should work when your customers run into new edge cases, or migrate all their computers to the next OS version, or expand into a market with shoddy internet. Or a bunch of similar features are independently hardcoded until the system becomes too messy to understand, you remodel the internals into something unified and extendable.
Or read this on Hacker News