13 Skills Every PHP Programmer Must Have
There is a lot to know as a PHP Programmer. This is a list of 13 skills every PHP developer should have.
HTML
HTML stands for Hypertext Markup Language. It is the backbone or skeleton of every website and web application on the Internet.
The current version of HTML is 5. That means there were 4 prior versions.
PHP programmers must know some HTML – enough to be able to modify an existing website or web app and/or add the desired PHP functionality.
A web designer is the one who creates the look and feel and ultimately the layout of a web page/website. A PHP programmer does not necessarily need to be a designer and in all likelihood will not be a designer.
To learn more you may want to visit this reference on mozilla.org.
Cascading Style Sheets (CSS)
CSS is what gives the website its colors, font styles, and arranges the content. CSS is what makes a website mobile responsive. Mobile responsive means the website will be properly displayed on a desktop, tablet, and mobile phone.
Just like HTML, the PHP Programmer does not need to be a CSS expert. A PHP developer does need to have some basic understanding of CSS so he or she can perform their work.
The designer is a CSS expert.
To lean more you may want to visit this reference on W3C.
JavaScript
JavaScript is used for two main reasons. One is to perform client–side (browser) form validation, and two is to add interactivity to a web page.
Depending on whether the developer is on a small team or working small projects, the PHP developer may also be the JavaScript programmer.
A large team that tackles larger projects may have a dedicated JavaScript developer.
There are a few JavaScript libraries that make applying JavaScript functionality easier.
To lean more about JavaScript you may want to visit this reference on Mozilla.org.
AJAX
AJAX stands for Asynchronous JavaScript And XML. Sounds complicated. In reality, it is not. Basically, AJAX is JavaScript that adds functionality to a website.
Google Auto Suggest is an example of how JavaScript can be used to make a website interactive.
In the hands of a talented and skilled JavaScript developer, a web application can be as interactive and rival a desktop/laptop/cellular phone application.
To lean more about AJAX you may want to visit this reference on Wikipedia.org.
PHP
Of course, a PHP programmer needs to be proficient with PHP. PHP is relatively easy to learn and apply. There are some different ways to apply PHP.
There is old school scripting where each web page contains its own PHP.
Functional design is where common functionality is contained in function so the functions can be called when needed. This cuts down on redundant code and makes an application easier to maintain or expand.
Then there is Object–Oriented PHP or OOP. OOP allows one to create code objects that contain data and functionality. This approach encapsulates common functionality making it easier to use, modify, extend, and reuse.
There has been some debate on which is better, functional programming or object–oriented programming. For the most part, I think object–oriented programming is better.
A PHP developer should understand this and be able to apply each as may be needed.
To lean more about PHP you may want to visit the official PHP website.
MySql
MySql is the data engine of the web. PHP has about 80% market share of the Internet and MySql and its derivatives are the most widely used data engines on the web. PHP and MySql go hand in hand.
A PHP web developer needs to have a strong working knowledge of MySql and the structured query language (SQL).
SQL is how PHP programs interact with MySql.
There is a lot to know about MySql and SQL.
A PHP developer needs to know:
- How to connect to a database using PHP.
- How to create, add, modify, or remove databases, tables, and the data contained in these tables using PHP.
- The MySql data types such as numbers, strings, and boolean.
- Must be able to use phpMyAdmin and/or one or more of the MySql external management tools such as WorkBench.
To lean more about MySql you may want to visit the official MySql website.
Database Normalization
If you read about database normalization on the Wikipedia page that talks about database normalization it might seem a bit confusing. It is pretty simple. It is removing redundancy from your data and making your data more relational. The example I like to give is how to design the two tables of an invoice. This is a very simple example.
An invoice table that has not been normalized might look like this:
Name, address, phone number, total, tax, shipping address, billing address, itemID, item_description, item extended cost, QTY, taxable, line total... etc.
Each item purchased would have its own record with the redundant data of name, address, phone number total, tax, shipping address, billing address.
And the PHP code to deal with something like that might be a little less than straight forward.
Here is a simple normalized approach – we would use two tables.
Table one: Invoice Number, Name, address, phone number, total, tax, shipping address, billing address. I call this the invoice header, which contains all the administrative information that is required only once.
Table Two: Invoice Number, itemID, item_description, item extended cost, QTY, taxable, line total. I call this table invoice detail. There is one record for each product.
The invoice number is the glue.
This approach leads to less duplicate data.
In real life, an invoicing system would require more tables to create an effective invoicing system.
To dig a little deeper you may want to visit this database normalization reference on Wikipedia.org.
Linux Hosting and Server Management
There are 5 types of PHP hosting servers:
- Shared Hosting – Shared is where your website and a lot of other websites are served from the same server. This type of hosting is what the vast majority use and those on shared hosting will probably never need anything else. This type of hosting usually comes with a control panel that limits what the developer can do.
- Reseller Hosting – Reseller hosting is almost the same as shared hosting. The difference is the reseller can create hosting accounts. The reseller has limited access beyond configuring hosting packages and creating hosting accounts.
- Virtual Private Servers (VPS) – A VPS is like having a full–blown hardware server. The exception is the there are many VPS on a hardware server. The hardware server is configured in such a way as to provide for the creation of many servers. This is the best of both worlds. These servers are real servers, however, they cost less since they share the same hardware. VPS are in wide usage by those who need more than shared hosting has to offer and do not need a hardware server.
- Hardware Servers – Some vendors call these dedicated servers. This configuration means you have an entire server for your exclusive use. Websites and web apps that need a lot of power or have security concerns may want a hardware server.
- Cloud Servers – For the most part, the cloud is a bunch of VPS servers. In some cases, such as with Amazon, there is a control panel that provides for fully automated access to the cloud. These servers are fully scalable as are most VPS configurations, which means as the demand goes up the server scales to meet that demand. The opposite is also true. As demand goes down the server can scale back.
Each server type allows a different level of access and control and may limit what a developer can do as a system administrator.
Life Cycles of Each of the Technologies in Use
Each of the technologies in use come with their own life cycle.
HTML and CSS rarely change. JavaScript and the JavaScript libraries are slow to change as well.
In the hosting world, MySql and PHP are dependent on the hosting operating system, which in most cases is Linux. PHP can be hosted on Windows. Unless you have a compelling reason to host on Windows I would recommend Linux web hosting.
The developer needs to understand the life cycle of the full stack of technologies he or she is using.
Project Management
There are four project life cycle stages
- Project Initiation – At this point, the customer is providing the project manager with the details of the project.
- Project Planning – The manager, who might be a developer, takes the informal specifications that were received during the initiation phase and turns them into a formal plan.
- Project Execution – This is the start of the hands–on by the development team. The development team takes the formal plan and turns it into a software solution. A team can be a team of one, as might be the case for a freelance developer.
- Project Closure – Once the software solution has been completed and is in production it is time to conduct an after–action review. At this point, the team should be identifying what went well and what went not so well. No project is perfect. The goal is to learn so each individual can grow, and so the team can become stronger.
Here is an article on Wikipedia.org that goes a lot deeper.
Critical Thinking
Every developer, no matter the language, should be able to think critically. Critical thinking is the ability to think in an organized matter. This is the approach a developer should take towards a programming project.
Critical thinking gives the developer the ability to take the project as outlined by the customer and convert those ideas into a project analysis and design and ultimately a completed software project.
Analysis and Design Skills
The analysis is taking the customer’s description of their needs and thinking it through to come up with a solution.
Some group the feasibility study into the analysis and design.
As a developer progresses they may be called onto to perform an analysis and design of a potential future project.
This project analysis and design can be formal or informal depending on the size of the project and the number of people assigned to the project.
Time Management
Time management is critical when working on a software project, especially when working as a team. To be successful and deliver the project on time, each member of the team needs to complete their tasks on time. This is important because others are dependent on their team members doing their part on time.
In the case of a lone developer, such as a freelance PHP developer, the end goal is to complete the project one time and on budget.
You might find this article on Entrepreneur.com interesting – 15 Time Management Tips for Achieving Your Goals.
Communication Skills
This is my pet peeve. Most projects fail because of poor communication skills. The developer needs to communicate with the customer as soon as he/she can and must communicate on a regular bases. When I say a regular basis, I’m talking every couple of days. The customer needs to be brought in for a project review as often as is practical.
If the developer fails to communicate and get the customer involved with regular reviews, the project can go off course and ultimately fail.
Here is an interesting article on Entrepreneur.com – 14 Proven Ways to Improve Your Communication Skills.
Ability to Keep Current
The ability to keep current is easier for those working in a group. Keeping current for a lone developer can be a challenge.
Some of the ways to stay current are:
- Networking – Such as joining meetups, attending conferences, and developing friendships with other PHP programmers.
- Periodicals and Books – Periodicals can be a great source for extending one’s skills and abilities. One much be careful that the information is accurate and not outdated.
- YouTube – YouTube contains a lot of videos. This is a great place to get a glimpse of what others are doing and thinking.
- Technical Websites – These websites always have thought–provoking articles.
- Vendor – It is always a good idea to check the vendor website for updates.
Conclusion
As you can see there is a lot to know and a lot of skills to hone to become a proficient PHP developer.
My name is Keith Smith. This is my website. It was handcrafted by me as an example of my skills. It is not as beautiful as what a website designer might have been able to create, however it is clean, simple, and functional. I am not a designer, I am a programmer.
If you have a project you would like to talk to me about, please call me at 480-748-9893 or complete my Project Request Form.
I look forward to hearing from you soon.