Les, I am confronted on a daily basis with the need to do vast amount of research in order to develop software, I am constantly asked to write code for new devices or to make an application look less boring and none of this stuff is constant or static, new versions of software programming interfaces come out ever other day it's a real PITA

sometimes
I was recently asked to write an application that
1) interfaced to any scanner in the world
2) made the scanner scan individual pages and save to jpeg
3) OCR'ed (Optical Character Recognition) the barcodes embedded in the delivery notes that were being scanned.
4) compressed the results so that we didn't eat vast amounts of disk space on the server
5) integrated with my document management system so we could retrieve the delivery notes as proof of delivery for inclusion with the invoices (as attachments) at the point in time that I generate the Invoice emails on each batch run.