It is always good to study the best practices of designing systems and try them in your projects. And it is even better to know about possible pitfalls.
It is signs that something went wrong during the designing process:
- the team asks a lot of questions about the problem statement;
- developers find unrealizable requirements and ask to change them;
- testers find many unreported cases in the testing process;
- a change request for functionality comes from the customer, and you need to add "crutches" to support it.