When I first joined the team that built Django, back in late 2005, they were hard at work doing something they called “Magic Removal.” Apparently, Django’s first few iterations had been way too magical, and it had now been deemed desirable to break down the illusions and make it very obvious how everything was being done.
This seemed absurd to me. In my very limited understanding of Django at the time, I totally agreed—it was magic. It made things that I’d previously never been able to do not only possible, but so easy and—dare I say—fun. I couldn’t understand why anyone could possibly want to remove that magic.
See, I meant “magic” like Steve Jobs means it, or maybe like Arthur C. Clarke meant it. “Magic” is an awesome marketing term. To be able to say something “is magic” or even “feels like magic” is pretty damn powerful. I felt like Django lived up to that bill.
But the developers of Django had an entirely different meaning for “magic.” Despite what Wikipedia has to say about [magic in programming](http://en.wikipedia.org/wiki/Magic_(programming), the Django developers definitely considered it to be a dirty word, with very negative connotations. To them, “magic” was abstraction taken to a ridiculous level, such that it was very difficult to understand why a thing worked like it did—or worked at all. Sure, it works, but I can’t for the life of me figure out why, and that scares me.
This all probably sounds like it’s leading up to something interesting, since, you know, I usually have a lot of interesting things to say, because I’m very smart and I articulate my points so well (also, I’m very attractive). Right?