Several years ago, every website I built was built in symfony. This was back in the symfony 1.0 and 1.5 days. I loved symfony. After building sites in homegrown PHP, trying out Joomla! and Drupal, symfony was a breath of fresh air and allowed me to build sites VERY quickly.
There was only one small problem. Symfony was changing quickly and as a freelance web developer, I didn’t have time to keep up with all the changes AND keep my clients happy. My clients wanted everything done yesterday and didn’t care what it was built with as long as it worked.
Every time I turned around they were selling another book about the newest release of symfony and I was constantly behind the learning curve. I just couldn’t keep up AND do my client work too.
I decided to take what I learned from symfony and build my own MVC framework for my clients. That worked really well for a while. I knew the code inside and out because I had built it. My web development was very efficient and I could keep my customers happy by developing their sites faster.
Before long, every where I turned all I saw was WordPress. I was losing new business because I didn’t know WordPress. WordPress is what everyone was asking for. I couldn’t understand how a blog framework could be used for so many different things.
I decided that if I couldn’t beat them, then I should join them. So, I dove in and learned WordPress development.
I was impressed! WordPress had really grown up since I had first used it as a stand alone blog back in 2003. It had lots of great potential and I was soon using it for everything. After all, it was just PHP code when you drilled it down to the core. I decided that since it was PHP code and a MySQL database, then it could be used for anything needed on a website.
As I’ve learned more and more about WordPress, I’ve fallen deeper and deeper in love. It really can be used for most any website or web application out there. If you don’t believe me, then look at the thousands of plugins that exist for WordPress. You can do just about anything.
Over the last couple of years, my business has changed. I’ve decided that I don’t want to build websites anymore. I want to build web applications. I’ve teamed up with designers who can focus on the front-end design to build the website while I focus on the PHP/MySQL backend. I have been building the plugins and the custom code to make the applications function correctly.
I’m really enjoying this work, but the last several weeks I’ve become really frustrated. Not necessarily with WordPress, but with the code I’ve been trying to write to force everything into the WordPress framework. Yes, it’s quicker for me to write code for WordPress since that’s the framework I’m most familiar with now. But, I’m realizing that I shouldn’t be using it for everything.
WordPress was built to be a blog and then it was extended to be a content management system for writers and publishers. It became an easy framework for designers to build beautiful websites that allowed their clients to easily change or create text, images, and other media on their own websites. It is a software that most anyone can learn to use quickly without any coding skills.
Web applications need their own database structure and their own business logic. Yes, you can take almost any idea and put it in the WordPress structure. Or you can take an application and build it on top of WordPress using the same resources, same functions, practically the same everything. But, at some point, you either have to bend it so much to fit into WordPress’s post structure that it breaks OR you have to write separate code that just shares the same database. This kind of code is not really using the WordPress best practices, it’s just using a few of the WordPress best functions.
My realization came when I was trying to build a financial management program for myself. I wanted a system that would keep up with my income and expenses for taxes. I use a bucket system of sorts similar to an envelope system, but more flexible for those of us without a steady, fixed income. Since I know WordPress so well, I thought I could just whip one out on WordPress quickly and start using it.
And, I could. But, it wouldn’t be using WordPress’s best practices. Because as I started trying to use the best practices, my application just wouldn’t fit well. I could force it to work, but it wouldn’t be pretty. And as soon as WordPress had an update to that part of their core, my app would be screwed. This app just doesn’t lend itself well to WordPress – at least not the way I want to write it and make it work.
I first thought I would just write some straight PHP scripts to access my information in a MySQL database. The tool is just for me anyway. But, when it comes to forms, security, database access, etc. I would have to reinvent the wheel. That’s just not something I look forward to doing, nor do I have time to do that. So, I started looking at other frameworks.
After some research and consideration, I’ve landed, once again, on symfony. I feel that it’s the most solid, the most complete, the most secure, and I love the community. I know there will be a learning curve as there would be with any new skill, but I’m looking forward to the challenge.
I’m hoping there are others out there who will join me in this journey to tackle and learn symfony. I’m starting over, starting fresh and looking at symfony 2 with new eyes. I’m sure I’ll fall in love all over again.