| My most productive time working on DB applications was when I worked with a code generator. You laid out the entry screens, specified the tables and columns, fired off the generator and magic happens. You could slam out a basic maintenance CRUD screen, with search, foreign key popups in an hour! But here’s the meat of if. If you ever needed to go back and update that program, you could do it in minutes. Add some validation logic? Mechanically trivial. Say a column was added to the table and you just wanted to populate but not even show it on the screen. 5 minutes. If you wanted to add it to the screen the hard part was deciding where to put it, making room for it, putting it in the right focus order. But coding it? Once it was part of the screen the rest came for free. See the trick was that unlike pretty much every other code generator I’ve seen (which I think are better termed wizards), this code generator was not a one shot deal. Your code was in a separate file and the generator merged your changes with the generated code to create the final result. So for simple changes, your code file was quite small as the generator built up all the boiler plate around it. A very (very) crude example is imagine using a typical one shot generator, making changes to the result, capturing those as a diff patch file, and in the future you did all your work in the patch file, applying it any time you needed to rerun the code generator. That won’t work in practice, but when the patch files uses more semantic indicators, it does work. It worked really well. This makes the code generator part and parcel to the workflow, and you get to leverage it again and again. In many of these systems, and especially modern frameworks, they have a happy path that can do 80+% of the common task, but more often than not you hit that 81% mark and you have to toss the baby out with the bath water. Not only is the tooling not able to take you where you want to go, it can’t even take you partway and you’re on your own and your stuck with 100% of the work instead of the extra 20%. I never really encountered that using this toolset. I had few examples where you should not rerun the generator any more, but it was really rare. |