For the past few months, I’ve been looking at the market for PHP roles, and thought I’d offer some thoughts on what I’m interested in. I’m based in the England’s great second city, Birmingham, and am trying to resist the lure of intriguing development roles in London. This post is primarily for recruiters and potential employers, and hopefully will help detect a “good fit” with firms considering my CV.
To set the scene, this is what I am doing at the moment. I’m writing applications using Symfony 1.0, Propel ORM and jQuery, which connect to Oracle 10g, and are served from Windows Server 2003 using Apache 2.2, eAccelerator and fcgid. We get an interesting array of work, split between projects for internal customers and external clients, involving any of: the Jasper Server reporting stack, document retrieval, on-the-fly image generation, SOAP and AJAX. To date, I have:
- Made a maintainability case to move from a spaghetti-like system to symfony and PHP5/OO
- Encouraged a move from a legacy version of SourceSafe to Subversion/TortoiseSVN
- Introduced moderate use of branching for new features, and tagging for releases
- Starting doing system deployments via svn switch
- Lobbied successfully for the introduction of Trac for tickets (no more spreadsheets :)) and TracWiki for documentation
- Lobbied successfully for a move to Linux-based hosts. UAT has moved to RHEL, and live is planned
These are positive changes, which have undoubtedly increased the maturity of our PHP development. But, the remaining items on my ‘lobby list’ are struggling to see the light of day:
- The introduction of unit testing or test-driven development (TDD)
- The use of database migrations
- Frequent releases and one-click builds
- The implementation of a modern development techniques, such as Agile or pair programming
- Reserving time to upgrade systems to new framework versions
- Research into CI and IDE-integrated debugging tools
So, my next employer will either do some of these things already, or be actively considering them. There’ll definitely be technology-aware people in the organisation already — folks who are genuinely excited by it — and they’ll be pushing the boundaries regularly. They might even reserve 10% of office time for R&D, like Google employees do. They insist on well-structured PHP, and always use an auto-completing IDE like Eclipse or NetBeans. The organisation standardises on an MVC framework such as Symfony, Zend or Cake, and framework upgrades are a walk in the park, since the codebase is covered by unit tests. The development team might also use at least one other language; perhaps Java, or the Web 2.0 buzz of Ruby or Python. The team has probably upgraded to Git or Mercurial, or is thinking about it.
I’m drawn also to firms who care about the impact they have on their employees, the local community, and the planet. I want to quit the car habit, which means employers are better if they’re situated near train stations or on bus routes. It’d be lovely if environmental policies are more than greenwash, and the work/life balance policies actually make employees happier. Lots of karma is awarded to firms that do not work in, or with, the defence/military sector (this policy helps me sleep soundly, I think).
So, what do Midlands full-time roles look like? In reverse order, the blockers are:
- I skip over the 70% that are mid-level or below, in skills or salary terms. Most of these will be very small teams on a tight personnel budget, but I guess that a minority are larger firms that are just not taking enterprise development techniques seriously. I estimate that there are a larger number of junior PHP roles than in, say, .net or Java, and those roles will tick few of the above maturity boxes
- I skip maybe another 20% for which a long car commute is unavoidable. I’ve even turned down a formal offer for this reason – two hours in the car per day is not my idea of fun!
- Roles that obviously have a connection with the defence industry are passed over. However, I ask at interview, and have passed on three further firms having a contributory involvement with this sector
Without doubt, the biggest blocker is the availability of enterprise-level development roles outside of London in the first place.This is a knowledge problem more than anything else – most enterprise tools are open source, and so therefore are free to download and use. But there is a correlation (supported by my suspicions, not statistics) between PHP and a low take-up of enterprise techniques. Perhaps it is just that very small firms who do (perfectly respectable) website design/development gravitate towards free web stack software (LAMP) and low-cost hosting (which PHP excels at)?
The other significant factor is location, and available modes of travel. The lack of frequent public transport to non-city locations is frustrating, but then that’s not the fault of the employer, who can’t keep everyone happy regarding their office location! This is what makes London tempting: lots of interesting enterprise coder opportunities, and none of them require a car.