I got started PHP programming before PHP frameworks were in widespread use. The first article that got me started with PHP programming was from SitePoint. Since then they have made the article into a book series. From there I worked on a few personal projects and ended up landing a few jobs at local web development firms who specialized in using PHP for building websites.
PHP was very new at this point and there wasn’t a lot of talent out there that knew how to best put things together. In other words, I was on my own. When you find yourself in a situation like this, the best thing you can do is learn as you go. If something doesn’t work, try again until you get it figured out. Learn from your mistakes and always look for ways in improving what you do.
Working in a fast paced environment and learning as I went had the advantage of teaching me the work ethic to thrive in a high stress and high turnaround environment. But it also provided a lot of hard lessons in regards to creating everything by hand. Lessons that I will benefit from throughout my career, but also lessons that taught me there is a better way.
That better way is open source. More specifically…Drupal.
Drupal has changed my life. What I wrote custom PHP code to handle a decade ago, Drupal handles about 95% of that work, out of the box. I no longer have to debug issues because I’m using custom code that I didn’t have time to fully test before releasing to the client, because of a tight deadline. Instead I have much more time in focussing on very custom programming work and refining the functionality that I work on, such as creating a custom AJAX interface for the Institute of 21st Century Energy.
And this is awesome! Don’t get me wrong, there is still the normal stress in regards to meeting deadlines and ironing out bugs, but the amount of features that come with Drupal saves a lot of time. But you may ask how is this practical in real world examples? Lets go through a list of functionality that is very common when you need a content management system.
- User login system.
- Ability for the client to update basic page content on a site (such as an about us page).
- Ability for the client to update text content in blocks throughout the site (such as contact info).
- Being able to handle content that is more customized than basic page content (such as a list of locations).
- Being able to define and customize fine grain permissions in the admin.
- Having full control over how url’s look for each page on the site.
This list of features takes a significant amount of time to develop with custom code. In Drupal, you have all of this functionality available out of the box without any programming required. And that is just the tip of the iceberg! You can also easily aggregate lists of different types of data entered into the admin and create customized forms for visitors to fill out….all of which do not require any programming to accomplish. With about 20,000 contributed modules available for Drupal, there are few things you can’t accomplish without finding a module that can handle whatever functionality you need.
With that said, there is a learning curve to becoming comfortable with Drupal. But once you get over this hump, the bright light of Drupal will warm your soul and ease your heart and you will enter the promise land. And it is worth the journey!