The 3 learning chambers in PHP
Becoming a great programmer is never an easy task, even in easy-to-access programming languages like PHP. Some time ago, I wrote 8 Tips To Become A Great PHP Programmer In A Week which caused a lot of debates. Many people said you need more time, at least ten years according to Peter Norvig -Director of research at Google. When I look at myself and most of my mates, I agree with that research. Mastery is not a daily task.
But my point was then to show how one could adopt the right attitude which will lead him to start learning seriously. It was more about habit than, coding skills.
When it comes to mastery, behold, few have mastered PHP. This is not only in PHP but in most programming languages. The issue with the PHP community is that people easily think they know enough. And they can start qualifying themselves with all sorts of titles: Expert PHP, Expert Laravel, Expert PHP/MySQL, Etc. I am not against that, because most of the time we all understand, it's done for self-marketing purposes. But, I am sure this happens often in the PHP community simply because PHP is easy to learn and get started with. But behind that simplicity is hidden a whole net of traps and confusion which can easily take people to the unknown land for more or less time.
I was a victim of such traps for very long. I understood that when once I was talking to a young boy who was giving me some tips. I asked him then, for how long he had been learning PHP, and he said three years. Three years while I have been into it for more than six years. And this boy was very far ahead of me, or at least he was doing great. I had the experience but he had the talent and much understanding of PHP.
The biggest trap of all is when most people who step into PHP think PHP is only used to create websites. So, when they start learning it and get to a level where they can create simple websites, they start to believe that's it, I am in. I can do it now. Unfortunately, this is the first chamber of PHP. If you don't pay attention you will remain in it for a very long time thinking you are good enough. But when you start to ask yourself when a developer can call himself a good developer, then you are about to reach the gates of this first chamber.
Recently I started to ask myself some questions, mainly:
- How good I am, compared to many other developers even though there is no precise way to check that.
- Is there a type of website I can't develop?
- Can't I use PHP to create another type of application, like a desktop application?
- People who create frameworks like Slim, Laravel, Symfony how do they do that. Is it the same level I have they use to create such things?
But, aside from these questions, there is one that's most important to me. A question I kept on asking myself and seemed not to get a simple and concise answer from people and most resources online:
What's PHP?
I needed to know what makes PHP is from the ground up. I want to dig into it so that I can allow myself anything. This question led me very far. I understood that it's now I am going to start learning PHP. I also understood that there are three main chambers I have to go through:
Chamber 1: The Alifbets
This is the first chamber I was talking about earlier. Here is where many people in the community are. This group has the majority of people in the community. At this level, you can see the starters, those who are used to PHP, consultants, speakers, fans, etc. Most people here are under the illusion that they are good enough. We talk more than we can do. When we answer to a question in a forum, we never answer with a code snippet. We explain how the fellow should do.
We use to fall in love with every single person who creates something cool. We follow them and we take them as spiritual mentors. We love them to the extent that we always try to create(re-invent) what they've done. I want to create a website like Facebook. I want to create a search engine that can beat Google, etc. Hardly we have an original idea. This doesn't mean we can't, but the lack of skills makes us believe it's not possible.
Another characteristic of people in this category is that most come in to make money fast. Learning and mastering are not really a big deal to them. They just need some small knowledge, something good enough to help them create index.php, then use an HTML template and sell it to make some living. This type of people become quickly bored and quit coding, or they start to feel like the stuff is hard enough and it's impossible for them to go further. Isn't it normal?
Now, in terms of skills this category is full of a lot of confusion. People don't usually see where is the head, the body and the tail of the giant elePHPant. We learn anything new, anything we're asked to, or something we haven't been able to grasp yet. We just learn anything we see. We don't make the difference between codes. We learn a lot of outdated things. We're always looking for "the best tutorial on...".We check too much how good we are compared to other friends.
The following are skills we have in this category:
- We learn the basics of PHP syntax
- We learn how the whole web stuff works
- We discover the real meaning of a website and why it needs to be created
- We also go into deep interaction with HTML
- We still use
mysql_*
extension - We don't see the difference between PHP versions or how can that serve us
- We learn how to interact with database
- We start to create basic user experience scenarios
- We learn to make the difference between front-end and back-end
- We make a lot of money by selling copied templates and sample websites
- Clients are really troublesome(normal, project is too unstable)
- We don't see creating a website as a big project. Creating a website is easy.
- We make use of third parties a lot. 99% of our projects are made of third-party codes.
- etc.
I personally see this chamber like a secondary school premises. It's full of all types of people and situations. But at the same time, that's where we really learn how to interact with our society. We discover who we need to be. Who to follow or not. We learn how to be strong. Also, many of them don't come out of it easily or never come out.
Chamber 2: Wisdom coders
The day you start to ask yourself these few questions:
- Am I good enough?
- Where can you improve yourself?
- Who created PHP, and what does that mean?
- What is clean code?
- Am I using the best practice to complete my tasks?
- This thing I am doing, how are others doing it?
- Instead of a third-party source, can I create my own code for this task
- How is this framework made, oh cool. What of the other one...?
- What are other applications of PHP?
- Security is that a serious problem on websites?
- What's a code design pattern, how many of them, how do I use them, and why is it important?
- Why is project management important for me?
- ...
Then know that your level has changed.
At this level, the learner's focus is mainly on code quality and self-challenges. People here don't just accept website jobs anyhow. A project has to be constructive, not necessarily lucrative.
People here create useful applications to help others. They share a lot of what they know. They contribute to others' codes because they need to know the whole atmosphere. Their learning curve is sharp: PHP The right way is their entry manual, they tend to follow the community laws by using PHP-FIG, they hardly use PHP official manual because they know much in it already, rather they read RFCs because they get to know about new features there. When they blog, they rarely post, but when they do you really understand how hard they work.
When you reach this level, you are shy of projects you developed some years back. You start to ask yourself why you did it that way.
Chamber 3: Prophetic coders
People in this chamber are the elites of the community. They decide on the future of the language. Their contribution is usually to improve the language. They are the ones behind the language's documentation, community standards, security fixes, and rules, they read the RFCs and implement them for us.
At this point, it's almost impossible to see a free resource to learn from. This is the level where you should learn by yourself, and discover things by yourself.
Here people don't learn how to code. They research on how to improve the language itself. They code for good. The code to keep the train moving. They've worked on various projects and they are the owners of big open source works.
Bottom line
I want you to see these as steps you need to follow if you want to become good with PHP or any other programming language. This is not to say I am a guru or I know more than anyone. No. This is how I do things. I belong to the first chamber like most people in the community. Ahahah. But I dream of being part of those Jedi in the third chamber one day. That's why I will always be learning and sharing my discoveries with you.
One thing I would like to add is that you should always be humble in your learning process. Don't hide your weaknesses and never be shy of saying "I don't know, help me know". Help people who need your help, because whether you do it or not, these people will keep on learning. Where you think you are good, they may come and pass you like what you did with people before you. And that time you may become useless.
Coding is fun and a great brain exercise. Learn it with more passion and you will see how easy it could be.
Thanks for reading this little note. If you like it please share it with friends, it helps me a lot.
Cover photo credit: DSC_8497 via photopin (license)