Instead of spending 4 weeks writing requirements and 1 week implementing them, have you tried spending a day guessing at requirements, half a week writing a prototype, and then asking the customer if it works for them?
Have you ever worked on a tools team where your customers are internal and your developers are also customers and so know the requirements inside-out?