Can AI Write PHP Code?

Image : Can AI Write PHP Code?

I asked ChatGPT 3.5 “Can AI write PHP code?”. ChatGPT 3.5 is a free version of Artificial Intelligence.

I’ve been a freelance PHP developer since 2006. I consider myself to be a senior developer.

https://youtu.be/k7CNqcKxKTg

Here is what ChatGPT responded:

Yes, AI can be trained to generate PHP code. PHP is a widely used scripting language for web development, so some models and tools can assist in generating PHP code snippets or even more complex scripts.

However, it’s important to note a few things:

1.**Quality and Intent**: The quality of AI-generated code can vary. AI can produce syntactically correct code based on training data, but it might not always produce efficient or well-structured code that adheres to best practices or security guidelines without careful oversight.

2.**Use Cases**: AI-generated PHP code can be useful for generating boilerplate code, automating repetitive tasks, or even suggesting solutions based on specifications. It can help developers save time and focus on higher-level aspects of development.

3.**Limitations**: AI models are trained on existing data and patterns. They might struggle with highly specialized or novel requirements that deviate significantly from the data they were trained on.

4.**Human Oversight**: Regardless of AI assistance, human oversight, and validation are crucial. Developers should review and test all generated code to ensure it meets project requirements and standards.

In summary, AI can write PHP code and assist developers in various ways. Still, it is most effective as a tool to augment human creativity and expertise rather than replace it entirely.

I’ve been experimenting with ChatGPT 3.5 for maybe 6 weeks as of the writing of this article. I am interested in article writing and PHP code creation.

Before we get started, let’s discuss what is known as prompts. Prompts are the way to interact with ChatGPT 3.5. The better the prompt the better the reply from ChatGPT 3.5.

It is a learning experience.

The other thing that needs to be discussed immediately is the more PHP programming experience the developer has, increases the potential for using and implementing PHP code produced by ChatGPT 3.5.

Recently my local Linux group discussed using AI to generate code. The consensus was that in the short term, there would be little change. The short term is maybe the next 3 years.

The group felt that at some point the junior and mid-range PHP developers would be displaced.

The group also found this scenario interesting in that as the senior developers retire or exit programming there would be no one to replace them, as the juniors and mid-range developers would be non-existent. It might take 6 to 10 years to create a senior developer.

Let me give you a few examples.

If I ask AI to “create a login script in PHP using the MySQL database”. ChatGPT responded:

Creating a login script in PHP using MySQL involves several steps, including connecting to the database, querying user credentials, and validating the login. Below is a basic example of how you can implement this:

1.**Create a MySQL Database:**

First, you need a MySQL database with a table to store user information. Here’s an example SQL to create a `users` table:

CREATE TABLE users (
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL, — Hashed password
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Note: Always hash passwords before storing them in the database for security reasons.

Use PHP’s `password_hash()` function for this purpose.

2.**PHP Login Script:**

Create a PHP script (`login.php`) that handles the login process. Here’s an example:

<?php
session_start();
// Database connection parameters
$host = 'localhost';
$db = 'your_database';
$user = 'your_username';
$pass = 'your_password';
// Create connection
$conn = new mysqli($host, $user, $pass, $db);
// Check connection
if ($conn->connect_error)
{
    die("Connection failed: " . $conn->connect_error);
}
// Check if form was submitted
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    // Prepare the SQL statement
    $stmt = $conn->prepare("SELECT password FROM users 
        WHERE username = ?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $stmt->store_result();
    // Check if user exists
    if ($stmt->num_rows > 0) 
    {
        $stmt->bind_result($hashedPassword);
        $stmt->fetch();
        // Verify the password
        if (password_verify($password, $hashedPassword)) 
        {
            // Set session variables
            $_SESSION['username'] = $username;
            header("Location: welcome.php"); // Redirect to welcome page
            exit();
        } else {
            $error = "Invalid username or password.";
        }
    } else {
        $error = "Invalid username or password.";
    }
    $stmt->close();
}
$conn->close();
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,
            initial-scale=1.0">
        <title>Login</title>
    </head>
    <body>
        <h2>Login</h2>
        <?php if (isset($error)): ?>
            <div style="color: red;">
           <?php echo $error; ?></div>
        <?php endif; ?>
        <form action="login.php" method="post">
            <label for="username">Username:</label>
            <input type="text" name="username" id="username" required>
            <br>
            <label for="password">Password:</label>
            <input type="password" name="password" id="password" required>
            <br>
            <button type="submit">Login</button>
        </form>
    </body>
</html>

Instructions:

Database Setup: Ensure you have a MySQL database with a users table containing username (VARCHAR) and password (VARCHAR) fields. Use password_hash() when storing passwords.

Testing: Access login.php in your web browser, enter your credentials and check the behavior on both successful and failed logins.

Redirect Page: Create a welcome.php file to greet the user after login.

Security Notes:

Ensure your site uses HTTPS to protect user credentials.

Implement measures against SQL injection (this script uses prepared statements, which helps).

Consider adding Cross-Site Request Forgery (CSRF) protection for your forms.

Secure session management practices should be followed.

Feel free to customize the layout and logic to fit your application’s needs!

I ask “Should a cookie be implemented?” AI responds:

Implementing cookies can enhance user experience, especially for remembering user sessions or preferences. However, it’s important to handle them securely. Here are some points to consider regarding cookies in the context of a login system:

When to Use Cookies

Remember Me Functionality: Allow users to stay logged in even after closing their browser. This is usually done by storing a cookie with a token.

User Preferences: Save user-specific settings, like theme or language.

Security Considerations

Secure and HttpOnly Flags: Set the Secure flag for cookies to ensure they are only sent over HTTPS. The HttpOnly flag prevents client-side scripts from accessing the cookie, reducing the risk of XSS attacks.

SameSite Attribute: Use the SameSite attribute to help protect against CSRF attacks by controlling how cookies are sent with requests.

Token-Based Authentication: If you implement a “Remember Me” feature, use a securely generated token stored in the cookie, linked to the user’s session on the server.

Example of Implementing Cookies

Here’s a modified version of the login script that includes a “Remember Me” feature:

Updated login.php

<?php
session_start();
// Database connection parameters
$host = 'localhost';
$db = 'your_database';
$user = 'your_username';
$pass = 'your_password';
// Create connection
$conn = new mysqli($host, $user, $pass, $db);
// Check connection
if ($conn->connect_error)
{
    die("Connection failed: " . $conn->connect_error);
}
// Check if form was submitted
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    $rememberMe = isset($_POST['remember_me']);
    // Prepare the SQL statement
    $stmt = $conn->prepare("SELECT password FROM users 
        WHERE username = ?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $stmt->store_result();
    // Check if user exists
    if ($stmt->num_rows > 0) 
    {
        $stmt->bind_result($hashedPassword);
        $stmt->fetch();
        // Verify the password
        if (password_verify($password, $hashedPassword)) 
        {
            // Set session variables
            $_SESSION['username'] = $username;
            // Handle "Remember Me" functionality
            if ($rememberMe) 
            {
                // Generate a token
                $token = bin2hex(random_bytes(16));
                // Store the token in the database with the username
                $stmt = $conn->prepare("UPDATE users SET 
                    remember_token = ? WHERE username = ?");
                $stmt->bind_param("ss", $token, $username);
                $stmt->execute();
                setcookie("remember_me", $token, time() + 
                    (86400 * 30), "/", "", true, true); // 30 days
            }
            header("Location: welcome.php"); // Redirect to welcome page
            exit();
        } else {
            $error = "Invalid username or password.";
        }
    } else {
        $error = "Invalid username or password.";
    }
    $stmt->close();
}
$conn->close();
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, 
            initial-scale=1.0">
        <title>Login</title>
    </head>
    <body>
        <h2>Login</h2>
        <?php if (isset($error)): ?>
            <div style="color: red;"><?php echo $error; ?></div>
        <?php endif; ?>
        <form action="login.php" method="post">
            <label for="username">Username:</label>
            <input type="text" name="username" id="username" required>
            <br>
            <label for="password">Password:</label>
            <input type="password" name="password" 
                id="password" required>
            <br>
            <label for="remember_me">
            <input type="checkbox" name="remember_me" 
                id="remember_me"> Remember Me
            </label>
            <br>
            <button type="submit">Login</button>
        </form>
    </body>
</html>

Additional Steps

Database Changes: Ensure your users table has a remember_token column to store the token.

Token Validation: On subsequent visits, check if the cookie is set. If it is, validate the token against the database and log the user in automatically.

Logout Logic: Clear the cookie and remove the token from the database when a user logs out.

Conclusion

Using cookies responsibly can enhance user experience, but always prioritize security by following best practices.

ChatGPT can make mistakes. Check important info.

Summary

I asked ChatGPT to create a PHP login script as an example and to answer the question “Can AI write PHP code?”. It does a great job. This experiment reinforces my statement that to effectively use AI to generate code, requires a senior developer.

Upon request, AI-generated login cookie code with lots of comments and explanations.

All in all, I think using AI, as a senior developer, might reduce development time by 30% – 50% – a big savings.

I did not mention that AI can have what is referred to as hallucinations. It would be worth your time to understand AI hallucinations.

What is a Full-Stack PHP Developer

Some say a full-stack PHP developer is someone who can program both on the client-side and the server-side. The server side is programming in PHP and the client-side is programming in the browser using JavaScript.

Others define a full-stack developer as someone who can troubleshoot both the software layer and the server layer.

I like both definitions. I think a full-stack PHP developer is someone who has, at least, enter-level PHP web server system administrative skills and the ability to deal with the full programming stack.

Lets Break That Down

There are two parts to this – The software layer and the Linux PHP hosting layer.

I believe all PHP developers should have a basic familiarity with Linux. I think a PHP programmer should use Linux on their desktop (unless there is a reason not to) and have the skills to configure a basic LAMP or LEMP testing server.

The PHP web server Consists of:

LAMP stands for:

Linux – The operating system.

Apache – The web server.

MySQL – The data engine.

PHP – The programming language.

LEMP stands for:

Linux – The operating system.

NGINX – The web server.

MySQL – The data engine.

PHP – The programming language.

Notice the difference is Apache vs NGINX web servers.

The software layer consists of:

Hypertext Markup Language (HTML) – HTML is the bones or structure of the website.

Cascading Style Sheets (CSS) – CSS gives a website its look and feel

JavaScript, JavaScript library or framework, and AJAX – JavaScript and the associated frameworks and AJAX are used to create interactive web pages.

The PHP programming language – PHP is a server-side programming language which means it runs on the server and sends output to the browser.

Structured Query Language (SQL) – SQL is used by the developer to talk to the MySQL data engine.

There is a lot to know. Knowing and being able to work with all that has been outlined above, in my opinion, makes one a full-stack developer.

You Might Find This Article Worthwhile : Skills a PHP Programmer Should Have

Conclusion

What a Full-Stack PHP developer is can depend on who is defining what a Full-Stack PHP Developer is. There are two definitions 1) a PHP programmer that can program both on the server-side and on the client-side, and 2) a PHP developer than can troubleshoot both the client-side software, the server-side software, AND the PHP web hosting server itself.

I believe a PHP developer must have basic Linux hosting skills. This does not mean this developer needs to be a production server administrator. What I am saying is this PHP developer should be able to configure a LAMP or LEMP stack for testing.

Should You Learn PHP – Use the Hedgehog Concept to Determine if PHP is Right for You.

Using the Hedgehog concept to determine if you should become a PHP developer

In this article, I will cover the Hedgehog Concept and how it will help you determine if you should become a PHP programmer.

My name is Keith Smith. I have been a freelance PHP programmer since 2006 and I have evaluated my career choices several times using the Hedgehog Concept.

I first become aware of the Hedgehog Concept through the book “Good to Great” by Jim Collins. The book was copyrighted in 2001 and I read it in 2005 at the suggestion of my employer. Interestingly my employer at the time was not following the teachings of this book.

The book “Good to Great” is about how businesses move from good to great and the book shares many findings. One of which is the Hedgehog Concept.

Hedgehog Concept

In a nutshell, the Hedgehog Concept leads us to that one big thing we should focus on. In business, it is the service, product, or concept that is right for that particular business. For instance, Walgreens is on almost every corner. How they got there is the reason they moved from good to great – they focused on what they could be the best at.

The Hedgehog concept can be used personally to evaluate our best career path at any given point.

Using this same set of principles will guide us to the one thing we should focus on.

The Fox and the Hedgehog

The Hedgehog Concept is based on an old Greek parable “The fox knows many things, but the hedgehog knows one big thing.”. Jim Collins took that parable and turned it into 3 questions that take us from being a fox that knows a lot of things to a Hedgehog who does great things because he is focused on his one big thing.

In this article, I am going to focus on how we can determine our personal Hedgehog Concept.

Our Personal Hedgehog Concept

I am only going to cover the Hedgehog Concept and how it is applied to us. We will look at it as our personal Hedgehog Concept, or what is the single or dominant thing we were encoded to do.

We are encoded with many abilities, however, one will more than likely be our personal Hedgehog Concept.

The Three Questions of the Hedgehog Concept

There are three principles or questions that make up our personal Hedgehog Concept.

  1. What are you deeply passionate about?
  2. What are you genetically encoded to do?
  3. What drives your economic engine?

What Are You Deeply Passionate About?

Passion is an indicator of what you should be doing. If you are passionate about a particular area absent one of the other two indicators, this particular passion is not your one big thing. The area that you are passionate about and fulfills the other two indicators probably is your one big thing – or the thing you should concentrate on.

What Are You Genetically Encoded to Do?

Each of us is unique. Each of us was created with special skills and abilities – things we are naturally good at. By the time you become a teenager, you should start seeing your strengths and the things you are a natural at. Some are good at art, some are good at writing, some are good at business, etc.

What Drives Your Economic Engine?

This is a big one. You are looking for something you are passionate about that can drive your economic engine.

Putting All Three Together

Having passion about something you are a natural at, that also drives your economic engine is your one big thing – your Hedgehog Concept

I would recommend taking some time to go through this exercise before you decided on what you would like to do for a career. 

A Real-Life Story

Let me share a story and why I think going through this process is important.

About 10 years ago a young man approached me at a men’s gathering and said he wanted to become a PHP programmer. I asked why. He told me that I was successful so he thought he would do what I do. That answer gave me a lot of insight. I was looking for passion. He was looking for a job or a skill that could create success.

At that point I suggested he determine his personal Hedgehog Concept and then if he determined becoming a PHP programmer was what he should pursue, then come back and we would talk. He never returned.

My Advice to Any Aspiring Programmer

Do not choose a career path just because those skills are in demand and because the pay is good.

Every one of us is encoded with certain abilities. And every one of us has a set of passions. We need to take the time to look deep inside to determine our correct path.

I’ve heard it said, “Do what you are passionate about and the money will follow.”. If you choose the wrong path you might end up less than satisfied or in the end, being miserable.

Let me give you an example. Registered Nurses (RN) get paid well and are in high demand. I have the ability to become an RN, however, I would be miserable because I am not passionate about being an RN. It’s just not me.

Summary

This article is about using the Hedgehog Concept to determine if you should become a PHP Programmer. By using the Hedgehog Concept we can determine our career path and lead a more fulfilling and richer life.

If you have not already visited my YouTube channel, please do : PHP Coder USA YouTube Channel.

Skills a PHP Programmer Should Have – a Definitive Guide

Image : Skills a PHP Programmer Should Have

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.

Everything a Website Owner Should Know

Image : Everything a Website Owner Should Know

Freelance PHP Programmers, Everything You Need to Know

Image : What Do I Need to Know About Freelance PHP Programmers?

Hiring a freelance PHP programmer is a serious undertaking. Let me share with you what I know about freelance PHP Programmers.

There are a few things to consider when hiring a PHP programmer like ensuring their skills and experience match your needs. Communication skills and fee rates are also important. There is a lot to consider when hiring a freelance PHP programmer. 

I recommend reading this guide before you search for and contract with a developer.

The PHP programming language is very popular and there is a ton of people that are willing to help you. There is only one problem – and that is what you don’t know can hurt you.

Every day I read about all the retail stores that are closing. Everything is moving to the web. Along with this, the Internet is much more complicated today than it was 20 years ago. Given this, having an experienced and professional PHP / MySql developer on your team is a must.

Assessing Your Need

The first step is to assess your needs. With that, you will have a better idea of what skills you are looking for. For example, if you are looking at building an eCommerce website, you may want to look for a WordPress and WooCommerce solution provider.

Analyzing your project will also give you insight into what type of developer you may want to hire. Below I list “the freelance developers you will find in the wild”.

Finding Someone Who Matches Your Needs

This is a tough one. Where do you look? You can start by searching the Internet. That is probably how you found this article.

There is a lot of websites that broker developers. They also get in the way. No direct contact. This has its pros and cons. The upside is you may be better protected. You will more than likely make your payments to the broker which are held in escrow. The downside is it is rather bureaucratic – you will never have direct contact with your developer. You will never build rapport nor will you ever know much about the person working your project. If that is what you want, great, if not you may want to try hiring a developer directly.

Using a broker website lends itself to small or short projects.

If you have a project that will take more than just a few hours you may want to consider hiring direct.

Hiring Direct Comes With More Than a Few Benefits

  • You Can Get To Know The Person – Getting to know the person that works on your web projects is a win-win situation. Not only do you get to know them, they also get to know you. This opens up better communications and will lead to better peace of mind.
  • You Can Evaluate The Prospective Developer – You can talk with them and evaluate their prior projects. You can also look at their social media accounts and look at their website.
  • You Have a Better Chance of Building Rapport – I think this is important. As a developer, I like to get to know the people I work with and for. I assume they like getting to know me as well. In my opinion, this leads to a much better working relationship.
  • You Can Make The Developer a Member of Your Team – Yes, making your solution provider a member of your team is a good thing. This can lead to a more efficient working environment. I like being a remote member of your team because I can learn what to expect and how to meet your needs. 

The Freelance Developers You Will Find in the Wild

You will run into these types of programmers in the wild:

  • The Guy or Gal That is Between Jobs – This is the guy or gal that was just laid off, or was fired, or may have quit their job. One of the potential problems with this person is what happened to your project when they find a new job. One of the other issues is this person may not have any real business experience. Running a project is tough. Running a project and a business at the same time is even more demanding.
  • The High School Student – My hat is off to this person. Sounds ambitious and may even have a lot on the ball. The downside is this person may not have much life experience and little or no experience running a business while juggling other obligations while trying to run a programming business. I would not expect this person to keep regular business hours.
  • The College Student – Same as the high school student except this person may be more mature and might have more life experience as well as business experience. Still, this person will be juggling many obligations. I would not expect this person to have much availability during business hours. 
  • The Hobbyist – This person is in it for the fun of it. That can bring a number of advantages and disadvantages. This person may or may not be available regularly. They may or may have low rates. One of the thrills this person my get out of a hobby business is seeing how much they can charge. On the other hand, compensation might take a backseat to other benefits and their rates may be low. 
  • The Side Hustle – This person may have a part-time or full-time job and does PHP programming on the side. The advantage might be a cheap project while the disadvantage is this person probably is not available during regular business hours and maybe less available than you would like.
  • The Offshore Developers – They usually work for far less than an American programmer who wants the going rate or something close to that. You may want to think about how the time zone difference may affect your project. I was working on a project with another company that had an Indian programmer. The time zone was 12 and a half hours different. One of the other challenges is the culture and language barriers. Even though your offshore coder may speak English they might not understand what you asking them to do – this is the language and cultural barrier. Since they are offshore there is much less accountability. Liability is always an issue when going off-shore. If your programmer does not follow your directs and does something that causes you liability, you are probably on your own. 
  • The Professional PHP Programmer – This is the guy or gal that holds regular business hours and is readily available during business hours. They probably have formed a business and I expect they will have a website. This is what they do – they provide PHP programming services. This person should have decent communication skills and should be able to run a business while attending to projects. I would expect that a freelance PHP developer would be the most stable and responsible for your project with respect to the other listed category of freelance developers. 

There are pros and cons to each one. Only you know what you are willing to endure to get your project across the finish line. In other words, do you hire a pro that can make your project easier, or do you hire a high school kid that will require you to manage them?

Type of Freelancers 

A freelancer is not an employee, they are independent contractors. These projects come in one of the following forms:

  1. Taking on short-term projects on a contract basis (gig workers).
  2. Taking on recurring tasks as an independent contractor.

As we move further into the gig economy, gig workers or freelancers will become more common.

What is the IRS Definition of an Independent Contractor

It is important that you understand what the IRS defines as an independent contractor. If you violate the IRS rules you may find yourself paying the IRS additional taxes and fees. 

The main test the IRS uses is:

  • A person is an employee if they have no control over what they do and how they do it.
  • A person is a contractor if they have control over what they do and how it gets done.

It comes down to control and relationship. If the person has a contract and comes and goes as they please while being self-directed they are probably an independent contractor.

A freelance PHP developer is someone who basically does gig projects on a contract basis. A guy I know says a freelancer is someone who created a job for themselves. I would say this is accurate and from my experience, most freelancers are a one-man-band. More than one developer is an agency. Working with an agency is usually different than working with a freelancer. 

Division of Website Developer Skills

I occasionally run into or hear about, a PHP developer that claims to be a designer and a developer or maybe an expert Linux system administrator. I’m not saying they do not exist, however, they are rare. I like to separate the skill sets that are necessary for the successful launch and ultimately the support of any website.

Here are the 5 skill sets. Keep in mind there will be some overlap. The PHP programmer will probably have the greatest overlap given the developer needs to know a little about everything.

  • Designers – This is the person that makes your website look good. They create templates or what is called the theme. They know HTML and CSS very well and will have a good eye for making things look very nice.
  • Graphics Designer – Making logos, images, and modifying pictures are what this person does. The graphics designer and the designer might be the same person.
  • PHP Programmer – This person does not make your website beautiful, they make it functional.
  • Linux Hosting Administrator – Your hosting expert. They are the ones who maintain your hosting server and it’s associated network(s). 
  • JavaScript / AJAX developer – Making your website interactive is the function of the JavaScript / AJAX developer. Depending on the requirements of your website or web app, a PHP developer might fill this role. 

The Basics to Look For When Hiring a PHP Programmer

  • Skill Level and Experience – You are looking for a solution provider and I keep taking skills. I often hear “Employers are looking for skills and website owners are looking for solutions.”. That is true. So why do I continue to talk skills? It is simple. Solution providers must-have skills and experience.
  • We can group skills and experience is three basic buckets.
    • Entry Level – This is a developer who is just beginning. If we look just at time that might be the first two years of full-time work as a PHP developer.
    • Mid Level – Someone who has more than two years of full-time experience. 
    • Senior Level – A senior developer will be well seasoned. It might take six years to get to this point, depending on the type of projects they have been working on.
  • What Niche Are They in – This is important because you will want to find a developer that aligned with the niche your project is in. For example, if you are building an eCommerce website using WooCommerce you do not want to hire a Drupal developer unless that developer has WooComerce Experience.
  • Communication Skills – This is my pet peeve. The person you choose needs to have good communication skills. Add to that they need to communicate often. A developer with poor communication skills can derail a project in a heartbeat.
  • Ability to Self Motivate – Your developer will be working from home and must be self-directed and have the ability to motivate themselves even when they do not want to work on your project.
  • Ability to Run A Small Business – Every person who does freelance work must understand the basics of running a small business. The basics consist of managing projects, writing contracts, completing projects, billing and managing income and expenses. It sounds easy and it kind of is, however, this means the developer you hire must be good at changing hats as needed.

An Overview of the Technical Skills a Freelance PHP Programmer Must Have

As I outlined in the prior section, there is a division of skills. Most developers do one or the other well while having some skills in other areas. However, you will find that some if not most designers know little about PHP development. 

As for the PHP programmer, I would expect them to have a decent grasp of the full stack. Some refer to the stack as the “LAMP” stack. The LAMP stack is actually a subsection of what is really required of a freelance PHP programmer. LAMP stands for Linux, Apache MySql, and PHP. 

This does not mean the PHP developer is an expert in these ancillary technologies. What it means is the developer needs to know enough to be able to add the PHP / MySql functionality to other’s work.  

This is a brief summary of the skills a PHP developer must-have. This is not an exhaustive explanation of each technology.

HTML – The basis of all web pages.

CSS – The definition of webpage styles such as the font family and size. 

JavaScript and JavaScript Libraries – These add interactivity to your web pages.

Asynchronous JavaScript and XML (AJAX) – Allows your web pages to talk directly with the server. 

PHP – The programming language we are talking about.

MySql – The data engine. This includes the Structured Query Language (SQL).

Linux Hosting Provider – Linux is the hosting server operating system.

Data Management Tools – phpMyAdmin and the MySql tool used to manage your website data.

Code Editor – Must have an editor that helps the developer speed up the process.

I intentionally left off Windows PHP hosting because PHP is native to Linux and was adapted to run on the Windows web server. I would never recommend running PHP on a Windows server. 

The PHP / MySql developer needs to be rather skilled in many areas while designers, JavaScript programmers, and Linux administrators, for the most part, only need to know their niche.

There is an exception and that is specialty hosting houses where the Linux Hosting Specialist is also somewhat of an expert in the software being hosted. For example, I supported a company that had a Drupal install that they used as a content management system. The hosting admins were also skilled in Drupal and were part of the solution.

Education is Always Nice

When I started a Bachelor’s degree was required. Today a degree s not necessary. For what it is worth I learned the basics of programming at my local community college. I pursued a Bachelor’s degree because I thought the University was going to reveal the secret sauce. No secret sauce was revealed. All of my web skills have been self-taught or learned while doing projects. 

Believe it or not, PHP programming is not taught at the University. You will find website skills being taught at the community college level. 

Soft Skills

  • Leadership Skills – Your developer will need to take the lead in almost all areas of your project.
  • Teamwork – Even though you are hiring a Freelance developer, he or she is part of your team. They do their part while you do your part. It is a team effort.
  • Communication Skills – As mentioned before your developer must be a good communicator otherwise your project will fail.
  • Work Ethic – This speaks to being a self-starter. Since your developer will be working remotely, the must have a strong work ethic.
  • Flexibility/Adaptability – Things change often and your developer must be willing and able to adapt to change. Having a change procedure and policy will be very helpful. 

Freelance Developers Work Remote

Why is this important? Because the developer you hire must have a professional work environment, all the necessary tools, and be self-motivated. The person you hire will need to be able to work remotely with little direction.

Project Life Cycle

The project life cycle consists of four parts:

  • Initiation – The very beginning step is to determine if the project is viable, or feasible. If you have a small project, you may be able to do this in your head. However, it is always a good idea to write it down and think it through. You need to understand the pros and cons of your prospective project.
  • Planning – You will need the assistance of a senior developer to accomplish the planning phase. I assume you are a layperson that is why you are reading this article. Given that you will need to work with a developer to sort out the technical details and to determine how long the project will take the cost and the required resources.
  • Execution – This is when you are working on the project. You should be following the project plan and managing any changes that may come to light. Even the best of plans do not allot for everything. Occasionally there will need to be a change order. 
  • Closure – When the project comes to a close, it is time to assess your project to ensure your plan has been executed properly. At this point, you should have a good idea or even a written plan for what it will take to keep your web project online and functioning properly for the time frame you desire.

Technology Life Cycle

When I talk about the Technology Life Cycle I am talking about the upgrades of each piece of technology you are using. This may drive changes to your software as well.

A PHP project consists of a stack of interacting technologies. Each of these technologies has its own upgrade schedule. This can be complicated and this is where your developer and hosting partner play a major role. You may need to bring in your designer as well. If you did not use your PHP developer to perform your JavaScript programming, you will need that person to freshen up your JavaScript from time to time. 

You will be using the usual combination of technologies such as HTML, CSS, JavaScript and JavaScript Libraries, AJAX, PHP, MySql, and Linux. 

Any other libraries or software you use may come with its own upgrade schedule as well.

Keeping everything up to date and knowing when to upgrade is the job of your developer and hosting partner. For a small project, all of this may fall on the shoulders of your developer.

Application Security

Security is a must when dealing with the hostile Internet. Getting hacked is no fun. Most modern PHP applications such as WordPress come with builtin functionality that can be tapped into to ensure your application is secure.

The PHP programming itself has a whole layer of security that can be used to ensure your application is secure.

Programming Language Selection

If you have a project in mind and are not sure what programming language to use, a developer can help you with that. Given PHP is run on about 80% of the websites and applications on the Internet, PHP probably can do the job.

Hosting Selection

There are three types of hosting server configuration:

  • Shared Hosting – Hosting providers put lots of websites on each servers creating low cost hosting solutions. Shared hosting is a good place to start with a new project unless your project needs advanced access to the server such as command-line access. Some web applications can require more resources than shared hosting provides.
  • Virtual Private Servers (VPS) – This is where a server is partitioned into multiple virtual servers. Most web applications will run nicely on a VPS. 
  • Hardware Servers – Top-level applications may require the power and the exclusive use of a hardware server. This is a server that is exclusively used by one entity.

Your developer should understand hosting and can help you rightsize your hosting server.

How Search Engine Optimization (SEO) Knowledge Makes for a Better Developer

There is a lot to know when it comes to SEO. I think all PHP developers should understand the SEO basics. Things like using relevant search terms in places like the alt tags of your images.

They should also know about duplicate content, how the title of your articles will affect ranking, and so much more. 

SEO is easy to learn if one knows and understands HTML. 

So how does knowing SEO help? As your developer changes things they will understand what SEO questions to ask and how to use that knowledge to help your website SEO wise. 

For example, if you are using WordPress, your developer can help you configure things like your website Permalinks. 

Newsletter Management

This speaks to understanding SPF and DMARC DNS records. Knowledge of how newsletters are rejected by the recipient’s server and how to take corrective action is also important. This is an advanced topic and I would expect a seasoned programmer to understand these concepts. 

Backup Management

Losing a website can be catastrophic. Losing your website could put you out of business. Backing up your website data, files, email, and in some cases server configuration files is a must. Your developer needs to help you develop a comprehensive backup plan as well as help you implement it.

Networking and DNS

Every website or web application is on a web server. Every web server is connected to the Internet. A basic understanding of networking and DNS is are essential skill sets of a PHP programmer.

What specialty are you looking for?

If already have a website or have a plan that utilizes a certain technology, then you will want to evaluate and hire someone who is a developer in that niche. Below I write about some of these areas, such as WordPress, Drupal, and Joomla.

PHP Frameworks

Using a framework for a project usually indicates you have a custom web application.

Having an existing website or web application created in a certain framework will indicate what skills your developer should have.

The Good, the Bad, and Ugly of the Job Boards

When I went out on my own in 2006 there were no job boards. The gig economy has presented the need for a market place where developers can market themselves.

A job board or market place is a place where developers and others can offer their services for hire. The board handles all communication. There is no direct communication between you and the prospective developer. All communications are managed by the job board. Once you select a developer, your payments will be made to the broad and will be placed in escrow until you are satisfied with the job. 

The Good – You have a system in place that might protect you. Your money is placed in escrow. It is easy to find people with the skills you are looking for and read their reviews.

The Bad – These sites are bureaucratic. You must communicate with your provider through the website. The broker website gets a cut of your project, so your developer will be paid less.

The Ugly – There may be rules in place that favor the developer. You will never meet the prospect nor can you build rapport with that developer. These boards lend themselves to cheap and short projects. 

If you want to find an independent/freelance programmer you probably want to steer clear of these boards. You will need to be able to work directly with your developer, especially if it is a project that may take more than a few hours. 

White Label Consulting

If you are a freelance designer or an agency you may need to hire a developer and brand their work as your own. Most of everything I write in this article applies. 

Depending on your need you may want to build a network of programmers you can rely on. 

Milestones and Payments

I like to use a contract as an agreement for the project that outlines what is to be done, who is to delivers what, when certain milestones should occur, and when payments will be made. I also like to agree on the method of payment.

This agreement supersedes all prior statements verbal or written statements. Making the contract or agreement the final statement will help reduce misunderstandings. 

Problem Solving

By the time a person becomes a freelance PHP developer, they should be good at problem-solving. They should have a history of problem-solving. I’m talking about full-stack problem-solving. Full-stack means all the technologies that come together to make your website or web application viable. 

Employers look for skills and those hiring a freelancer are looking for solutions You are looking for solutions and you should understand the skills a freelance developer should possess to be able to complete your project. 

Problem-solving is not limited to the stack. Your developer may find themselves in a position to resolve other issues that are not purely related to programming. Freelancers must be ready to solve logistics and communications issues as well.

Hire a Freelance PHP Developer

If you have a generic problem, such as an old school website that needs to be freshened up a bit, you just need a PHP developer. Any PHP developer that has any amount of experience will probably do. Just make sure you find someone who knows what they are doing, is responsible and reliable. 

Hire a Freelance WordPress Developer

WordPress Logo

If you have a WordPress project, you will need a person who specializes in WordPress. While WordPress is easy to use and expand, it comes with a large ecosystem. Besides needing to know the basics and advanced PHP development, the WordPress developer needs to understand how to create plugins, how to write and modify theme code, and build or modify theme function files. A WordPress developer needs both advanced skills and WordPress specific skills. 

Hire a Freelance Laravel Developer

laravel logo

Laravel is an advanced PHP framework that is very popular. A Laravel developer needs advanced PHP developer skills and needs at least some Laravel development experience. Laravel requires the following skills:

  • Linux hosting command line
  • PHP Composer
  • Mod_rewrite
  • .htaccess
  • Potentially Apache and / or Nginx
  • Model View Controller MVC architecture

Just to mention a few.

Hire a Freelance CodeIgniter Developer

CodeIgniter is very mature given it was first released on February 28, 2006. It is very easy to install, run, and to build web applications with. CodeIgniter is my favorite PHP framework given its small footprint, lightning-fast speed, and it’s simplicity.

CodeIgniter can be used to develop web applications on shared hosting since it does not require a lot of resources nor is there any need to have access to the server command line.  

It is well documented. It follows the Model, View, Controller (MVC) architecture. Codeigniter is suitable for almost any type of project.

A Codeigniter developer needs moderate experience and skills. 

Hire a Freelance WooCommerce Developer

WooCommerce is a WordPress plugin. It extends WordPress. A WooCommerce developer will need to be a WordPress developer and will need WooCommerce skills as well. This developer will need advanced PHP skills first and foremost. Add to that you will want someone with eCommerce experience and a good understanding of the Domain Name System (DNS). It would also be a good idea to hire a developer with some understanding of how a newsletter system works and how SPF records work.

Add to these requirements an eCommerce expert needs to have knowledge and experience with the Payment Card Industry (PCI) standards. This includes penetration testing and working knowledge of how Internet taxing works.

Hire a Freelance Drupal Developer

Drupal is very mature and is for the enterprise. Drupal has a large ecosystem and is a very hardy web application infrastructure that lends itself to creating Content Management Systems (CMS) and all sorts of web applications. Drupal comes with a long and difficult learning curve. Out of the box, Drupal is not very SEO friendly. 

If you are looking to hire a Drupal developer look for someone with a lot of experience with Drupal that is an advance PHP Developer. This person will need to have Linux command-line skills and understand Composure. There is a lot to know to become a freelance Drupal developer. 

Hire a Freelance Magento Developer

Magento is Open Source and also has a licensed version. Magento comes with an extreme learning curve that includes understanding Dependency Injection, Name Spaces, Composure, Payment Gateways, and the Linux command line, Apache and/or Nginx.

Magento is a resource hog and you will probably want to use Magento specialized hosting. 

A Magento developer will need to understand all the design patterns used in Magento to include the database model Entity–Attribute–Value model (EAV).

I think Magento is such a complicated application that I would steer away from a one-man-band freelance developer. I would look for an agency with a proven track record. 

Hire a Freelance PHP Browser-Based Applications Developer

To develop PHP browser-based web applications, your developer will need to have more than a basic understanding of JavaScript / AJAX, and at least one JavaScript library such as jQuery. This developer will need to be an advanced PHP developer and will need to be skilled in making applications that run in a web browser that can rival desktop applications with features like pop up forms and interactive forms. This developer will need to understand security and networking.

What You Can Expect it Will Cost to Hire a Freelance PHP Developer

What does it cost to hire a freelance PHP Developer? It depends on a number of factors, such as what type of application or website you would like to build, the skill set of the developer and where they are in the world. An entry-level American developer might charge $40 an hour and an experienced developer might want upwards of $200 an hour depending on the project and the required skills. An offshore developer might charge as little as $12 per hour and will come with lots of challenges.

In Conclusion

If you have made it this far, you know there is a lot to take into consideration when hiring a freelance PHP developer. Understanding your project and what specialty you need is important. Can you live with a high school kid, or do you want a pro? Understand the prospective developer’s skill and experience level is always good. 

I would recommend you read and reread this article before you decide to begin your search.

I wish you much success in your search for a developer.

Be Careful When Hiring a Developer

Image : Be Careful When Hiring a Developer

I’ve been a PHP programming consultant for over a decade.  I have learned first hand what is out there.  There are a lot of very good PHP programmers, however most do not know how to manage a project.  They are good at programming tasks just not the business end.  And of course there are the ones that should not be programmers at all.

I have talked to a lot of people who have had projects go South.  For the most part I chalk it up to programmers who do not know how to manage a project.  One of the biggest issues I find with my peers is the lack of communication skills.  Oh, they are great company when going out to have a burger, however they do not do a good job of communicating when it comes to managing a project.

It is a vicious cycle

They get the specs from the customer and off they go to build out what they heard from the customer.  Then they return 2 weeks later and the customer is surprised.  The customer asks for multiple corrections and the developer runs off to work on the project some more.  Then they show the project to the customer.  The customer then asks for multiple corrections.  This becomes a vicious cycle.  At some point the programmer stops working on the project and does not return phone calls or emails.  Then I get a call and hear this story.

This is a communication problem

Projects are hard.  It takes lots of communication to flesh out what the customer wants.  I take a two pronged approach.  I listen to the customer and write up what they have told me.  Once we both agree I understand I start the project.  I do not wait long to get the customer involved.  I keep the customer involved in the process.  At first I may need to take some time to get the project rolling.  Once I get the project to a point where I can get the customer involved I do so.  I bring the customer in for project review as often as possible.

Keeping the customer involved serves two purposes

One, they know I am working on their project.  Two, they get to give feed back at a much more granular level which means I will do less rework and the customer will get as close to what they want as is possible.  This approach is win-win.

There are other potential problems as well

More than likely you may not know the consultant you are about to work with and they are going to ask for some amount of money up front.  How do you know they are not some kid that does projects after class or some guy that is in between jobs?

What are some of the other things you can look for that will guide you to a viable consultant?

I’ve hired 2 programmers to work for me and 2 for another company.   I have also worked with other independents on projects. It has been quite the learning experience.

From my experience I would look for several things

1. Are they really in business or is this a hobby, a side job, or something to fill the void until the next W2 job comes through.  Some things to look at as proof they are really in business:

  • Do they have a business license?
  • Have they formed an LLC or a corporation?
  • Do they have a web site?
  • Do they have a business phone?
  • How long have they been in business?

2. I look at experience and their skill set.  Most corporations require a bachelor’s degree, usually in computer science or a related field.  I look for proof of skills.  What kind of history do they have?  How did they learn to program in PHP?  Even though PHP is widely used on the Internet, for the most part, PHP is not taught at the university. Something like 70% of the websites on the internet were written in PHP. Because PHP is not taught at the university, most PHP programmers are self taught.  That does not mean they have not attended college or do not have a degree.  It means if they learned how to program in college, they were taught programming using languages other than PHP.  To me education is important.  It gives me an idea of what they studied and what I might expect from them.  That does not mean a PHP programmer who does not have a degree is any less skilled.  Education is just a way to predict one’s skills.

One of the things I like to ask about is database normalization.  This is a skill that is a must for an independent consultant.  Having working skills in database normalization aid in designing an application.  This is a very important skill to have as a PHP developer.  I was working with a guy who was really smart and  had tons of programming skills and was a really good Linux system administrator,  who had no database normalization skills.  This was a handicap because he was unable to define a project in terms of the database layout and how to modularize a project.  He did great when given the specifications, he just could not create the specifications.

It is a jungle out there

You must be prepared or your project might not come together the way you would like it to.

I completed an AAS degree in programming, and a BS degree in Management Information Systems and Operations Management.  I formed an LLC in 2007.  I’ve been in business since September of 2006 and I work out of my home office that contains a land line dedicated to my business.  I have lots of experience with PHP / MySql programming and managing projects.

Should I Code My Website From Scratch?

Should you build your website from scratch or should you use an alternative? I share my thoughts as a PHP developer.

In the old days coding a website from scratch was the norm. Today there are alternatives such as WordPress and frameworks such as CodeIgniter. If you are a student this could be a good learning opportunity. If this is a business website, I would recommend considering your alternatives.

I have been a PHP developer since 2006 and I built my first website in 2000. In those early days, I created websites from scratch. Today there are a lot of alternatives such as, WordPress, Drupal, Joomla, Wocommerce, Drupal Commerce, Magento, and some that have less market share. 

If you are considering coding a website from scratch there is a lot to consider. Let me explain.

Skills 

To code a website from scratch requires a minimum of knowledge and skill. 

You must know: 

  • HTML – Is the foundation of web building.
  • Cascading Style Sheets (CSS) – A working knowledge of CSS is a must when building a website from scratch. The developer will need to know how to make the website look and feel good and any modern website must be mobile responsive. Mobile responsive means the website must be able to be viewed on all sorts of devices from desktop computers to laptops to mobile phones.  
  • JavaScript/AJAX – JavaScript and AJAX make your website interactive. For the entry-level website, these skills may not be necessary. Some JavaScript may be needed for form valuation.
  • A server-side scripting language – This is a necessity. The developer that builds from scratch will need to be armed with a server-side scripting language. The PHP programming language is by far the most widely used language for creating websites and web applications.
  • A data engine/Structured Query Language – If this site is more than just an HTML/CSS/JavaScript website, a data engine will be necessary. MySql is by far the most widely used web data engine. The Structured Query Language (SQL) is how the programmer utilizes the data engine. SQL skills are a must if a data engine is used. 
  • Code editor – A code editor can make a website developer’s life much easier and can speed up the programming process. Code editors can utilize auto-complete and give the ability to do a global search to find other code. These editors usually provide the ability to edit remote code.
  • Local development environment – Unless the website to be built is your basic HTML/CSS/JavaScript website, a development environment is probably necessary. Note that HTML, CSS, and JavaScript run in your web browser so websites that are limited to these technologies can be run locally without having to configure a development environment. If this project is purely for learning, the project can be completed on a publicly facing server. If this is a production website you may want to have 3 servers, one for each of the following, development, testing, and production. 
  • Hosting – Hosting is always necessary when creating a website. Shared hosting is the basic starting point. If you are building a PHP website, you will need a Linux hosting package. At one point or another, I have hosted with GoDaddy and HostGator. They should meet your entry-level needs. I hear Bluehost is a good choice as well for cheap entry-level hosting.
  • File Transfer Protocol (FTP) – If you are creating your website local you will need to transfer it to your server. That is where having FTP skills come into play. For a simple FTP client, I recommend Filezilla.
  • Project management skills – Building a modern-day website requires project management skills. As you can already see there are a lot of moving parts that will require a plan and the ability to execute that plan.

The above skills transcend three and possibly 4 distinct skill sets. In modern web development, 4 skill sets are needed to build, upgrade, and manage a website.

  • Designer – This is the person that uses HTML and CSS to create the look and feel of the website.
  • JavaScript / AJAX developer – In some cases, a Javascript developer might be required if the website or web application is using a lot of complicated JavaScript/AJAX to make the website interactive. If you are using JavaScript for simple stuff like form validation, the scripting developer is probably able to take care of the JavaScript programming.
  • Server-side programmer – This is the person who writes the server-side scripts or the web application code. In my case, I use the PHP programming language. One thing to ensure when choosing a programming language is that the language is readily available by most hosting providers. PHP is very popular and is widely available. The developer may need Object Oriented Programming skills if the code is to be reusable.
  • Hosting server administrator – The hosting server administrator ensures the web server hardware, software, and connections to the local network and ultimately to the Internet are all kept in good working order.

Questions You Should Ask Before Starting Your Project

  • What type of website are you building – Before you get started you need to ask yourself what you want to achieve. Are you building a web application or a content management system (CMS)? What you ultimately wish to achieve, will affect the skills necessary to complete the project.
  • Who is the website for – Is this a project used for learning? Will it be a business website? Is this a do-it-yourself web project? 
  • Time constraints – It will take longer to create a CMS than to use an application that is already available such as WordPress. If you are building a web application it will take however long it takes. Using a framework can speed development. You need to know the deadline for 2 reasons. One, you need to evaluate if it is reasonable, and two, to better understand what path you need to take and to discover how much you can accomplish within your given time frame. 
  • Would an alternative be better – I think I have somewhat covered this already. Let’s dive a little deeper. Say you want a simple CMS. Something like WordPress, Drupal, or Joomla may be a better solution than building from scratch. Let me explain why. If the developer starts from scratch it will take a lot of time and effort to duplicate the features and functionality these alternative applications already provide. They already have user management, content management, etc. These applications can be extended without editing the core source code of the application. And do not forget these applications are very mature and it may have taken the community hundreds of man-hours or even thousands of man-hours to get where they are today. It is not realistic that these features can be duplicated in just a few hours of programming. 
  • Is this an exercise so you can learn web development – If you want to learn web development skills, building a website from scratch can be a great way to learn and show off your skills. As you see there is a lot to learn. For the do it yourselfer, some of this can be streamlined. For example, you will not need to have Object Oriented Programming skills to build your website. Eventually, I would recommend you learn everything I have outlined if you want to build websites for others.

Advantages 

You will learn a lot if you build a website from scratch. The website may require less hosting resources and may run faster. And you will be fully familiar with your code.

If you are building a browser-based web application, building from scratch is a viable alternative to using a framework. Frameworks come with a learning curve that can add time to the project

Another advantage may be creating reusable code for a niche that a developer may be targeting. Once the code has been created it can be used for other projects.

Disadvantages

If this website is a business website, building from scratch may be a disadvantage unless that is what is required. It takes a ton of time and effort to duplicate what is already available. Time to market could be much sooner if you use an alternative such as WordPress or a framework. Time to market translates into cost.

Not using a framework can add time to the project when you take into account, frameworks contain a lot of functionality that can be tapped into and add structure and features you might have to create on your own if you are building from scratch.

Resource Utilization

In the past, my peers and I have discussed server resource utilization by applications such as WordPress. Some of my friends say building from scratch always trumps using a canned application because the source code will take up a smaller footprint and will require fewer server resources.

No doubt creating anything from scratch will make for a more efficient code base that requires less web server resources. However, you have to ask yourself is that a good business decision?  

I am looking at this from a business perspective. It is cheaper to throw a few more server resources at the application than to pay a developer to duplicate what is already out there. 

There are times when building from scratch is the solution, however, for the most part, most websites do not need to be created from scratch.

If there is a viable alternative that will shorten the build time, it should be considered. Manpower is expensive. Hosting servers in comparison are much less expensive and are getting much more robust almost daily.

This did not use to be the case. Until recently, as hardware became more powerful software would jump ahead and would require more power. That problem does not exist today. Modern web servers are very powerful and are less costly than what a developer costs.

I’m a minimalist too, however, we must consider business costs when creating a website or web application.

There are exceptions. In some cases, an application is given limited resources by design. This could be because the application is embedded on a small computer that has limited resources. This is not usually the case when it comes to websites and web applications.

Build a Website From a Template

Utilizing a professionally made website template can reduce the time and effort it takes to build a website. There is a lot of free templates. You can also buy a template. I’ve seen high-quality templates that were between $50 and $100. 

The advantage of using a template that was created by a designer is the HTML and CSS will be much better than most of us nondesigners can create. Add to this the template will be mobile responsive which requires advanced skills.

WordPress vs Build From Scratch

To build a website from scratch means creating the entire code base and the template as well. This could be a lot of work. Since most websites require a CMS, let’s cover that.

First, let’s look at what WordPress beings to the table. WordPress comes with the following:

  • User management – This includes login/logout, password management, and the application’s access control list (ACL). The ACL allows the WordPress administrator to limit access to certain functionality by the class of the user. 
  • Content management – WordPress manages articles and pages. It comes with an advanced content editor, aids the writer by creating the URL of the article/page, and provides for categorizing this content.
  • Widget management – The core functionality allows the WordPress theme developer to add places for widgets. WordPress comes with widget management. 
  • Theme management – The theme is separate from the core WordPress code so it can be changed with a click of your mouse. The theme developer can take advantage of the core functionality and build the theme to be responsive to the user’s needs.
  • Plugin management – One of the principles of WordPress is that no one is to be able to edit the core source code. To extend or modify WordPress, a developer can create a plugin that will interact with the WordPress core system. It is done this way to prevent community updates from overwriting any changes, the user may have made, to the core source code.
  • URL management – When you look at a WordPress website you will see the base domain followed by the article name. WordPress uses the article name to fetch the content you would like to see. This is done by a software router.
  • Add data types – This means a developer can add a data type for whatever is needed. Let me give you an example. Let’s say you have a website that is a mix of articles and business listings. WordPress does not come with a way to manage business listings, however, that functionality can come in the form of a plugin that adds that functionality and creates a data type of business. In essence, by extending WordPress, it has taken on another role that makes it more like a browser-based application.
  • Control panel – All the functionality and features can be accessed via the WordPress control panel.
  • Community – WordPress is made up of a community that manages the source code and the on-site documentation as well as the off-site documentation.

Let me give you 3 examples of the WordPress documentation:

  • WordPress Codex – This is the table of contents that covers : 
    • What You Most Need to Know About WordPress.
    • Learn How to Use WordPress.
    • Working With Themes.
    • Write a Plugin.
    • Give Back.

 You can find the WordPress Codex here.

  • WordPress Theme Handbook – Covers everything you need to become a WordPress theme creator. You can find the WordPress Theme here.
  • WordPress Plugin Handbook – If you are interested in learning how to modify or extent WordPress functionality, they have written a handbook that can get you where you want to go. The WordPress Plugin Handbook can be found here.

As you can see building from scratch must be analyzed so one does not create a project that unnecessarily duplicates what might already be available. 

There are times when building from scratch is the only real solution. Recently I had the pleasure to review a web application that was created to run a multi-million dollar manufacturing business. I’m guessing they spent hundreds of thousands of dollars building this application. I think it was a wise move.

Reusable Code

If the idea of creating a website from scratch is to create a codebase that can be reused, this code must be well thought out and be very modular. Creating truly reusable code is an advanced skill. 

I would recommend following the Object-Oriented Programming (OOP) design pattern. Doing so will allow the developer to create modular code that can easily be reused. 

I would also recommend implementing the design pattern Model View Controller (MVC). MVC is a great way to structure one’s code/project. It makes the code base more understandable and easier to maintain. Another benefit to MVC is it makes it easier for more than one programmer to work on the project at the same time. 

In Conclusion

There is a lot to consider when one sets out to create a website. Should you use what is already available or build from scratch? 

When considering building a website or web application from scratch, I would recommend researching the alternatives before you make a decision.

Why You Should Never Use a Website Builder

There are more disadvantages to using a website builder than there are advantages. There is a lot to know about building websites.

Should I use a website builder? There is several reasons not to use a website builder when creating a website. The main reason is you cannot move your website – you will be held hostage. If your website is important to you or your business, you should consider an alternative.

A lot goes into building a website. Buying a domain, obtaining hosting, choosing a platform to build your website on, the look and feel, writing content, and Search Engine Optimization (SEO).

I’ve been building websites for over 20 years. Here are my thoughts on when to and when not to use a website builder.

When it is OK to Create Your Website Using a Website Builder

I’m not completely against using a website builder. There are limited number of reason to use a website builder.

If you can answer yes to each of the following questions, you could be a candidate for a website builder. Even if you can say yest to every question, I would still take the time to consider the alternatives which could be helpful in the future.

  • Do you want to have a website that consists of just a few pages – something like a brochure website?
  • Are you reasonably capable of creating something visually appealing?
  • Does ranking on the search engines such as Google not matter to you?
  • Will you direct your own traffic to your website?
  • Is site speed not important to you?
  • You will never want to move your website to another host?
  • You do not have any long term plans to expand your website. 

If you answer no to any of the above questions, I would recommend evaluating other options. 

The Disadvantages to Using a Website Builder

There are several reasons not to use a website builder. Below is my list.

Your Website Will Be Held Hostage

Website builders consist of the web hosting, the builder itself, and the visual layer – what your visitor sees. They are proprietary and specific to the builder themselves. This locks you into one provider. You lose control and must work within the parameters they provide or dictate.

This type of arrangement may seem good at the moment, however you have to ask yourself can your provider be bought out and the builder neglected? What happens if the host company decides they are not going to support their builder any further? What if the hosting becomes slow? Lack of support, show servers, and phased out products occur. 

You own your content, and the hosting provider owns the hosting and the builder. The builder and the hosting are tightly coupled. You cannot just move your website. You can take your content elsewhere, however you will need to rebuild your website from scratch on the new platform. There is a good chance your website will drop in ranking on the search engines, at least for a while, if it ranks at all. It might take a year or longer to recover from a move.

So why take the chance?

Website Design Considerations

If you are a talented website designer the world is your canvas, however for the rest of us we need the help of a professional designer. I must say I have seen some amazing websites created using a website builder, however those were created by very talented people. 

When using a builder, one must conciser the design aspect of the website. If you have an eye for design then this will not be an issue. 

Remember you will not be able to take the design with you.

Potential SEO Issues

I’m not convinced that website builders will entirely kill your SEO, however I do believe they can hamper your SEO and potentially keep your website from getting any real organic traffic from the search engines.

Here is some of the SEO features that are limited or missing.

  • Sitemap – Some builders create a sitemap, however you do not have access to it.
  • Robots.txt – They may provide it however you have little or no access to it and no ability to modify it. 
  • Ability to configure redirects – If you ever want to rename an article or remove it you will have no way to relay that to Google or any of the other search engines.

You may need granular control of your website that builders do not provide. This could come at a price, especially if SEO and organic traffic is of importance to you.

Host on Their Web Servers

I’ve already mentioned the tight coupling of the builder and the hosting. This is a potential problem. I’ve already mentioned some of the potential issues and wanted to talk a bit more about this potential problem.

The big hosts put thousand of websites on each server. And some host do not do load balancing, some do. When I use the term load balancing I taking about the mix of websites on a server and how they utilize resources. Most websites use a small amount of server resources. Others may use a lot of resources. If your website is on a server that is overloaded with sites that are using a lot of resources, the server may slow and in turn your website may slow. 

The solution is to have a mix of low utilizing websites with some resource intensive websites so the server is not overtaxed and therefor does not slow. 

Believe it or not speed is an SEO factor so you want to be aware of your website’s load speed.

Another thing to consider is what happens if your website starts to get a lot of traffic. If you are using a builder your website is tightly coupled to your hosting and you may not be able to move to a faster server. This is could be problematic, or even catastrophic. 

The Alternative to Website Builders

I assume since you are wanting to build your owe website you have a limited budget. I have a solution. You can build a website on a budget without painting yourself into a corner. Let me show you how.

I world recommend using WordPress. This will give you more options and can scale with you and will run on most hosting company’s servers. A lot of the hosting companies claim to specialize in WordPress. In reality WordPress will run just fine on most Linux web servers that run the PHP programming language. 

I called several hosting companies to gather information on their website builders vs hosting with WordPress

HOSTPLATFORMCOSTSSLBackupsPage Limit
iPowerWebsite Builder$7.99PaidNo6
iPowerRegular Hosting$7.99PaidNoUnlimited
iPowerWordPress Hosting$6.95PaidNoUnlimited
HostGatorWebsite Builder$4.99FreeYesUnlimited
HostGatorRegular Hosting$10.95FreeYesUnlimited
HostGatorWordPress Hosting$14.95FreeYesUnlimited
BlueHostWebsite Builder$7.99FreeNo6
BlueHostRegular Hosting$7.99FreeNoUnlimited
BlueHostWordPress Hosting$29.99FreeNoUnlimited

* The above information is subject to change by the respective hosting providers.

There are some points I’d like to make concerning the above table:

  1. One of the support representatives did not seem very enthused about using a website builder and indirectly said it was entry level and seemed to think web builders were not for the serious web site owner.
  2. WordPress will run on the basic hosting plan. That is what I would choose to start with.
  3. The WordPress specific plans were limited in what they allow you to do as the website owner / administrator. Compare this the regular hosting where you install WordPress onto that hosting. The regular hoisting give you full hosting access to WordPress. 
  4. The WordPress hosting plans provide a control panel that is external to WordPress. From my research I do not believe the WordPress specific hosting is worth the extra cost.
  5. On the regular hosting WordPress is installed by simply clicking a button on the control panel. A support representative can help you with the process.

Domain + WordPress + Theme + Some Customization + Basic Hosting

WordPress is pretty much SEO ready right out of the box. There is a ton of free and paid themes for WordPress.

All you need is your domain, a basic Linux hosting plan, WordPress, a theme, and some customization.

If you search YouTube you will probably find more than a few video’s that will wank you through every phase.

WordPress is Scalable and is Capable of Handling High Traffic Websites

I am aware of a website that gets a fair amount of traffic and contained 3000 articles that runs on WordPress. There are a lot of enterprise level websites that run on WordPress. If they can use WordPress it will meet your website needs.

Learning Curve

No mater which path you take there is a learning curve. The site builder will come with a propriety learning curve. On the other hand WordPress will come with a learning curve that is not proprietary and you can use theses kills on any WordPress website that is hosted almost anywhere.

For Those Who Want to Create Their Own WordPress Design

There are several WordPress theme builders like DIVI. The cost is low. You can expect a learning curve. 

Opportunity Costs

Using a website builder over the alternative of WordPress comes with some opportunity costs. 

  1. You will not be able to move your website. You are married with your host no mater what. 
  2. Getting help will probably be limited to your hosting provider, while there a many WordPress meetups and support groups. And there are a lot of YouTube tutorial videos.
  3. Websites created using a website builder will have limited SEO options.
  4. Several of the hosts limit the number of pages your website can have. If you want organic traffic to your website you will need a lot of content on your website. 

In Closing 

After a close look it is clear that a website built using a website builder will cost about the same as building a website using WordPress. 

The builders look nice, especially if you have design chops. You may achieve the same effect on WordPress by using a template builder like DIVI. 

For me I want the option of moving my website. The website builder limits your options. While using WordPress might be a little more complicated it is well worth it if you want to build a robust website that you hope will be visited. 

The website builder, in my opinion, should be limited to the small brochure website that the owner does not have any plans to expand.

There is a lot to know when it comes to the anyone wishing to create a new website. I hope this article provides answers and helps you decide what to do – should you use a website builder or take another path.

I wish you the best in your endeavors!!

Is It Worth learning PHP in 2020? – Everything You Need to Know

I would wholeheartedly recommend learning PHP in 2020. PHP is widely used, is in high demand, provides a lot of opportunities, and the compensation is good. 

Learning PHP in 2020 would be worthwhile for many reasons. PHP is the most popular server-side scripting language on the Internet today. WordPress, Drupal, Joomla, and Magento were all created using PHP. Add to this PHP was first published in 1994, making it very mature.

The Internet has been exploding for a while and will continue to expand for years to come. PHP is widely used and is in demand. With the recent closure of many businesses worldwide, some are thinking those businesses will adapt by moving more of their business to the web. Based on that some are thinking there will be even more demand for PHP developers.

Why is the PHP Programming Language Relevant Today

As you may know, about 80% of the websites on the internet run PHP. PHP is very relevant today and will be in heavy use for years to come.

Here is some of the reasons Learning PHP in 2020 is worthwhile: 

  • The PHP language is very mature – The PHP programming language has been around since 1994 and has matured into a language that is the most widely used server-side scripting language. PHP is a modern language with many modern features such as Object-Oriented Programming (OOP) functionality. 
  • PHP 7 brings a lot to the table – Version 7 is much faster than PHP 5. Some of this has to do with the restructuring of PHP to make it more efficient. Add to that PHP 7 comes with OpCode caching which improves performance as well. The PHP community is always looking for ways to make PHP even better.
  • PHP is the most widely used server-side scripting language – PHP runs on the server, hence server-side scripting. PHP is the most popular server-side scripting language.
  • PHP is secure – Let’s face it, the Internet is a hostile place. The PHP programming language has a lot of security infrastructure built into it. This makes it easy to secure your application. 
  • PHP is Open-Source and free – This means not only is it free, but you can also inspect the source code, and modify it as you like. PHP is a package that can be installed into Linux rather easily. The entire stack is Open Source and free. That being HTML, Cascading Style Sheets (CSS), JavaScript/AJAX, PHP, MySql, and Linux. They are all Open Source and free.
  • PHP can connect to and use many different databases – The most widely used database is MySql. MySql is both free and Open Source. Some of the other databases PHP can work with are PostgreSQL, Oracle, Sybase, and DB2. This opens a lot of doors to being able to use business data on the Web.
  • Some of the most popular web applications were created using PHP – WordPress, Drupal, and Joomla were created using PHP. WordPress holds the most market share at around 30%. An eCommerce, WordPress plugin, WooCommerce is the fastest growing eCommerce solution. WooCommerce was created using PHP as well.
  • PHP hosting is available everywhere – All the major hosting companies offer PHP as part of their hosting plans. You will have your pick of Godaddy, Bluehost, HostGator, and many others.
  • Community support – The PHP community is huge. It only makes sense given it is so widely used. Throughout the world, there are many support groups for PHP. Even the Linux user groups are willing to lend a hand. 
  • Great documentation – PHP’s documentation is as mature as PHP is. The manual is available for each version of PHP. The manual contains user comments with a lot of examples. If the user manual does not satisfy your needs, the Internet is replete with an overwhelming number of tutorials and examples.
  • PHP developers are in high demand – With the expansion of the Internet, PHP developers continue to be in high demand. Word on the street is that due to current events, businesses are increasingly shifting to the Web, leading to an increase in PHP usage.
  • PHP is easy to learn – There is a learning curve if you need to learn the full stack of technologies that come together to host and create websites and web applications. However each is easy to learn and, the good news is, you do not need to know everything to get started.
  • The barrier to entry is low – With all the free tutorials, free software, and how easy it is to learn, becoming an entry-level developer is easier than it used to be. I’m reading and hearing stories of self-taught developers getting entry-level jobs. If you want to go a little further you can become an entry-level developer by attending a 3 or 4-month boot camp. Back when I got started a 4 year degree was required. 
  • Pay and benefit packages are decent to lucrative – An entry-level PHP developer might start at around $40,000 to $50,000 a year plus benefits. A seasoned PHP developer might be able to fetch over $100,000 a year plus a lucrative benefit package.
  • Work remote – With modern technology working remote is always a possibility. To work out of your home office all you need to pay for is a laptop and an Internet connection. And the laptop might be provided
  • Learn PHP so you can complete your projects – In 2000 I learned to create interactive, data-driven websites so I could launch my website. It was not until 2006 that I went out on my own as a freelance PHP programmer and offered my services to others. You may find yourself in the same position. In my opinion, PHP is the best server-side scripting language for the Do-It-Yourself (DIY) web developer.

Disregard the Naysayers 

Some people throw rocks at PHP. I would not listen to them. Look for the proof in how PHP dominates the Internet. All languages have their pros and cons. PHP is no different. 

Some say PHP is a dead language. They do not know what they are talking about. I’ve seen Internet programming languages come and go, while PHP stays steady. 

Some Say You Should Learn Other Languages

I disagree. The PHP ecosystem is so rich and in such demand that I would not think to lean other languages would be that important. At some point, maybe yes, you will want to learn other things, however, I believe that in 2020 PHP is a really good choice. 

In the early 2000’s I used Active Server Pages (ASP) and Perl to build websites. Those two are almost gone while PHP is going strong. 

You will see other programming languages being used for web application building, such as C# and Java. C# is a Microsoft product and Java was created by Sun Microsystems which was acquired by Oracle in 2010

I am not a fan of using any language for website building other than PHP. I prefer staying with the full-stack of Open Source software in my web developer efforts.

I believe the PHP ecosystem is so rich you will need to specialize and you will be able to ride that niche for years to come. Don’t try to be a jack of all trades which causes you to become the master of none. Go deep.

Let’s look at one example. Take WordPress and it’s plugin WooCommerce. WordPress holds about 30% market share while WooCommerce is exploding. The move to the web has been going strong for a while. Given current events with all the business closures, some are thinking there will be even more of a push to do business on the web as businesses begin to adapt to being less brick and mortar and more online.

If you take up the combination WordPress and WooCommerce you could be going strong for at least a decade and maybe longer.

Learning Local

Of course, if you are going to learn how to program using PHP you will probably need a local development environment. You can use any number of localhost development environments such as XAMPP. There are many.

Summing Up Why PHP is Worth Learning in 2020

PHP is a very mature language that is here to stay. The most popular web applications are written in PHP, such as WordPress and WooCommerce. The demand for PHP developers is high and will remain so for years to come. PHP is free and easy to learn. There is a ton of references on the Internet, including the PHP manual. Pay and benefits are decent to above average.

In my opinion, learning PHP in 2020 is well worth it. 

Happy hunting!!