Moving From Herding Elephants To Handling Snakes
post

Since the summer, something had been bothering me about PHP. I couldn't put my finger on it but over the holidays I finally figured out what was wrong. After ten years of working with PHP, I'm bored with it. Every professional programming job I've ever had has involved PHP as the main language, with a smattering of things like SQL, Perl, Ruby and Javascript. But it's always PHP at the core.

So what is there left for me to do with PHP? I'm not about to write my own PHP framework as I have one I already like, one that I use for my simulation baseball league's web site. I'm not a C programmer, so diving into the internals of PHP to contribute that way is a no go. No, it's time to put PHP aside (so to speak) and pour my energies into something else.

A while back I tried the Rails thing. I liked it...because it was so different from PHP. Ruby has such elegant syntax, reading like English in many ways. I even got asked to create a training course for Ruby on Rails, but never got far with it (sorry Marco). Once I started poking around more about Rails, I started to see things that made me uneasy about it: issues about performance in high-traffic environments, the attitude of some of the more senior "core" guys in Rails, and the zealotry displayed by users of it.

Slam PHP all you want for it's syntax ($object->chaining->looks->weird()), it's inconsistency in function parameter order, the still-ongoing debate about how to implement namespaces, and the combo of powerful functionality combined with a low barrier of entry (thereby infuriating programming snobs). But it gets shit done, plain and simple. That's how Rasmus Lerdorf started off using PHP, that's how it will always be. Elegance in code and proper programming techniques are the domain of the developer, not the language in my not-so-humble opinion.

Sure, Ruby is nice and Rails has all those cool magic functions but some stuff I read by Zed Shaw (the creator of Mongrel put into words a lot of what I had felt about Rails: just not for me, I guess.

So what's left? Not gonna go the Java route: too much pain and suffering lies down that path. So, I'm left looking at a language that is rock solid, has a great object model, has a good web application framework to help me get up to speed and lots and lots and LOTS of great documentation and tutorials: Python.

I won't be giving up getting PAID to do PHP code any time soon because I have a great job with a great bunch of guys, and I get to work from home. But I just feel it's time to focus my energies on something else. Python is very similar to Ruby, and let's be honest here: I've got enough programming experience that there shouldn't be much of a learning curve for me to figure out Python. Python code just looks nice and clean, less writing to get more done. That's what I'm really looking for these days.

The simball web site continues to grow and get new features, so I will be leveraging CakePHP to the hilt in that respect. It's an exciting time for CakePHP as they are heading towards 1.2 and preparing for 2.0. But I am not sure what my contribution to the project will be any more, which hasn't been much lately but I am interested in helping push the CLI tools forward as not only can they help me, they can help other developers as well. But it is time for a change. Maybe one of these days I find a job programming in Python, or even manage to push Python in through the back door where I currently work. But the time is absolutely right for me to start learning Python and make it a tool I want to use on a regular basis instead of it continually being on my list of "things to do when I feel up to it".

I've got my copy of "Dive Into Python" in PDF, been going through the Python tutorials (wow, the interactive interpreter is great) and getting ready to bust out a Django install. But make no mistake: PHP pays the bills, but it's time to start using other people's tools to get the job done. Time to quit fooling myself that I'm going to make some sort of earth-shattering contribution to PHP, and save my brainpower for learning Python the way I've learned PHP.

Wish me luck!