A must-know for professional PHP developer
Programming requires years of studying and gathering the experience. And in the end it's actually not only about writing pretty code, or having solid knowledge of code syntax. It's about writing secure, stable and well performative applications. Not every programmer - even with 10 years of experience - is necessarily a good programmer. So here is list of what might be expected from a good web developer.
- download sample PHP Mini test (PDF, 50 kB)
- related link How can I test PHP skills in a interview ?
This article applies to web developers, not web designers. Web designer would focus on visual presentation of business logic implemented by a web developer.
Basic abilities
- PEAR CODING STANDARDS
- Must have good command of coding standards.
- PHP IDE WITH DEBUG MODE
- Must know how to set up debugging environment. Industrial applications with hundreds of complex objects cannot be effectively developed and maintained
without possibility to stop execution of the script at any row of the code.
Commands like
echo var_dump()
is not debugging. Unfortunatelly, setting up debugging environment is sometime not a trivial task. Most popular professional IDE might be: - VERSIONING
-
Web developer should:
- be able to work with history of development releases, e.g. prepare update package for version from 100 up to 110 - prepare database migration, SQL differences, sync code, connect via FTP/SFTP to remote server, execute git sync commands, sync directory contents etc.
- be able to compare package differences between the two update packages
Examples of some popular source control management tools (SCM) / versioning tools:
- DATABASE
-
Most popular industrial relational database systems (RDBMS) used today are mySQL/MariaDB, Oracle, MSSQL, PostgreSQL, MongoDB and SQLite. PHP developer must be able to write SQL queries for:
- INSERT, SELECT, UPDATE, DELETE (CRUD operations)
- WHERE conditions with AND, OR
- SELECT .. LIMIT, OFFSET (handle pagination)
- LEFT JOIN, RIGHT JOIN, INNER JOIN
- GROUP BY, HAVING - must ve aware of various results defferences implemented by different vendors (mySQL gives different aggregate results than MSSQL or Oracle)
- CREATE TABLE, ALTER TABLE
Besides the above basics, PHP developer should be able to prepare tables definitions with column types, add indexes on columns, add autoincremental columns, add new column into existing table without destroying existing data.
Few check-up questions:
- What is a foreign key?
- What is the difference between LEFT JOIN, RIGHT JOIN and INNER JOIN?
- MVC BASED PHP FRAMEWORK
-
Development time may be significantly shortened by utilizing pre-programmed functionalities. PHP framework is basically low-level alternative to Microsoft Visual Studio or Delphi. It is not really important which framework is the favourite one, important is that you understand MVC model, singleton, code generation and few other aspects of modern PHP5 based framework. So PHP developer should:
- be familiar with some standard PHP MVC framework, e.g. Yii, Symfony, Laravel, Zend Framework, Cake, Codeigniter, Kohana, Nette etc.
- should be able to write ajax based applications by utilizing such a framework
- should be able to utilize database cross-compatible ORM database layer (either built into framework or standalone, e.g. Propel, Doctrine)
- WEBSERVER SETUP
-
Setting up secure webserver (Apache, nginx, lighttpd, etc.) is one of the most important things at the beginning of any development. Don't blame linux administrators if your application gets hacked :-) PHP developer should:
- be able to write virtual host, manage error handling and setup errors logging. This is tightly related to setting up debugging environment.
- be able to set up correct SEO redirects (302, 303) and URL rewrites
- be able to turn on/off compression filters (gzip, deflate for javascript and css files)
- Other should-know abilities for a PHP developer:
-
- should be able work with standard data structures, such as XML (XML read - write), JSON, serailize, do XSLT transformation. Check up questions:
- What is the difference between XML, XSL, XSLT and XSD?
- Filter out XML element using XPath example ..
- must understand CSS, javascript, XHTML and responsivity. Even backend developer - no excuse!
- frontend developer should be familiar with some CSS framework - e.g. bootstrap.
- should be able work with standard data structures, such as XML (XML read - write), JSON, serailize, do XSLT transformation. Check up questions:
Advanced abilities
Here is list of knowledge of what *Da real PHP Guru* should know:
- VIRTUALIZATION
-
- Developer should be able to create new virtual machine by using any virtualization tool (VMWare Player, VirtualBox, be familiar with Vagrant or Docker)
- Developer should have basic knowledge of most useful shell linux commands - crontab, starting, stopping or restarting service etc.
- WRITING UNIT TESTS
- Automated unit test are somewhat underestimated by companies. Luckilly, most of advanced PHP frameworks already come with built-in support for running unit tests. PHP developer should at least have knowledge about available unit testing tools - Simpletest, PHPUnit or Selenium.
- PHP COMPILATION FROM SOURCES
- May come handy if some specific PHP extension is outdated in RPM repositories and we need latest version. Or due to security fixes. The only way for you is to compile PHP yourself from sources.
If you have read down to here, then you may be good candidate to wear ..