I look at it in terms of tools and results. Each method, drag-and-drop or hand-coding, is just a tool. It's my job to determine per task which tool gives me better results? (Note: desired results per task will vary greatly.)
Sometimes I may want to hand-code because my desired result is that I completely understand and control the code. Or that I have small details that need to calibrated in a precise manner.
Sometimes I may want to use drag-and-drop techniques because my desired result is that I want to produce a large number of fast results.
In practice, I use both. I'll split a task into a series of tasks, and for a particular subtask I'll determine whether hand-coding or drag-and-dropping is more preferable. Then use the best tool for the task. Sometimes hand-coding is picked because I'm already in hand-coding mode. If one particular task requires one particular tool exclusively, there's not much to fret about.
"Surely that means you're not really programming. You're building an application that has no proper code logic, correct?"
As far as DnD not really being programming: I would probably in most cases technically agree with that classification. But in reality, if DnD or hand-coding can produce the same result, the naming doesn't mean anything.
(Also, with DnD you're still building an application that has code logic; it's just that most of the details are being taken care of by a program. In a similar way to how when we write in high level languages, we're still writing for a machine somewhere, but most (or all) of the details of machine code are being taken care of for us.)
Finally, the amount or type of work put into a creation is not an indicator to the quality of the creation. For me personally, hand-coding feels like "real" work or "real" programming because it takes more time, thought, or other resources from me. But at the end of the day, my programming is judged mostly by my programs, not by my processes.