Finding the difficult path to least resistance


By Chris Douce

One of the programming languages and systems that I have been threatening (and hoping) to use in anger for the last couple of years is PHP. I have heard a lot about its flexibility, expressiveness and the fact that it powers an increasing number of substantial projects, such as Wikipedia, content management systems like Drupal and e-learning management systems like Moodle and ATutor.

Two of my programmer senses include: aesthetics (that code should 'look' and 'read' right, describing action as a sensible level of abstraction), and laziness (that certain things should be done with not too much difficulty). These two senses took me on a brief exploration into the area of PHP development frameworks. I was shocked to find that so many PHP related development tools and 'systems' were already in existence.

I had a thought experiment in mind: assuming that I had a new 'green field' development, or had to aggressively maintain an existing PHP-based system, what system or framework could potentially help me to minimise comprehension and maintenance time in the future? Of course, answering this question is closely bound to the nature of my requirements, how well they are defined, how often they are likely to be changed, and the environment in which my new application or system is to be used.

Other issues that spring to mind includes: how popular or how much support does a particular platform offer, how long has this platform been started for, how clear is the corresponding documentations, how often releases are issued... I have many questions!

Choosing a software development framework is an increasingly difficult thing to do unless you are faced with the situation of having to work within a development that must conform to pre-existing choices and guidelines.

One source of information is to attempt to find some on-line discussions that explore differences between different platforms and systems. Although these can be useful, occasionally you may be confronted with subjective opinion or explanations related to very particular problems.

The question of 'how do I make judgements about what may or may not be useful?' is not an easy one to answer. You have to know your problem intimately, be prepared to expend time to assess both the works and opinons of other developers.

Marking can also play an important role in helping a confused developer (like myself) arrive at a decision about what to use and what not to use (or what to evaluate or what not to evaluate).

A recent 'framework marking tool' has been the demonstration of blog applications, i.e. demonstrations of how easy it is to to write 'a blog application in 20 minutes'. Here the psychology of programming becomes intrinsically connected to the psychology of marketing: how best to communiate a complex set of ideals and issues to a wide developer audience.

I still have a long way to go before I have a more complete understanding of the different PHP development frameworks. But at least I at least I know where to start!

I now have to find the time to try to unpick what they can do for me, perhaps who has made use of them before, and explore what problems may lay in store for me in the future should I choose one over the other. Perhaps I should write a blog entry about writing a blog app!

Wish me luck!