simplify, because I can see why Cal hates Django even if I love it
But there are days…. like right now…. like right this instant…. there are days when instead of doing big things I’m fighting inconsistent name spaces between apps for no reason. We have PEP. But nobody thought to go “ya, let’s just always call this one “title_block” in the base.html template? Or no hook to a global template on a site? Or standard theme definitions. For all the beauty I see in Django somedays I feel like I’m revisiting 2001 with setting up conventions. We don’t have to lock in like Rails, we don’t have to lose flexibility to gain efficiency.
You still can’t easily sequence the loading of installed apps for packages as well as your local apps. (better get ReportLab in the right spot or else!) So you roll your own. Days that I struggle with deployment even though those smarter than me have written scripts to help. New employees just deploy straight to databases on Heroku or use SQLLite locally, never getting the errors in South that a real user would get trying to set up their own server somewhere between the cloud and non-production.
And then there are the days I see 100+ queries go by on the debug toolbar on a page that used to only need 7. And everyone just says “cache” it as if the Calomine lotion will cover up the rash of inefficiency.
Don’t get me wrong, I’d rather walk on broken glass than convert to PHP. (yes let the flame war begin). But …. but …. I’m a big enough kid to find myself laughing out loud at this keynote called “Why I Hate Django” by Cal Henderson.
Oh yes I really do believe the future is Python and Django. I’ve bet the farm on it as they say. And if Facebook has to compile PHP basically into C++ then all of us will face these problems at Scale.
Yet can we all just admit that we can and should improve our conventions, our name spaces, our theme standards, remove the incentive for programmers to keep removing the local_settings.py file from the root of the /conf/ or site folder. Use manage.py runserver or foreman start? That’s kind of a big question if it changes the way you load your environment variables? We are creating a learning curve that will send all but the most stalwart young programmer back to PHP.
I don’t even consider myself a “real” Django programmer yet as I keep having to look up syntax. But having written one web framework that has stood the test of time, and now working with the team who is rewriting it, I see danger in them hills. The danger of not keeping things simple enough.