Bruno Skvorc wrote an excellent post on 4 levels of PHP skill – beginner, intermediate, professional and elite – how he differentiates between them, and what you need to do to move up the ladder. I don’t fully agree with everything he says, but I do think about it plenty recently, as I am being asked the same questions:
How does one get from beginner to pro and beyond? If one doesn’t know anything beyond the basics, how can they improve their skill enough to leave the bad practices behind and start practicing the more advanced approaches? This is a question I get asked a lot by beginners. In order to become a professional, one must first become intermediate.
What follows is a list of what one should go through on the path to PHP fluency.
Indeed, everyone who’s done a web form or interacted with a database starts as a beginner. Professionals are the ones who are pretty comfortable with the language, frameworks, tools, libraries, and can undertake a project all by themselves. Elite are the chosen few – usually book authors and conference speakers. But who are the intermediate ones and how do move from beginner to professional – these are not as obvious to answer as they might seem.
Overall, I support Bruno’s way of thinking, which, in short, is: practice makes perfect. Work, work, work, learn, learn, learn, read, read, read, and you’ll get it. Learn from the best, participate in Open Source projects, and try things out. There is no shortcut really.
I do have a few disagreements too. Some are larger than the others. The main ones are namely – PHP extensions and the use of IDE. IDE is not a silver bullet – it’s a tool. And it’s a kind of tool that works well for some people and completely misses the point for the others. I wouldn’t call for or against it, but, instead, I would suggest to try both ways – a full featured IDE for a while, and a simpler text/code editor like Vim for a while too. Pick the one that works, but try to make sure that you can afford it in worst of times, and that it runs on multiple platforms. You never know where you’ll end up working, and a tool that you have muscle memory for beats any other.
As far as extensions go, it depends heavily on the kinds of projects you are working, on the kind of people that you are working with, and on the rest of your environment setup. You might not always have a chance to use PHP extensions (especially in cases where you don’t control the servers on which the project will be running). They are cool things to play with, but you’d have to get special kind of luck to end up with the project that absolutely requires them. Not to mention that you wouldn’t code PHP extensions in PHP (hint: C).
But, as I said, overall, there is some solid advice and it makes a lot of sense.