March 15, 2015

How to improve PHP programming skills

php skill

“How do I improve my PHP skills?” is a recurring question on various boards and chats. It’s often asked by newbies but even experienced developers ask themselves the same thing. After all trying to be better is in the human nature. This is a deep question and when you think about it there isn’t a straight forward reply. Nevertheless I will try to give a comprehensive answer which hopefully is going to be useful not only to the beginners but also to the people with some commercial experience.

Matthew Syed in his book “Bounce” tells us that to reach an elite level in any discipline one has to practice for 10,000 hours (which is roughly 10 years). I don’t think that mastering PHP requires 10 years but practicing is essential. Obviously practice must be purposeful, otherwise it is useless.

The last sentence of the above paragraph is the key to sucess. It’s not only about what you have to do but also how are you doing it.

Make sure you’ve chosen the most effective way of learning. It will depend on your actual knowledge. Beginners might prefer direct interaction with people or follow video tutorials while experience developer could chose blogs, books or conferences.

Once you learn something new – practice it. It might require creating a proof of concept, a pet project or changing your habits. Stay curious and open minded. Don’t be afraid of breaking things. If you can check something yourself do it.

Although context of this post is PHP the question doesn’t have much to do with this particular language. Improving PHP skills means improving your universal programming skills. That can be broken down into 3 areas:

  • engineering (coding standards, design patterns, unit testing, algorithms etc…)
  • managing (application life cycle, version control, agile etc…)
  • environment (databases, operating system, networks, protocols etc…)

Each person needs a different mixtures of the above skills – depends on what’s their ultimate goal. There are various senior positions for a developer but generally speaking all of them are either technical (head of development, senior architect etc) or commercial (development manager, CTO etc). The senior roles can be paid equally well so it’s a matter of choosing between science and business.

Ok, after this somewhat long introduction it’s the time to answer the question. To improve you PHP (or generally speaking web development) skills pick a point from the below list and try to learn as much as you can about it. You don’t have to follow the proposed order but ultimately you want to know everything from this list.

PHP programming

Font-end basics

  • HTML
  • CSS

Object oriented programming in PHP

Database basics

  • SQL basics (select, insert, update, delete)


  • JavaScript
  • jQuery
  • Responsive web design



  • Database design
  • Indexing
  • Maintenance (manage users, backups)
  • SQL optimisation

Software design

Web application security

  • MySQL injections
  • Cross site scripting

Code managment


  • Command line
  • SSH
  • Installation and configuration of LAMP environment
  • Installing PHP extensions

Apache web server

  • Virtual Hosts
  • MOD_Rewrite

Alternative storage

  • Caching: Memcached or Redis
  • NoSQL: MongoDB or CouchDB or Cassandra
  • Search engine: SOLR or ElasticSearch


  • OSI Model
  • TCP/IP protocol
  • HTTP protocol
  • Working with sniffers (tcpdump or wireshark)
  • CURL

Leading development

I would like this list to be as useful as possible so I will be extending it with the time. If you feel I missed something or you would like to recommend a good tutorial please let me know.

Lukasz Kujawa posted on SystemsArchitect