views:

442

answers:

2

I am a seasoned PHP developer (writing custom apps, templates, CMS, js), but only recently I dived into the world of frameworks like Zend Framework or Cake PHP. The trick is that I am working from home, which means Joomla or Drupal job is easy to find, even if you're a newbie. Which doesn't seem to be the case with ZF, per my initial market research. Everyone seems to want a ZF (or Cake) senior (adding memcached support to app is not that hard, but they want people who really did it on high-load sites).

Basically, I've completed a sample ZF application (login/registration, user/admin screens, ajax validation) to make sure I dig the framework, which I generally do. What would be my next steps?

  • to add more convincing features (ORM, i18n, more ajax) to my first app till it starts looking like a production-ready application - so that I could include it into my resume? But real production state is really time consuming.

  • instead of sample app with lots of features, to some people a simple site with cool design and just a nice Zend reg-form + grid would look like a trust-worthy product.

  • or to forget about telecommuting market, and gain more trust from a company by working shoulder to shoulder with other ZF developers? (could be the solution, but I still want to try telecommuting)

So, do you think there is a telecommuting market for framework newbies (but PHP pros)? Any advice? Thanks!

+14  A: 

I am not sure what part of the world you reside in however I feel I can shed some light on this from a UK contractor’s perspective, having worked both sides, employer and contractor hopefully what I have to say is not just a load of rubbish :)

To me personally PHP has changed over the last few years, somewhere along the line it became professional, provided real object oriented features, and positioned itself as increasingly more viable as a solid commercial development platform. With this professionalism and market viability come standards, patterns and to a certain degree a requirement for RAD (rapid application development), enter the frame work.

If you have a team of developers how do you keep consistent coding standards, pattern adherence and unified testing and development standards. You use a framework, one framework, you make everyone use it. I could argue that certain frameworks are by some companies simply seen as promoting a professional image, ‘this one looks professional let’s make it a standard’.

I don’t agree with this one framework fits all mentality, it’s just a tool for the job, and each has merits and disadvantages, but you have to appreciate that there is a difference between hiring a permanent employee, or a contractor for a fixed number of months.

The permanent employee is going to sit alongside your regular full time developers over multiple projects; your contractor is usually there to fulfil a specific requirement for one project.

This means that contractors usually have to provide a very specific skill set, because it is the exact technology set for the project. So if a project uses Zend framework, for right or wrong reasons, they will request a Zend framework professional.

Permanent staff in MHO need a good aptitude for learning different skill sets, and excellent PHP, MySQL, and JavaScript skills. I am more interested to see an applicant for a permanent position understand how to architect an MVC from scratch, than to see them implement it with a given framework because I don’t know what technology set I will be using on the next project. I want to see that they truly understand PHP, truly understand conventions, and can apply well accepted patterns and methodologies. Anyone who can do that, can learn a framework?

Trouble is the contractor has to hit the ground running, you are expected to fill a gap in the current team and not drop the ball, additionally location is a big factor, big companies in big cities, are easily commutable and if they want a developer with (x,y,z) they can get a developer with (x,y,z), bad location, people not so willing to commute, and you will usually find the employers are a lot more willing to negotiate.

I would go for your third option, start applying for permanent positions using the technologies that will promote you as a freelancer further down the line, consider it to be extended training, you will then after serving time, even as little as a year, with a team actively using the framework be able to say convincingly on your CV that you made this, that, and the other, and this is the framework that you used.

If you want to try the telecommuting, it won’t hurt to try, consider writing a blog of ‘how to’ guides, using Zend. It is a valid way to show that you command the knowledge and then consider being very blunt and honest at interview, say that you are submerging yourself in the framework, and that you keep a blog etc. Passing yourself off as a senior Zend framework specialist is a recipe for disaster because sooner or later it will become apparent that you’re not, unless of course you really are one, and I don’t know :)

Good luck.

Great response, very well thought out and written. I'd upvote 2x if I could. OP would do well to consider this advice.
Travis Leleu
Thanks for your thoughtful response. I reside in Ukraine and my goal is to move away from plain outsourcing tasks like Drupal theme adjustments, your adviced have really helped my to see the right direction.
PHP thinker
+1 excellent answer gavin.
Cal Jacobson
+2  A: 

Gavin has a very good answer. I know of several companies looking for CakePHP developers and they prefer someone with strong general PHP skills because, as Gavin says, a good PHP programmer can pick up the specifics of the framework. I think if you're upfront about your strengths and weaknesses you should be able to find someone willing to try you out.

I find the best way to learn something is to work on a project designed for public consumption, even if it's a toy-like app. If you're looking to master frameworks, there are some common but tricky tasks that you'd be smart to master in your framework of choice, such as pagination and how to use Has And Belongs To Many relationships in the ORM.

pr1001