I have been working with PHP for years and gotten a very good grasp of the language, created many advanced and not-so-advanced systems that are working very well.
The problem I'm running into is that I only learn when I find a need for something that I haven't learned before. This causes me to look up solutions and other code that handles the problem, and so I will learn about a new function or structure that I hadn't seen before. It is in this way that I have learned many of my better techniques (such as studying classes put out by Amazon, Google or other major companies).
The main problem with this is the concept of not being able to learn something if you don't know it exists. For instance, it took me several months of programming to learn about the empty()
function, and I simply would check the string length using strlen()
to check for empty values.
I'm now getting into building bigger and bigger systems, and I've started to read blogs like highscalability.com and been researching MySQL replication and server data for scaling. I know that structure of your code is very important to make full systems work.
After reading a recent blog about reddit's structure, it made me question if there is some standard or "accepted systems" out there.
I have looked into frameworks (I've used Kohana, which I regretted, but decided that PHP frameworks were not for me) and I prefer my own library of functions rather than having a framework.
My current structure is a mix between WordPress, Kohana and my own knowledge.
The ways I can see as being potentially beneficial are:
What would be the best way(s) to "get to the next level" the level of being a very good system developer?
Everyone who wants to be a PHP programmer, always takes only the first word and completely ignores the second.
While "programming" is WAY more important than "PHP", to be a PHP professional, one should be a programmer in the first place.
So, I'd vote for the last one - reading books. Not on PHP, but on the programming in general. Grady Booch's, Martin Fowler's and even the old Donald Knuth's ones.
It would be also be nice to take a look at some other languages, like Java or Python. Not to switch to them, but to learn from them.