Programmers are lazy. Face it, if we wanted to do ‘real’ work, we’d be out in the hot sun, breaking rocks with pickaxes. Or maybe in front of a blackboard, using chalk to solve equations. Oh, the horror! The humanity!
We want an easier life, and we’re willing to work for it. In fact, that’s the entire point of our lives — to make not just our lives, but everyone’s lives, a little bit easier. A little bit better. Reduce the amount of paperwork… even if it’s just by moving it to the computer instead.
As such, ‘magic’ in code is good, great, grand. If I don’t have to manually explain that the url foo.com/bar/12/ needs to find the bar object with id of 12, that’s great.
My complaint with the programming language I’m taking a class in — lets call it, oh, ‘Emerald’ — isn’t that it provides me with a lot of magic. My complaint with ‘Emerald’ is that none of the introductory documentation explains the magic. It just says do XYZ and magic happens.
Magic is great. But I need to understand enough of what is going on to actually learn from it! I don’t need to learn ‘type XYZ to get Z to happen'; I need to learn enough to get my own event, Z2, to happen. More than that, by understanding what is going on, I might actually remember it when I need to do it myself.
Why does autocomplete exist? So that we can focus on learning concepts… not memorizing the constants that support them.