Recently I am involved in developing some small modules for a enterprise class website using CodeIgniter (CI). There was no restriction given on which framework should I use for the development and I chose CI as I learned a bit on it (when I was considering whether to shift my personal development project). Of course there are other reasons why I chose to learn CI, for example the superior documentation and screencasts available.
Somehow the Technical Director prefers CI over Symphony (as my colleague, also a new staff member like me, was working with Symphony at the same time as I was developing my first project) which I don’t have any idea why. Then he made a decision to choose CI as the new framework to be used for future projects, well, at least for the particular project which we are still working on. The reason for the switch from internal framework to another framework like CI is that their internal framework was written for PHP4 and they want to switch to PHP5.
Their internal framework was very well done, at least from what my Technical Director showed. They have their own database abstraction layer, a CRUD application generator, Object-Relational Mapping etc. that really helps building an application fast. By comparing to their framework, I find CI although quite well done as well but it is no way near as good as the internal framework. Then I went looking around to find some plugins for the CI to implement some of the mentioned features above. Then I found Rabbit-Forms for CRUD application generator and form generation, and Ignited Record for proper ActiveRecord support.
However, I found Rabbit-Forms very restrictive and decided to write a simple form generator and CRUD application generator. Although the final product may not be good enough, but I certainly enjoyed and learned a lot through actually developing it.
These few days I am picking up Drupal, a content management system (CMS). Drupal is a very interesting system where one can almost build any website as long as it is community driven with it. However, there are a lot of things to learn to make sure you are not screwing your installation. I am extremely amazed by the way they implement the plugin system. Although it is a procedural system, but as my Technical Director says there are many object oriented concepts being implemented. Besides that, with plugins like CCK one can even do CRUD application with Drupal (although debugging will be extremely painful IMHO). There are a lot of fun stuff in Drupal for example the form generator, the hooking system, access control and of course their nearly perfect documentation (somehow i prefer it than YUI’s documentation).
Besides that, I am also doing some personal reading on Test Driven Development (TDD) and is currently focusing on unit testing PHP scripts with simpletest. Many developers who practices TDD claimed that TDD helps increasing the productivity. However after reading many documents and I am still don’t have the idea how to set up tests. Guess I would have to find out some examples elsewhere.
I only realize that my software design really sucks after getting involved in a real life development project and is currently doing a lot of readings to improve my design skill. So the main impact made to my personal project is that the project is currently on hold indefinitely until I feel that I am ready and want to practice what I have learnt these few weeks.