Even if you have covered all possible edge-cases by logically deductive and sound design that additionally is secured by extensive unit testing, your first real-world user will find one edge-case that has not been covered and breaks everything upon their first exposure to your application.