Baking websites with out a development team.

I have been dipping in and out of using a great open source Rapid Development PHP Framework called cakePHP for the past two years. Developing with this framework has meant I have been able to create functionality in websites a lot quicker and easier than I could ever have done without it.

This was by means my first venture into the world of open source software. As a solo web developer, I have always had to learn how to use the various technologies available, by myself and under my own steam. It was very clear to me from an early stage that if I wanted to learn how to do something, the easiest way would be to look at the approach of other developers.

This started with free scripts I found around the internet which only led to a mess of different scripts which was not maintainable. I then looked for a more complete offering and I came across open source content management systems (CMS) such as Mambo and Joomla, but I always found they were almost too complete. It takes some of the fun out of creating a website, when within just a few clicks hey presto you have a complete website, except for all the features that you really need.

It was clear that I needed something that did a lot of the more complex tasks for me, as trying to code all the different aspects of a website by myself was not feasible and I prefer the freedom and flexibility of working solo. Enter the php framework, for me it works like my own development team. I am able to get on with creating a website, while a huge code base works away behind the scenes.

Before starting the massive learning curve (as is the case with all of these open source projects), I checked out a lot of other php frameworks. I found the feature list of cakePHP to tick all the boxes I was looking for and using the many conventions, the automagic functions mean the development process is shorter and the learning curve not quite so steep.

My new found development process also applies to front end design. Since the concept of AJAX I have liked many of the implementations I have seen on other sites. To put these interface functions into my own websites I first looked at learning javascript, but soon realised that again this was not practical. This time I used the Yahoo User Interface, although you need an understanding of the concepts of javascript, it is a tool that greatly increases the functionality you can provide with relative ease.

It has been a long and sometimes tedious journey to get where I am today, but I feel that it has been well worth the wait.

One thought on “Baking websites with out a development team.

  • May 13, 2010 at 2:23 pm
    Permalink

    Cake is certainly an interesting project. While I don’t use it regularly, I find that every time I come back to it I’m more impressed by it’s flexibility.
    In my opinion, the perfect environment to work in is somewhere in between a CMS and a ground-up design. When you start building large websites for customers, you’ll find that the customer’s would usually like to be able to manage the content themselves… You’re not totally stuck between a rock and a hard place in this situation though, because you can pull-apart the open-source CMS’s and make them into what you want. Take Magento, for example. Magento is an e-commerce CMS built on the Zend PHP framework. It’s very very powerful and it can do pretty much everything you’d want an ecommerce site to do but the customer will often have requirements that are beyond the scope of Magento’s abilities. No problem! You’ve got the Zend framework right there! It’s entirely Model-View-Controller based, so it’s pretty straight forward to find the piece of code you need to modify. Heck, you can even poke and prod the object from outside of Magento and that really does remove the limits.
    BTW, on the front-end side of things, Magento uses jQuery and I honestly don’t know how anybody writes JS without jQuery selectors now. They’re so powerful!

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *