Years ago my co-worker Maurits introduced me to the term "magic" in programming. He also provided the valuable dichotomy of convention and configuration (or in fact, he'd choose configuration over convention...). I think this distinction could be very helpful in psychological research, figuring out why some people prefer framework X over framework Y. One requires the developer to spell out everything they want in elaborate configuration files, the other relies on convention: placing certain files with certain names and certain methods in certain places will make everything work "magically".
And there we are: magic. Often used in code reviews and discussions: "there's too much magic here". Yesterday the word popped up in a Twitter thread as well:
"symfony has too much magic, to its own detriment..." @bazinder
This was answered with:
"I'd say that everything is magic until you start to understand it :D" @iosifch
It made me wonder, what should we consider to be "magic" in programming? Is magic in code okay, or should it be avoided at all cost?