5th August 2008
Spring is an amazing framework in Java. I've avoided using it for a while but finally decided to take the plunge with the youreporttv.com project. It has proved that it is a very flexible framework, allowing me and other programmers to work on the site and add functionality quickly and easily. Even better the code is readable and works.
The learning curve was really steep and the setup pain was really huge (Toplink/MySQL really did not want to know about Spring). The fact that Intellij (my Java IDE of choice - why oh why doesn't it also support PHP?) has an intuitive interface for handling Spring bean configuration was a nice bonus.
I've really noticed that with PHP projects, the pressure to deliver leads to code disentegration. I've worked on projects where the code has almost completely disentegrated as more functionality is added. One long running site has 5 different code libraries and spans code from PHP 3 to 5. I dread getting calls from the site owner as he always sounds on the edge of a nervous breakdown.
After a couple days working through the site code I feel the same. He doesn't have a budget for re-development and so the site creaks along from fix to fix. Someone tried to set up Smarty for the frontend so that at least he could redesign the site. That project was abandoned half complete. There are no unit tests (apart from the ones I've written), the test set up is byzantine in complexity (it took me around 10 hours just to get the site working on my test machine) and doesn't really work anyway.
Every programmer who has worked on the site has been competant, able and skilled. The problem is that none of us has set up a framework which is then followed by the others.
From now on it's frameworks all the way for me.