Developers who believe they can forsee the future are more dangerous than missing business requirements.
The problem with missing business requirements are that developers often are either to focused on writing the code instead of actually understanding the business.
You cannot build something you do not understand.
Understand small and expand your understanding. Code is not the goal, it never is. It's a means to a goal.
Another thing about software is, that a lot of it should never ever be written. It's the last thing you do, is write code for overcoming a challenge, because rarely you really need it.