• It depends on the turn around time, but I have used all of the methods outlined. One not mentioned that I have also used is to have a couple different people each build a quick prototype after brainstorming. By comparing the two solutions you usually end up with a pretty solid approach to follow.

    I do think it is important to give yourself time to think about it. When I worked on a billing system I would almost always give a 40 hour estimate for many of the enhancements for new rate structures and calculation changes. 3 days to brainstorm and think about it, determine risk assessment and potential impacts to other areas, and then 2 days to generate test data, code the solution, and test everything. 

    After spending time thinking about the solution the act of writing the code was usually incredibly fast and even unanticipated problems seemed relatively easy to work through.