This page will be an ongoing saga. There is so much that needs to be written. Please check back periodically to check on my progress. If you have any thoughts, please send them to me.
The main thing to remember here is that you need the detail first. I always generate a data extract first with the required data fields for the requester to verify that all the required data elements are present and that the data is correct. It's a lot easier to add data elements or make other corrections at this point rather than when the printed report is complete. Once this phase is complete, in some cases the report is done, otherwise we move on to the next step. This could be adding flags for error conditions, reformatting data as required or adding text to help in error correction based on the error.
Finally we get to the actual report. If it is an extract, your done. If it is a printed report, you need to get to the formatting of the report. It is very helpful at this point to have a mock-up of the report. This way, the requester gets exactly what they want and it takes a minimal number report modifications.
It is extremely important for the developer and the requester to work together. Developing a report is a two-way street. It takes dialog between the two parties to get the job done rapidly and correctly. It is also best, once a request it started, to finish it in a reasonable timeframe. Letting it sit for month between sessions just makes it difficult to get back into the mindset of that particular report.