There is a lot of skills a PHP developer should have. Here is my list.
Skills a PHP Programmer Should Have. A PHP developer needs to have a wide range of skills. This includes HTML, Cascading Style Sheets, JavaScript, PHP, MySql, and Linux. Along with this he or she should possess a strong understanding of security, good communication skills and, don’t forget decent project management skills.
HTML
HTML is the backbone or the bone structure of web pages. This is the foundation of all the skills a PHP programmer should possess.
Cascading Style Sheets (CSS)
Gives a web page and to a greater extent the entire website it looks and feel. This is the design layer.
JavaScript
JavaScript is a must-have skill for every PHP programmer. JavaScript runs in the browser and gives the programmer the ability to make a website interactive.
AJAX
Asynchronous JavaScript and XML (AJAX) is how JavaScript is applied to make the website interactive. When I think of AJAX I think of the ability to talk with PHP to send and receive data from the server to create fully functional web applications.
Some JavaScript Library Such as jQuery or Angular JS
JavaScript is very quirky, mainly due to the different implementations by the different web browser engines. The different implementations can drive a developer crazy. Luckily the community provides libraries such as jQuery that encapsulate or make these differences transparent to the programmer.
The PHP Programming Language
A PHP programmer must know most of the following. There is a lot to know.
- Understand that the PHP Ecosystem consists of the following:
- PHP runs on a web server that more than likely is a Linux web server.
- PHP is Open Source and is native to Linux.
- PHP works with a database server, more than likely MySql.
- PHP can do a lot, such as server automation, FTP, work with files, interact with other servers, send emails and a lot more.
- The Basic Skills a PHP Programmer Should Have
- How to create a basic PHP script, complete with an opening tag that tells the server the file is a PHP program or script.
- How to open a database connection and how to interact with the database so that data can be Created, Read, Updated, and Deleted.
- How to include other PHP programs.
- Control structures such as if statements and loops.
- Working knowledge of variables, strings, constants, arrays, user-defined functions, variable scope, mail, cookies, sessions, commenting, and error handling.
- How to embed PHP in HTML.
- NameSpace – is a way of structuring “blocks” of code so that naming conventions do not become a problem.
- Dependency Injection – DI is a design pattern that allows for including other code within the current code set or object, making the injected code available to the calling object.
- GIT is for revision control. This is a set of commands that aid the developer in managing his / her code and the repository. There are several online repositories such as Github and Bitbucket.
- Composer is a PHP dependency management system that works at the project level. It can be used for installing an application and managing it as well. Think version control.
- AutoLoading takes the place of the programmer having to manually include every needed external program file.
- Design Patterns such as:
- Model View Controller (MVC) is used to separate the data (model), design (view), and the business logic (controller) in a way that makes development and management easier.
- The Singleton pattern restricts the instantiate of an object to a single instance. This means the same object can be reused.
- The Active Record pattern is used to aid the developer in designing database interaction.
- Entity-Attribute-Value is a data model that is used to describe your data tables. This pattern is supposed to make extending your database easier. I have found this pattern to slow the application excessively.
- Object-Oriented Programming (OOP) in PHP is a software design that, like its name implies, is based on objects. PHP allows for OOP and is also procedural.
- Regular Expressions are used to filter data.
- Website security is a skill all developers should possess.
- Every developer must have project management skills at a personal level. Being able to manage (plan and execute) a project is a must.
MySql
MySql is a data engine and is the most popular data engine (MySql and it’s clones) used with PHP. There is a lot to know about MySql. Every PHP programmer needs to have a solid grasp of how to implement and use MySql. That includes the Structured Query Language (SQL), which is how PHP interacts with MySql.
A PHP developer needs to know how to use SQL to manage data as well as how to create databases, tables, and indexes.
Understanding database normalization is a huge plus that will help the developer when creating a new project.
Linux
The amount of Linux skills required will vary. From my experience, a seasoned PHP developer will need to know the following about Linux hosting server management.
- Be able to add and remove users.
- Be able to create and manage virtual host configuration.
- Be able to locate and decipher logs.
- Be able to identify the correct php.ini file that is used on the server.
- Be able to configure PHP via the php.ini file.
- Must understand Mod_Rewrite, why it is used, and how to implement it.
- Be able to install and manage phpMyAdmin.
- Knowledge of, and ability to, manage the .htaccess file.
A PHP programmer is not required to be a full-blown Linux systems administrator. The developer will need at least the listed skills though.
Troubleshooting
- How to turn on or off error reporting in PHP.
- Location of server logs and which log to look in for what.
- Some full-stack troubleshooting skills (HTML / JavaScript / PHP / MySql / Linux / Networking).
Code Editors
There are a lot of code editors. Every developer has their preference. Some editors are free and some come with a licensing fee. Here is just a couple:
PHPStorm – Made by Jet Brains, PHPStorm is a lightweight smart PHP Integrated Development Environment (IDE) that costs $199.00 for the first year and $159 a year thereafter. I would recommend you get your PHP feet wet before deciding to pay for an editor.
Visual Studio Code – The source code editor Visual Studio Code is developed by Microsoft. It runs on Windows, Linux, and Mac. It is free and relatively easy to learn. This is where I recommend you start.
Atom – While free, Atom comes with a little bit of a learning curve. I would not recommend Atom for the beginner PHP programmer. Your mileage may vary.
Development and Production Hosting Environments
Development Server – This is where you will do all your development. This can be as simple as a localhost PHP development environment.
Testing Server – After you have done your development you can use a testing server for working with the stakeholders.
Production Server – This is the server where your final product will do its magic. A production server is a public-facing server. Only fully tested code should make it onto the production server.
Domain Name System (DNS)
Developers are not system administrators and therefore do not need to know DNS intimately. Eventually, every developer needs to have a working knowledge of DNS.
Ability to Set and Meet Deadlines
Setting deadlines is based on the ability to estimate how long a task or project can take. Estimating how long a task or project can take, effects a developer’s ability to set deadlines and therefor will also effect meeting that deadline.
This is a potential problem area. It is very difficult to estimate how long a task or project can take. It may take years to get good at determining how long a task or project may take.
Project Management
This is a skill that will take a while to develop. As mentioned above, estimating how long a task or project will take is difficult. That is not the only skill required for project management. Project management entails managing the entire project from developing a quote, communicating all concerned at the appropriate time, and pulling together resources as needed to complete the project.
Soft Skills
Soft skills are big in today’s market place. This list should get you started:
Communications – This is my pet peeve. I say communicate soon and often. As a developer, it is easy to recluse and work a project for a while. I have found the best approach is to get the stakeholders involved as early and as often to ensure a project stays on track.
How to Work as Part of a Team – It is tough to be a developer working in the cube farm. It requires the ability to play well with others, be helpful, and avoid office politics. It is equally important to pull your weight.
Ability to Know What is Changing – This one is difficult. How do you keep up with changes? You can become active in professional organizations. Another couple of things you can do is listen to your peers and read the updates on the technologies you are working on.
Know What You Don’t Know – It is extremely difficult to know what you don’t know. This may require a bit of humility. There are a few sources, such as, your coworkers, journals, and professional organization to name a few places where you can become aware of the things that you unaware of.
Empathy – This is big. I’ve worked in the cube farm where other developers were not very understanding or empathetic. Everyone grows and learns at a different rate. Each person has their strengths and weaknesses. We should show empathy towards others as we would expect them to show towards us.
Patience – Sometimes things take a while. When working in a team environment it is wise to set back and let things work their way out. That does not mean to not be involved. On the contrary, we should be involved while also being patient.
Be Open Minded – Everyone has an idea. Some are better than others. We should solicit input from others and listen to others. This can be very helpful.
Problem Solving Skills – Every developer needs to be a problem solver. Most often some level of creativity is required when solving problems.
Accountability – Accepting responsibility is very important and often can become a teachable moment. Also, it will earn you a lot of respect.
Time Management – Don’t let yourself become distracted. The modern-day comes with a ton of distractions. Keep social media, games, politics, news, etc for outside of work.
Strong Work Ethic – We have all gone to work and got sidetracked or distracted and neglected our assignments. This is something we should avoid. It is always good to show up early, stay a bit late, take only the allotted breaks while staying focused on our assignments.
Additional Skills Required if You Specialize
You will need to have a working knowledge of the ecosystem you plan to specialize in as well as strong PHP programming skills. Each of the following comes with a learning curve.
WordPress – WordPress is very popular, easy to implement, and use. As a developer, you will need to know how to create function files and plugins. The WordPress ecosystem is vast and somewhat complex.
Drupal – As an enterprise application it is not just a CMS. Drupal can be used to create almost any type of web application. Drupal comes with a steep learning curve.
Joomla – Joomla is a CMS that is not widely used, however it does have some market share. You can plan on a learning curve if you are interested in becoming a Joomla extension developer.
WooCommerce – It is being reported that the WooCommerce market share is expanding at a rate greater than other shopping carts. WooCommerce is a WordPress plugin. If you are familiar with the WordPress Plugin ecosystem, you are well on your way to becoming a WooCommerce developer.
Magento – I spent a couple of years working with Magento. Magento has an extreme learning curve. I would not recommend Magento unless that is what you are assigned to do. Magento requires a team to make it sing. It is not suited to the one-man-band. If you have your heart set on eCommerce, I would recommend taking a look at WordPress / WooCommerce. The CEO of a Magento agency told me to learn Magento takes about 500 hours of classroom and self-directed training plus about 500 hours of hands-on covering 6 months. Magento is not for the faint of heart.
PHP Frameworks – There are a lot of Open Source PHP Frameworks that are available. My favorite is CodeIgniter. It is well documented and is easy to learn. Worth a look. If you are looking for something a little bit more hardcore look at Laravel. Laravel is the most popular PHP framework at the moment.
The Skills a Freelance PHP Developer Should Have
As a freelancer, you might, and probably will, be working in a vacuum. You will do everything. You will snag projects, do quotes, manage projects, and empty the garbage, all from the comfort of your home office. I’ve listed out a few skills you might consider.
Communication Skills – Again my pet peeve. Your communication skills will need to be of the highest quality. This is a must-have skill. As a freelancer, you will need to interface with other business professionals. They are evaluating you every step of the way. This consists of and is not limited to emails, phone calls, quotes, and articles you have written.
Financial Management – You will need to account for all the money you earn. There will be income, expenses, bank fees, and other expenses. Your bookkeeping needs to be top quality. Don’t forget you will need to report all of this on your taxes at the end of the year. The IRS is watching and will expect your accounting and reporting is in order.
Time Management – As a freelance developer, you are solely responsible for how you utilize your time. If like me, you work from home, there is no one watching. It is easy to get sidetracked or mis-prioritize your time. Time is finite so manage it well.
Self Motivated – You will need to motivate yourself. This is a must-have skill. If you lack it you might want to look for a cube farm and a boss.
Marketing – You will need a marketing plan. What are you selling and to whom? You need to know who your competition is and how you differentiate yourself in the marketplace. Do your research before you jump feet first into consulting.
Sales – Noting happens in business until a sale is made. Unless you are a natural salesperson, you might want to take a course or two to learn a bit about sales before you go out on your own.
In Closing
As you can see there is a lot to know to become a PHP programmer. And if you want to become a freelance PHP developer there is even more to know.
I hope this information is helpful. I wish you the best on your journey.