Well it's been nearly three months since I wrote my last post where I proclaimed my new found love for Django. In the process, I seem to have stirred up a bit of controversy through my use of the word "magic". Now, I typically don't pay too close attention to what the "hot button" words are and so I was a little taken aback at just how controversial the term is. Nevertheless, my comments are now out there, floating around the Ether and generating flame wars wherever they are found and that can't be taken back now. So, what follows in the next few paragraphs is an explanation of how I use the term "magic".
Before I give my definition of what "magic" in a technology is, I want to address one sentiment, in particular, that I have seen expressed in several places that does pain me a bit. I have seen many comments around the web suggesting that those who use the term "magic" do so to avoid having to dig deeper and actually learn the technology. Well, I am here to disspell that myth right now. I am, by far, the polar opposite of the person who sticks his head in the sand whenever confronted with a new and challenging technology. I am so much the opposite of this personality type that I would go so far as to say that I fall more firmly into the class of academic than I do engineer---even though my current professional title would suggest otherwise. In earnest, Rails is just another web framework. It's not particularly hard to understand or learn, but it does still take time to learn and use effectively. Now time is quite precious to me, and I just cannot merit spending time on learning a technology that, quite simply, does not fit my pattern of thinking. By the way, that last part of the previous statement is the key to understanding what I mean when I say "magic". When I mention that a particular technology is "magic", I simply mean that things are happening there that I would not expect. That's it, nothing more, nothing less. This characteristic of "magic" as I define it is neither good nor bad, it's just different from what I personally would want in a framework. Considering that the way Rails is designed is so inherently different from the way I would design a framework, it stands to reason that figuring out the internal details of how the framework works to a point where I am comfortable and productive with it will take a longer time for me than for someone else who's thought processes matched those of the framework's designer. So, in the end, that's all there is to the controversy. Rails is a great web framework that, unfortunately, just does not fit my particular mindset and thus causes me a bit of anxiety when it does something that I would not expect it to do. Voila, I give you "magic".
Anyway, I am purposefully keeping this post short. At the end of the day, I am really not that interested in debating the semantics of the term "magic". The reason my first post stirred up so much controversy is because of my naivety of how the word "magic" affects developers. In the future, I promise that I will not use the term "magic" to describe a quality that I find discomfort with in a technology. Instead, I will use the phrase "je ne sais quoi" to describe that certain something that puts a smile on my face when using the opposing technology.
Phew, there now. I know that I feel much better having now spoken my mind on the whole "magic" controversy. In my next post, I plan to talk over my experiences with Django after having now completed two full projects with it in the past three months. Also, I'll try to keep up a more regular schedule, posting either weekly or biweekly as much as possible. So, please come back next week, for the full description of my first project in Django.