Requirement Gathering

Why is it so hard to find out exactly what is needed when designing changes to a system? When adding functionality to databases I always like to dive in and start adding extra columns and new tables. But at some point you need to find out what is needed. The process of gathering requirements that I have followed goes...