Is PHP a Good Career Choice?

Image : Is PHP a Good Career Choice?

If you are looking for a good career, becoming a PHP programmer could be a good choice. The demand is high, the pay is decent, and there is a lot of opportunities. 

PHP is in high demand. About 80% of the websites and web applications on the Internet use PHP in some fashion. The barrier to entry is low given PHP is Open Source, easy to learn, and there is a lot of free tutorials. And don’t forget the pay is decent as well.

I like PHP because it is easy to learn, is in high demand, pays well, brings with it interesting projects, and provides a rich career path. Let me explain.

Opportunity

As stated above PHP powers, at least to some degree, about 80% of the websites on the Internet.

Here is a shortlist of some of the web applications that were created using PHP.

  • Frameworks – There is a lot of PHP frameworks, such as CodeIgniter and Laravel.
  • WordPress – This application makes up about 30% of all the sites on the internet. It is classified as a Content Management System (CMS).
  • Drupal – Drupal is also a CMS plus more. Drupal can be used to build robust applications. This is enterprise software. 
  • Joomla – Is a minor player with a small market share. Joomla is a CMS.
  • eCommerce – You have probably seen the movement from brick and mortar to the web. Ecommerce skills should continue to be in high demand for years to come.
  •  WooComerce – This is a plugin for WordPress and is experiencing wild growth.
  •  Drupal Commerce – You can build an eCommerce website using Drupal and an eCommerce module. This is an enterprise solution that comes with a serious learning curve.
  •  Magento – Magento 2 is a one size fits all shopping cart application that is very feature rich. Magento has both an Open Sourced version and a licensed version.

PHP is a Mature Language

First launched by Rasmus Lerdorf in 1994, the PHP programming language has matured since those early days. PHP has grown to become the most widely used server-side scripting language in the world. PHP is robust and can handle high traffic websites. 

As an example of what PHP is capable of, Facebook started as a PHP application, and still uses PHP to this day.

PHP is Open Source and Free

PHP is free to use and its source code is made available for free. You can download the source code and modify it if you like.

PHP is native to Linux and is widely available by the major hosting providers. 

Compensation

Compensation is not tied to the region as one would think. If you are willing to work remote, you may be able to live in a region that has a low cost of living while reaping the benefits of working for a company that is located in one of the higher paying countries. 

My experience has been different though. Developers from regions that have a low cost of living are usually willing to work for less.

What I am seeing is, programmers from places like India are willing to work for much less than your garden variety United States developer.

A freelance PHP developer from India might be willing to work for as little as $15 an hour. A United States developer might want $125 an hour and the rates can go higher.

In the United States, an entry-level PHP programmer who is an employee can expect $40,000 to $50,000 a year plus benefits, while senior PHP developers can fetch as much as $100,000 a year plus benefits.

Freelance Consultant vs W2 Employee

A freelance worker is one that is an independent contractor. They set their hours, pay their taxes, and pay for their benefits. Their hourly rates are usually higher because they do not get benefits.

An employee is usually provided with everything they need, such as a computer, phone, and desk. An employee will more than likely receive at least some benefits such as sick leave, paid time off, and health insurance. 

Region Where You Live

All regions of the world, for the most part, use PHP and have some level of PHP talent. It does not matter where you live if you have decent PHP skills because you can always work remotely. 

Remote vs Onsite

There are three arrangements you can expect.:

  • An employee working onsite – You show up to work at a prescribed time, go to lunch as scheduled, and leave work at the end of your workday. Most everything is provided for you.
  • An employee working remotely – Much like the onsite worker everything is provided for you. Your employer might provide you a laptop as well. The real difference is you will be working from your kitchen table for your home office.
  • A freelance developer working remotely – This is a contract worker. One who has regular work from one or more companies or is a gig worker that takes on serial projects on a contract basis. This person sets their hours and provides for their benefits. A freelancer must wear may hats, such as marketing, sales, accounts receivable, accounts payable, and skill-building on top of completing projects.

The Full-Stack

PHP does not live in a vacuum. As a PHP developer you will be working with:

  • HTML – The skeleton or bone structure of web pages.
  • Cascading Style Sheets (CSS) – Defines the layout and style of web pages. 
  • JavaScript/AJAX – Makes web pages interactive and provides for a way to talk directly with the hosting server.
  • PHP – The programming language we are looking at.
  • MySql – The data engine. 
  • Linux – The operating system of the webserver.

How to Get Started

Becoming a PHP programmer comes with a serious learning curve. PHP itself is easy to learn as is each of the related technologies that are used along with PHP. Collectively there is a lot to know. 

The good news is you do not need to learn it all at once. If you have some programming skills you might be able to pick up the basics in 10 or 20 hours. 

I recommend learning HTML first. Then move onto PHP and MySql.

I already had programming experience when I started learning PHP. I figured I needed to know how to do 6 things, to begin with, and expand from there. Here are the 6 concepts I started with:

  • Create a PHP/MySql database connection – Basically, I searched the manual for how to create a connection. Then I created it and tested it.
  • Create a Record – I hardcoded an insert to add a record to the database table I had created. 
  •  Read a Record – I wrote a simple read query and displayed the record. 
  •  Update a Record – Added the code to modify an existing record.
  •  Delete a Record – Created a simple delete query to remove an existing record from the database.
  •  List a bunch of records – I created a simple PHP script that pulled the records in the database and displayed them.

That is how I got started programming in PHP.

You do not need to know everything to get started.

Potential Career Path

From reading this article you probably are familiar with some of the opportunities available to a PHP programmer.

There are many paths one can take. Some of the opportunities are frameworks, WordPress, eCommerce, Drupal, Joomla, and browser-based applications.

For most people I would think becoming an entry-level employee would provide a great learning opportunity. Once you have 2 or 3 years under your belt, the world might be your ouster. 

After that one can become a freelance developer and run a business out of your home.

Conclusion

As you can see there is a lot of demand for PHP developers starting with the entry-level employees to the seasoned developers who have decided to freelance. 

Compensation and befit packages are decent as well. PHP is being used in about 80% of the Internet websites and this is not going to change in the short term.

There is a lot to know, however you do not need to know everything to get started.

I’ve been a freelance PHP developer since 2006. I am glad I chose PHP as a career path. If you have a passion for web development, you will probably be as satisfied as I am. 

I wish you the best in your career pursuit.

How Long It Will Take To Learn PHP – An in-Depth Guide

Image : How Long It Will Take To Learn PHP

If you are looking into becoming a PHP developer you might wonder how long it will take. The time it will take to learn PHP is a function of your starting point.

It might take a nonprogrammer 6 months to learn the entire PHP ecosystem to the point they can be productive programming in PHP. On the other hand, someone with programming skills that has some website development experience may need just a few weeks to get started. 

The amount of time it takes to learn to program in PHP depends on two factors. 1) Your programming skill level and 2) your level of knowledge of website development.

Let’s dig a little deeper.

Becoming a PHP Programmer Requires Other Related Skills That Take Time to Learn

If you are interested in learning to program in PHP you probably already know the ecosystem consists of multiple layers. To become an entry-level PHP developer one must have a basic understanding of how the following technologies work:

HTML – The skeleton web pages are built on. You will need to know this so you can build websites.

Cascading Style Sheets (CSS) – What gives your web pages their look and feel – their styling. As a developer, you do not need to know CSS to the degree a web designer needs to know CSS.

JavaScript – Gives you the ability to make your website interactive. Knowing JavaScript is a must. You do not need to be an expert however you will need to know a lot.

PHP – The programming language this article is about.

MySql – The data engine that makes your website data driven. Every website/web app you work on will more than likely require you to use MySql and the Structured Query Language (SQL).

Linux Hosting – PHP is native to Linux and you will need some sort of development environment that runs Linux.

Development Environment – To make things easy I suggest you get the basic Linux hosting package at Blue Host. This will make your life easier and will allow you to learn about hosting and hosting providers.

Code Editor – I recommend you start with Video Studio Code. This editor is free, and easy to learn with lots of online tutorials, and will allow you to edit your code remotely, or right on the server in real-time.

How Long Will it Take to Learn to Program if You Are a Complete Beginner

You will need to develop some core programming knowledge. Below is a list of some of the things you should understand before you start trying to learn PHP:

  1. Programming logic.
  2. Working with variables.
  3. Control structures.
    1. Loops – such as while loops.
    2. Conditions – such as if/elseif/else statements.
  4. User-defined functions.
  5. How to work with arrays.
  6. Manipulating Strings.

And there is much more. Learning how to program by itself is a 3 unit college course that requires roughly 50 hours of classroom time. On top of the time you will spend in the classroom there is homework that will add to the time required to learn to program.

If you are self-studying I estimate you might learn enough in about 20 or 30 hours to get you started, if you follow a good tutorial.

How Long Will it Take to Learn PHP if You Have Programming Skills

If you have some simple programming skills you will need to learn the following:

  1. HTML might take as little as 6 hours to become familiar with the fundamentals. This includes hands-on.
  2. Cascading Style Sheets might take as little as 4 – 6 hours to learn the fundamentals.
  3. You can jump over JavaScript, for now, however, this is a skill you will need in the future.
  4. To become familiar with PHP might take 10 – 20 hours. It will take much more time to become proficient to the point you can call yourself an entry-level PHP developer.
  5. You will need familiarity with the MySql data engine/Structured Query Language (SQL). If you are learning about databases for the first time, MySql and SQL might take at least 10 hours to learn and might take more like 20 hours to include hands-on.
  6. You will need a development environment. My suggestion is to get a basic Blue Host hosting account. This will benefit you in two ways. It will expedite your learning since you will not need to learn how to install a development environment. And you will learn a bit about web hosting. It might take an hour or two to become familiar with your hosting/development environment.
  7. You will need to know the basics of how to use a programming editor. I recommend the free editor Visual Studio Code. This editor will allow you to edit code remotely. Meaning you can edit code directly on the server. You will probably need to spend at least 2 hours learning how to use the editor. 4 to 6 hours is more realistic.

This adds up to 35 – 60 hours of studying and hands-on. Don’t be surprised if it takes longer.

How Long Will it Take to Learn PHP if You Are an Experienced Website Builder

If you already know most of what I have already talked about you might need to spend 10 – 20 hours becoming familiar with the basics of PHP. This is probably not enough studying to become a PHP developer, however, it is probably enough to get you on your way.

How Long Does it Take To Become An Entry-Level PHP Developer

There is a lot to know to become an entry-level PHP developer. You will need to know all the above plus how to secured applications. Depending on what you are going to be doing you probably want to go beyond what has been listed. For example, you will need to know Object Oriented Programming (OOP) in PHP.

I would spend a very minimum of 30 hours learning OOP in PHP to include a lot of hands-on.

If you are new to programming I’m thinking you will want to spend at least 100 hours of learning and hands-on to get to this point.

If you look at the time required to complete a programming boot camp, you will discover these courses may span 4 months of 60 plus hours a week. These courses are extremely intense. It may take upwards of 1000 hours to complete this type of course. These courses are intended to develop the skills necessary to be able to compete for an entry-level programmer job.

How Long Does it Take To Become A Mid-Level PHP Developer

By the time a developer becomes a mid-level developer, they have added some additional skills and a couple of years of full-time PHP developer work along with some self-study.

The additional skills a mid-level developer should probably have is stuff like dependency injection, composer, autoloading, namespaces, and some Linux hosting command line and troubleshooting skills.

How Long Does it Take To Become A Senior-Level PHP Developer

I think a senior-level PHP developer should know everything a mid-level knows. Add to that a senior developer might need to have some familiarity with things like Domain Name Service (DNS) and concepts like SPF and DMARC.

It might take a PHP developer 6 to 10 years of hands-on development along with some self-study to become a senior-level developer.

How Long Will it Take to Learn Just the Core of PHP

You can learn PHP without learning the above technologies, however, your PHP programming skills would only allow for server administration. And even that would be limited.

Learning just the core of PHP might take a few hours a day for about a week to gain a basic familiarity with PHP.

Conclusion

As you can see there is no straight forward answer to how long it will take to learn PHP. It depends on where you start and how far you want to go.

I hope this helps and I hope you enjoy your journey in learning to program in PHP.

What is a Web Application?

Image : What is a Web Application?

Web applications are widely used, however, I think most of us do not recognize them even when we are using them.

A web application runs in a web browser. It is just like a program that runs on your computer or an app that runs on your phone. The difference is a web app runs in a browser so there is nothing to install, just point your browser to the web application and you are off and running.

There are several types of web applications. The nice thing about a web application is all you need is a modern browser and the address of the app and you are off and running. 

I ‘ll explain what a web application is, what are the advantages and disadvantages, and what is required to build and run a browser-based application. I will also cover who creates a browser-based application.

More Information On Web Apps

A web application is a software package that was created to perform a task or a group of tasks for an Internet user. This is an overly simplistic and broad definition.

When I think of a web application I think of a banking website. You are able to log in and manage your banking accounts, apply for loans, etc. Another example might be purchasing tickets for a concert using a browser-based application – a website that sells tickets, such as Ticketmaster.

Types of Web Applications

  • Applications that help us do things – When I think of web applications that help me do something, the first thing that comes to mind is a mortgage calculator like the one : Online Mortgage Calculator [martasset.com/mortgage/mortgage-calculator]. Google docs is an example of a suite of applications that help us do things such as create text documents or spreadsheets.
  • Applications that aid us in doing business – Registering for college online is a web app that helps us with a business transaction. The banking example I mentioned above is another example.
  • Applications that help us run our businesses – Recently I spoke with the owner of a million-dollar business. He was using a PHP web application to run his business. The application was run from a server that was public-facing so it was accessible from inside the business and outside. Great concept.

What Goes Into Creating a Web Application

This part gets a little technical, it’s okay if you do not understand some of this. In a nutshell, an Internet programmer creates browser-based applications.

In more detail, an Internet programmer such as a PHP programmer creates web applications. He or she would use a JavaScript library such as jQuery, to create Ajax routines to make the web application interactive. Add to this some Cascading Style Sheets (CSS) to make the application mobile responsive and it will run on any device that has a modern browser. The application will also need a database and a hosting platform.

A web app can be as interactive as a computer or phone application.

Multiple Layers of Technology

  • HTML – This is the bone structure of each web page. HTML is the foundation or starting point.
  • CSS – Cascading Style Sheets is what gives your website it’s look and style. Think design – things like defining color, location, font, etc.
  • JavaScript – JavaScript gives the web app its interactivity. JavaScript runs in the web browser. Each web browser has it’s own JavaScript interpreter. Since each browser uses a slightly different interpreter, JavaScript is quirky. To resolve this issue a number of JavaScript libraries have been created.
  • Server-side programming language – There is a number of programming languages that are in use today. I am a freelance PHP developer so I use PHP. There are others such as ASP.NET (C# or Visual Basic), Java, Python, and Ruby. 
  • Data engine – MySql is very mature, is very feature-rich, and is the most widely used data engine on the Web. Microsoft has its’ data engines, however, for web work, I like to stick with MySql.
  • Linux – Is very popular and is used on desktop computers as well as on web servers. Linux is the most popular web server operating system. Microsoft has web servers also. For web work, I like to stick with Linux web servers.

For building browser-based applications I like to use Open Source products. That is HTML, CSS, JavaScript, PHP, MySql, Linux, and Apache or NGINX.

Private Intranet or Public Internet

Some browser-based applications are run on a private network that is called an Intranet. These networks are not reachable from the outside or what they call non-routable – they are private.

The Internet itself is routable. Some of these apps are hosted on the Internet which means they are accessible by everyone on the internet.

Each configuration has its pros and cons.

The Internet is a hostile place. If there is no need to make your web application accessible via the Internet, then running it on a private network would make more sense.

As businesses increasingly allow their workers to work remotely, making their application public is probably worth the risk.

I recommend you consider which configuration you need before launching your web application.

What are the Advantages

The main advantage is the browser-based application runs in a browser and therefore does not need to be installed. A phone app needs to be installed as does the software that runs on your computer.

For example, say you work for a company that has 600 employees and each has a Windows computer that they use daily. In the old days, we would build an application that would require it to be installed on every computer. Installation is difficult and time-consuming.

And this is a reoccurring process. Periodically, those desktop applications will require updates that will need to be installed on each computer as well.

In contrast to a computer or phone application, the browser-based application does not require installation. It runs in a browser that is already installed on your device. All modern devices have a browser.

To utilize the web app, all you need to do is point your browser to the web application. Simple!

What Are The Disadvantages

I cannot think of any disadvantage to building and running web apps. There are a couple of areas of concern and one is security. The developers need to be security conscious when creating the application to ensure it does not get hacked, especially if it is publicly facing.

If I were to state a disadvantage that would be building web applications requires an extensive skill set given the layers of technology that must come together when building and running a web app.

I think the benefits of utilizing a web application far outweigh the disadvantages.

What is the Difference Between a Website and Web Application?

The main difference is a web application is interactive and helps one do things. A website, on the other hand, is a collection of content.

I keep bring up your bank’s browser-based application that helps you bank online. This is a classic web application.

The website you are currently on is a website. This website is a collection of articles (content).

Conclusion

Web applications run in a browser making them available to any device that runs a modern web browser. A web server is needed to run a web app. A web programmer is the one who creates and upgrades the browser-based application. These applications can run on a private intranet or the public Internet. The advantage of a browser-based application is it does not need to be installed on every device that will be running it and there are no upgrades to be installed on your device either.

The only concern I have when it comes to web apps is security. The Internet is a hostile place.

The Gig Economy for the PHP Programmer

Image : The Gig Economy for the PHP Programmer

The gig economy is still emerging. It is really this silent phenomena that no one is aware of and is hard to track or measure. It is a shift from skilled labor being employed to being self employed. Think of this as skilled labor from film makers to accountants, to programmers and all the skills in between. Skilled labor is now becoming mostly independent – freelance workers that work on projects and independent contractors, working serial projects.

What is the Gig Economy

The gig economy is those who are self employed. The one man band. This excludes small businesses and entrepreneurs. Entrepreneurs start companies, the gig worker creates a one person business based on skills and a niche. Across all sectors of the economy, with rare exception, there are people working in a spare bedroom, on the kitchen table, or in the basement, these are gig workers or freelancers.

These independent freelancers are not part of a company – they work independently. This is the gig economy. These are skilled people who are working serial projects in their chosen niche as a way of earning a living.

According to the Bureau of Labor Statistics, [https://www.bls.gov/opub/mlr/2015/article/freelancers-in-the-us-workforce-1.htm] 1 in 3 workers were working independently in 2015. Other sources are estimating that by 2027 the gig economy will grow to a point where there will be more gig workers than employees.

What Do You Need to Become a Gig Worker

This is pretty simple, so simple you might think something is missing.

Laptop – A PHP Programmer can get by with a minimal laptop. Most of the time a PHP Programmer is creating programs in a text editor. The computer is waiting on them most of the time. A baseline Dell laptop that cost around $300.00 will do the trick.

If you can afford more here is what I recommend : I recommend a 15.6 inch screen with resolution of 1920 x 1080 or greater with the ability to drive 2 or more external monitors, 4G or more of RAM, a modern i5 or better, and an SSD drive. The SSD drive is worth the expense if you can afford it because it will enhance your computing experience and increase your productivity.

And do not forget to add a backup drive.

Printer / Scanner – At a minimum you will need to scan documents and turn them into a PDF.

Internet Connection – Self explanatory since you will be working on the Internet.

Hosting Account – This gives you the ability to build, test, and run your PHP programs. I recommend a simple VPS running Plesk.

Website – You need to be able to show prospective clients that you are in business. To start with you can put up a simple WordPress brochure site. Then you can start blogging.

Skills – Believe it or not you can start with some very simple skills. PHP, CSS, HTML, and some JavaScript / Ajax. Then as you progress build out your skills.

Passion – If you want to become a freelance PHP Developer you need passion. You need to be a self starter and you have to be a go getter.

Finding Your Niche

Being self-employees means you cannot be all things to all people. You must find your niche. The place to start is with the following 3 areas.

Inherent Skills and Abilities – What where you born to do? What comes natural to you and fits you like a glove?

Passion – What are you deeply passionate about? Are you passionate about building web apps, working on WordPress, Magento, WooCommerce? Do you get excited about Linux Apache MySql PHP CSS JavaScript / Ajax?

Experience – What experience do you have? This does not necessarily apply to employment. What have you done on your own? For example, building WordPress plugins on your own can be just as beneficial as working as an employee doing the same thing. Being a self starter and showing some passion might trump working for a company doing the same thing. I like to see passion and self starters.

Marketing Plan

To me there is three ways to market my skills as a freelance PHP Programmer.

Networking – Attend Meetups and get a membership in your local Chamber of Commerce. I’ve known two people that were very effective using the Chamber of Commerce for getting business.

Advertising – My least favorite. Google Adwords is probably the main form of advertising on the web. It is very expensive and requires building specific skills for Google Adword marketing.

Organic Search Results – Search Engine Optimization. This is the long game. It might take months or years to get to a point where your website is generating a lot of business leads. This is my favorite since, in the past, I have had some success with this form of advertising.

Difference Between Gig Work and Being an Employee

There is a huge difference between an employee and a freelancer. A freelancer does all the things that pertain to their business. This includes marketing, sales, bookkeeping, and working their projects.

My marketing professor at the university taught that 35% of everything is marketing. That means money and time. You can expect to expand some time every week doing marketing. This needs to be a regular part of you business.

As a Freelance PHP Programmer you may spend 4 or 5 hours a week on sales, which consists of:

  • Talking with prospects
  • Analyzing projects
  • Estimating what it will take to complete the project
  • Preparing a contract or a statement of work
  • Presenting that statement of work
  • Getting it signed
  • And collecting your first payment for that project

You will be your own Network Administrator. You are solely responsible for making sure your Internet connection is always working. This includes configuring your Internet equipment. I recommend a business class Internet connection. It may cost you as little as $20 a month, however it will come with business response versus residential support which is not as responsive. In my case I am able to run a server, I have a dedicated IP, and the response time is minutes versus residential which could be hours to days. And because I am working out of my home, I get business class service at a discount. I literally pay less than $20 more a month for business class Internet service.

If, like me, you home office, your work environment is always right there so there is not real break from business to home. You will have to make an effort to separate the two. That breaks both ways. Overworking or being distracted.

Medical Insurance is an issue if self employed. You will pay the full premium yourself. You are both the employer and employee.

You will more than likely need the services of a Certified Public Accountant.

Serial projects and at times no projects. Can be feast or famine. If one does not have enough projects in the queue one might need to take on projects they would rather not.

When there is enough work the money is good. When projects are scarce the money can be lacking.

Freelancers must be about there work and be diligent to ensure their reputation is kept clean. One’s reputation in the market place could make the difference between earning an above average income and literally starving.

Keeping Your Skills Sharp and Up to Date

You will need to keep your skills sharp and up to date with the changes in your industry. You will not have anyone to help you in this area. Set aside some time on a regular basis to work on skill building. This is not limited to programming skills, there are other skills to master such as time management and marketing.

No Submarine Mode

This is a big one. Staying connected is hard when you home office. I’ve not gone into submarine mode where I cut myself off from the entire world, however I tend to be reclusive. What is the solution? Join a few meetups. Join your local PHP group and at least one other group such as the group that’s in your niche.

What Should You Charge?

Over the years I’ve watched the market and how projects are priced. I have little experience with craig’s list, however it looks like a place where projects might be set at $35 to $50 an hour. I’m not discounting these, especially if you are just starting out. If you are just starting out this might be a place to get some real life experience in all the aspects of being self-employed.

In general :

  • The top end for Drupal is probably around $180/hr with $125 to $150 an hour being reasonable for a seasoned Drupal developer
  • I would expect WordPress and WooCommerce to be around $125 an hour for a seasoned developer
  • Web Apps should start around $125 an hour to about $175 an hour.
  • Developing using a framework is around $125 to $180 an hour.

Keep in mind these are ballpark and the actual value of a project depends on may factors.

How can a PHP Programmer Benefit From the Gig Economy?

There are pluses and minuses to being self employed. There are lots of hats to wear and lots of shifting gears. If you are good at this or can grow into it, you can build the opportunities you want. You can specialize in something you are passionate about. Once you find your niche and figure out the marketing part, you are golden.

You do not need to work full-time. Being a freelance developer opens the door for maximizing your income while minimizing the amount of time you work. You could very well create a lifestyle business. And location is not an issue. I know of a person who takes her laptop and phone with her on vacation to Hawaii every year. She takes one week off and works the second week while still enjoying Hawaii.

Personally I like the freedom that being a freelancer provides. Don’t get me wrong, I still work hard and long, however I do have the freedom to organize my time and efforts. I also get to pick and choose what projects I take on. In the end I would rather deal with all the hats and gears than work out of a cube. It just works for me and it may just work for you.

Conclusion

The gig economy is good and bad. In the old days, one would go to work at a company and do one thing. In this case we are talking about PHP Programmers. They would have all the resources provided so they could focus on one thing – being a PHP Programmer.

The idea of getting a job has shifted. It is not all that noticeable. If I were not an Independent Freelance PHP Programmer, I would probably be unaware of this phenomena. This movement is really under the radar.

If you are an employee your employer takes all the risk, and they provide for all your needs – you do one thing. As a freelancer you are the one responsible for everything.

If freelancing is for you it can be very rewarding.

How to Backup Your Website to AWS S3 Using The SDK

Image : How to Backup Your Website to AWS S3 Using The SDK

In this article I show you how to create an Amazon Web Services (AWS) Simple Storage Service (S3) script using the AWS PHP software developer’s kit (SDK). You can create a backup script based on this script to backup and protect your website.

70% of small businesses that have a major data loss go out of business within 6 months. That is why it is so important to learn how to use AWS S3 as a backup tool.

After learning the basics you will be able to extend this script and make a website backup script. You will want, at a bare minimum to backup the content and data of your website. I recommend daily backups that are automated with the Linux cron utility. I will leave extending the script to you.

I used the AWS SDK version 3 for PHP. I created this script on a Linux server running Ubuntu 16.04lts with PHP 7.0.x. installed.

I assume you have command line access to your hosting account.

Steps

  1. Sign up for an AWS Account.
  2. Create Your AWS S3 Credentials
  3. Create a Bucket in S3
  4. Download the PHP SDK With wget
  5. Create a File Named “stuff.txt”
  6. Copy My Script to Your Server
  7. Change The Following Values to Your Information.
    1. $version
    2. $region
    3. $bucket
    4. $credential_key
    5. $credential_secret
    6. $path
    7. $file
  8. Run the Script From The Command Line
  9. Verify the File Named “stuff.txt” is Stored in Your Bucket
  10. Enhance My Script to Meet Your Needs

Sign up for an AWS Account

To create an account, go to the S3 service page.

Then click the “Get started with Amazon S3” button.

Create your account.

Create Your AWS S3 Credentials

  • Go to the AWS Management Console.
  • In the upper right corner click your name.
  • Select “My Security Credentials”.
  • Click “Access keys (access key ID and secret access key)”.
  • Click “Create New Access Key”.
  • Take note of your two keys, AWS access key id and AWS secret access key

Create a Bucket in S3

Download the PHP SDK With the Linux wget Utility and Unzip

To make it easy, lets download the zip file using the Linux wget utility.

This is how I “get” files with wget:

  1. Change to the directory where you want to to download the file.
  2. Visit the page that contains the download link for the SDK in zip format. In this case the page is here
  3. Search this page’s source for the string “download the .zip file”. Then grab the link “https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip”
  4. Simply add “wget” to the download URL like this : wget https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip . Use this on the command line and the file will be downloaded to the directory you are working in.
  5. In the working directory you should find a file named “aws.zip”. Unzip it with the Linux command “unzip aws.zip”

Create a File Named “stuff.txt”

This is self explanatory. Simply create a file names “stuff.txt” in your working directory. You can add some text to the file if you like. This is a test file that will be uploaded to your S3 bucket if successful.

Copy My Script to Your Server

See my script below.

Change The Following Values to Your Information

$version – You can leave it as set. It is set to “latest”.

$region – This information can be found in S3. It is the region of your bucket. Complete list of regions.

$bucket – This is the name of the bucket you created.

$credential_key – This is the credential key you created earlier.

$credential_secret – This is the credential secret you created earlier.

$path – The complete path from the root of the server to include the directory where your backup file located (stuff.txt).

$file – This is the name of the file you created.

Hard Coding Your Credential into the Script

Hard coding your AWS credentials is not the preferred method and is not secure. Ways to secure your credentials 

Run the Script From The Command Line

My file is named basicS3Backup.php. To run it from the Linux command line enter the command “php basicS3Backup.php” and press enter.

Verify the File Named “stuff.txt” is Stored in Your Bucket

After running the script you should see a file in your bucket. If you named your file “stuff.txt”, you will see that file in your bucket.

Enhance My Script to Meet Your Needs

As you can see this is just a basic script that uploads a simple file. To extend this into a website backup script you may want to add the following features:

  • Tar and compress your website’s content
  • Tar and compress your website’s data
  • Name each file using the date, something like YYYY_MM_DD_content and YYYY_MM_DD_data
  • Remove from S3 any files that are older than you want to keep.
  • Send an email to the backup administrator with the status of the backup once the script completes.

You may want other features, these are just some of the features I like.

The AWS S3 PHP Code


#!/usr/bin/php -q
<?php

/*--------------------------------------------------------------------*/
/*   Created by Keith Smith  :  PHPCoderUSA.com                       */
/*   Copyright Keith Smith December 12th 2018                         */
/*                                                                    */
/*   This is a simple AWS S3 file upload script.                      */
/*                                                                    */
/*   Directions can be found at  :                                    */
/*   https://www.phpcoderusa.com/how-to-php-aws-sdk-s3-upload-script  */
/*                                                                    */
/*   You are free to use this script or modify it to your liking.     */
/*   By using this script you acknowledge you will hold               */
/*   Keith Smith Internet Marketing LLC harmless for any ill effects  */
/*   from uing this script.  Also you acknowledge this script is not  */
/*   secure and requires additional work to make it viable for        */
/*   any purpose.                                                     */
/*                                                                    */
/*--------------------------------------------------------------------*/

/* --------------------------------------------  */
/* - - -   Start Configuration Section    - - -  */
/* --------------------------------------------  */

$version                = 'latest';         // Probably set to "latest"
$region                 = '<your-region>';  // See  :  https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html
$bucket                 = '<bucket-name>';  // Name of the bucket

$credential_key         = '<credential-key>';
$credential_secret      = '<credential-secret>';

$path                   = '<path-from-root>';   // Full server path
$file                   = 'stuff.txt';

/* -------------------------------------------- */
/* - - - - -   End of Config Section  - - - - - */
/* -------------------------------------------- */

require 'aws-autoloader.php';
use Aws\S3\S3Client;
use Aws\Exception\AwsException;

// Hard-coded credentials
try{
$s3Client = new S3Client([
'version'     => "$version",
'region'      => "$region",
'credentials' => [
'key'    => "$credential_key",
'secret' => "$credential_secret",
],
]);
} catch (S3Exception $e) {
echo $e->getMessage();

}

/*------------------------------*/
/* function upload_file         */
/*------------------------------*/

function upload_file($bucket,$path,$file){
global $s3Client;
$path_filename = $path.$file;
try{
$result = $s3Client->putObject([
'Bucket'     => $bucket,
'Key'        => $file,
'SourceFile' => $path_filename,
]);
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
}

/*------------------------------*/
/* upload file to S3            */
/*------------------------------*/

upload_file($bucket,$path,$file);

/*------------------------------*/
/*          E O F               */
/*------------------------------*/

Conclusion

We know backing up data is important and AWS S3 is one solution to consider. The script I provide is just an example used for learning and is not secure. I offer several features you may want to add to make this script a viable backup script.

You are free to use and modify this script for your use. If you use this script please keep in mind that by using this script you acknowledge you will hold Keith Smith Internet Marketing LLC harmless for any ill effects from using this script. Also you acknowledge this script is not secure and requires additional work to make it viable for any purpose.

Blogging for the PHP Programmer

Image : Blogging for the PHP Programmer

If you are an inspiring PHP Programmer or an old hat PHP Developer you should have a blog. A blog can help you stand out. In this article I will offer some guidance on blogging, why you should blog, types of blogs, doing research, how to rank, and much more.

Why You Should Blog

If you are trying to break into PHP Programming, a blog may help you do so. If you are a seasoned PHP Programmer blogging may help you also. Blogging is one more thing you can show a prospective employer. It could lead to opportunities that you see as unattainable or even opportunities you had not considered. A blog will set you apart from your peers. And it could be good for the community. Yes we would like to hear your perspective, hear your opinions, and hear your ideas.

Types of Blogs

You can blog for one or more of the following reasons :

Inform – You may want to help people understand or you may want to influence them. Some bloggers share their knowledge and expertise. This is a great way to contribute to your community.

Business Leads – Blogging is a great way to create a way to generate business leads. Organic search is a great marketing plan for your business.

Become seen as an authority – As you write more and more and share your knowledge you will become an authority within your niche.

Influence – Blogging is a great way to influence. Taking your experience, your ideas, your vision, and rolling them into a blog is a great way to begin influencing your target audience.

Choose Your Niche

In the context of a PHP programmer your niche will more than likely be your area of expertise. If you are a WordPress plugin developer, that is your niche. If you are a Magento Developer, then Magento development is your niche.

Do your Keyword Research

This is where you start when starting a blog. Doing keyword research is very important when it comes to blogging. You will want to be sure to write about what people are searching for. We are taking about a blog that will further your carrier and I’ll bet you would like some organic traffic as well. When doing your keyword research you might find your niche that is inside your niche. Let me explain. Say you are a Drupal Developer. Drupal 8 comes out and you write reviews and try to influence the community. That is a niche within your Drupal Developer role. We cannot be everything to everybody, that is why we specialize and that is our niche.

Make a Plan And Follow Your Plan

Make a formal written plan. Then follow your plan. Do not allow yourself to become distracted. This does not mean you cannot modify your plan as you go, what it means is make a plan and work your plan.

Use WordPress

Now that you have performed your keyword research and determined your niche, it is time to start working on your blog. WordPress is by far that most popular blogging platform, and is very easy to SEO. As you probably know WordPress is very mature, free, simple, and does not need a lot of server resources. WordPress is ideal for blogging.

VPS Hosting and Plesk for Your WordPress Blog

VPS stands for Virtual Private Server. I am a fan of VPS that run Plesk for server administration. Great platform. One can manage the entire server from the Plesk control panel. Plesk provides for the management of your server as a mail server also. Great combination – VPS + Plesk.

11 Things You Can do to Improve Your Website SEO Ranking

In my article 11 Things You Can do to Improve Your Website SEO Ranking I share some advice from my experience. I reveal some of the secret sauce of Search Engine Optimization (SEO).

Learning the basics of how to SEO your blog will go a long way. You do not need to become a world class SEO, the whole point is to learn enough SEO so you get some decent traction within your chosen niche.

Backup Your Blog Daily

I like using Amazon Web Services (AWS) S3 storage for my backups. AWS provides a well documented PHP Software Developer’s kit (SDK). Develop a AWS PHP SDK backup script and setup a cron job to run it daily. A Linux cron job is a way to schedule a task on the Linux server. Configure a cron to run your backup script on a daily basis and save your backups for at least 90 days. Don’t forget to test your backups regularly to ensure they are working as expected.

Backing up your blog is important. Consider this. Suppose you spend 10 to 15 hours setting up your blog and then over the course of a year you write 50 articles. If you spend 3 hours per article that comes out to 160 hours of work you have put into your blog. That is a man month. Protect your investment – backup daily.

Blog Regularly

You can probably start your blog on a weekend and write 4 basic articles or pages in that amount of time. Cool, that gets you started. Then you should write an article on a regular basis. I would recommend being consistent. Write an article or two every week. And do not forget to stay focused on your niche when doing so. Make a plan and work your plan.

Stay Away From Politics

Politics in the country is out of control. We are at the brink. Side step those political issues. Stay neutral. If you are going to write about something that could become politically charged, just report the facts and do so in a way that does not reflect any bias.

Conclusion

We covered a lot of ground. There is a lot to know and do to create a successful blog. I’ve given you the advice I would give myself. This advice comes for my years as a blogger and one who has had his successes and failures with SEO and blogging. We covered why you should blog, the benefits, how to Seo your blog and which blog hosting to use and many other aspects of blogging for the PHP Programmer.

Coding Boot Camp for the PHP Programmer

Image : Coding Boot Camp for the PHP Programmer

Is attending a coding boot camp worth the time, effort and money? In this article I will try to answer these questions and I will give you my opinion. I will cover what skills you need develop to become a PHP Programmer. You can acquire these skills in many ways. I will talk about self study, junior college, the university, and coding boot camps. Each has it’s merits and it’s drawbacks.

Time and Cost

Coding boot camps can take 8 to 24 weeks depending on the institution and the number of classroon hours. They range from full-time immersion to part-time. The cost starts at $8000 and goes up from there. And you will spend at least 600 hours in the classroom and out of class studying, working on projects, and doing some hands-on.

Can one really learn enough in 8 weeks or 600 hours to become a PHP programmer? I think it is possible if one either has great aptitude or prior programming experience. Prior experience does not necessarily need to come from being employed. What it means is that maybe one has been teaching oneself how to program and has some exposure.

Last 40 Years of Programming

Matt Roloff, from the movie series Little People Big World wrote in his book that in the 80’s companies would send developer trainees to private training courses that was weeks long.

During the late 80’s I met a man who told me he majored in mathematics so he could become a programmer. He said studying math was the only way he could get access to the university’s computer to learn how to program.

In the 80’s the local community college and universities started offering majors in Management Information Systems (MIS) and Computer Science (CS).

The interesting thing is that the MIS degree only requires 21 units out of about 125 in the core area of ones major.

In the very beginning people were self taught at the university. These were the investors. Then came the corporate sponsored training of 2 or 3 weeks to maybe 6 weeks. After that the industry required a Bachelor’s degree.

Today one can gain entrance in many different ways – self study, junior college, the university, and coding boot camps.

You Must be Self Directed and Motivated

When I go into retail businesses, the sub shop, the bank, etc, I like to ask the young people what their goals are. I’ve heard the gambit. From becoming a cop to becoming a game developer, to the University is too expensive and not worth it. The later is some great insight.

The second question I ask is something along the lines of what have they done to know this course of action is for them and what what have they have done to further their goals.

Lets take these two as an example. The guy who said he wanted to become a police officer what about 20 years old. When asked if he had gone on any ride along he said no. He has a dream with no game plan. Several years later he was still working a the same retail outlet.

The guy who said he wanted to create computer games and was waiting for school when I asked him if he was learning to create computer games. I went on to ask him if he knew anything about Linux and he said he has not heard of Linux.

The person who is going to make it is self directed, motivated, and takes the bull by the horns.

As an employer I want to hear about how someone learned by researching and doing. You need to show some initiative that shows me you really want to do what it is we are talking about and it shows you have passion.

What I recommend You Learn to Become a PHP Programmer

You can learn all you need to know online.

Linux – is the backbone of all of this. Linux is the hosting server operating system. You only need to know a handful of things to get started. You will need to be able to load Linux on a spare piece of hardware such as a laptop or and old desktop. You will not need a lot of power. I use an old Del laptop that has an i3, 4G of RAM and Solid State Devices in place of the old spinning hard drive. You need to be able to add a user. Ensure you have Apache or NGINX, MySql or one of it’s clones, and PHP installed. You may need to be able to modify the php.ini files to configure PHP.

Apache / NGINX – Add a virtual host and possibly being able to configure mod_rewrite.

MySql and Structured Query Language (SQL) – you will need to add a database, table, add a root user, and a regular user. SQL is used to create, read, update, delete and list records.

PHP – is the whole reason we are here. PHP is not a difficult language to learn. There is a number of training courses online. Basically you will need to know what variables are, their scope, how to create a function, create a classes, work with strings, understand looks, and work with arrays.

Database Normalization – This is very important. This is a must have skill. Without it you will struggle when building applications from scratch or even when modifying existing applications. Basically what database normalization is breaking the data down into the minimum data that should be stored in that table.

Lets take an invoice as example. We could make one huge tale that contained all the billing, shipping, account information and all the totals in one file along with the products or services paid for.

This is a great example because if you use one table you will store a lot of redundant data in each table. The solution? Two tables. One for the invoice header that contains the things we need to store only once like the billing and shipping information. The we create a second table that contains only the product information. This arrangement is cleaner and will store less data.

Project Management Skills – You may not need project management skills to get started, however I added this will help you will your projects.

HTML5 – HTML5 is the latest HTML standard. W3Schools [https://www.w3schools.com/html/html5_intro.asp] has a great tutorial on HTML5

Cascading Style Sheets (CSS) – While you are not a designer you will work with someone’s design so you will need to know the basics.  I recommend you take this course on CSS.

JavaScript – JavaScript runs in the browser while PHP runs on the server. I recommend you take this course on JavaScript.

AJAX – will give you a lot of power and make your user experience better. A mustr know and fun part of web development. I recommend taking this course. [https://www.udemy.com/jquery-tutorial/]

Networking – when installing Linux sometimes it is important to know now to configure your network connect because it does not get configured correctly during the install process.

IP Assignment and Routing – Based on your server configuration it may get an assigned IP or a static IP. Static is the only way to go when configuring a server. You need to know about Dynamic Host Configuration Protocol (DHCP). You do not want want to configure your server using DHCP, you want a static IP that way your server is always using the same IP.

Application Development Analysis and Design – Probably not something the average entry level PHP programmer needs to know. I put it here because it can be a useful thing to learn and know as an entry level PHP Programmer.

Object Oriented PHP Programming

Procedural PHP Programming – Some say that Procedural programming is making a comeback. I don’t see it. Object Oriented Programming is so much better than procedural programming. You should know both.

Name Space

Dependency Injection

Autoload

Security – sanitizing form data is a must have skill. There are other security issues as well. For instance not allowing access to an empty directly by your visitors. Then there is preventing unauthorized access to your PHP programs.

All of these tools are open source and free.

You can build enormous web apps by knowing just the following:

Life long learning …. PHP was not around until 1994 yet a vast majority of the web has been built on PHP and MySql. Relatic=vely new technologies.

And in reality the Internet was born January of 2000, after all the Y2K projects were complete.

Future of Programming

Currently there is two classes of developers. Programmers and engineers. In colleges there is two tracts. One is for the programmer. The other is for the computer scientist. The programmer learns to program while the computer scientist learned much more. The computer scientist will get exposure to creating parser, drivers, interpreters, and compilers. The computer science curriculum is much more robust.

Today we read about and maybe even see self driving cars, semi trucks, and robots. This is just the tip of the iceberg so to speak. In the near future we will begin to see computers applications that create computer programs. My friend David Connelly from the UK says he wrote a program that creates the administrative interface based on the information he programs into his software generator. Within seconds he is able to create ??? that would take him days to create.

This is what we are going to see in the near future – I’d say withing 5 years if not 10.

Computer Scientists are the ones who will be doing this type of work that will displace the programmer. I’m a programmer. If I had it all over to do again, I’d become a computer engineer. The curriculum is much more difficult, however computer engineers get to do some really cool stuff like create reality rides for Disneyland. Like this one

The seat moves giving the sensation that you are really flying and moving.

It is my opinion self driving cars and self driving semi trucks will be the norm within 10 years and the people who are driving taxicabs and the semi trucks will be displaced. And this is just the tip of the iceberg. They say most jobs will be replaced by robots in about 10 years. The person making robots will be the computer scientist.

Conclusion

Boot camp graduates are so prevalent they are becoming a commodity. One must do something to make themselves stand out. Open Source projects. Writing an application and publishing it on ???? Put up a blog. Use WordPress and a decent host and start blogging. You are selling yourself.

The University of Arizona (UofA) is offering a coding boot camp that odes not include PHP so I would not suggest you attend, I however can use it as an example. The cost is $9500 and can be taken for 24 weeks which is part-time, or full-time which will take 12 weeks. The UofA recommends 20 to 30 hours of study outside of class. Part-time is 10 hours of class time, while full-time is 20 hours of in class time.

Handful of well paid engineers will replace a ton of minimum wage workers.

Becoming an Entry Level PHP Programmer

Image : Becoming an Entry Level PHP Programmer

This article gives some guidance on how to become a PHP / MySql developer and what you will need to know. I assume you have some programming and database familiarity because we will start at that level.

You will need a simple development and testing environment. I go over that in this article. I give a laundry list of things you should know and things you should do in your quest to become a PHP Programmer.

How I Started Learning PHP

I was a programmer before I taught myself how to program in PHP. To me it all comes down to data driven browser based applications. The starting point was simple. For me it was CRUD plus listing records. CRUD is an acronym that stands for Create, Read, Update, and Delete.

I hard coded each part following the following steps:

  1. Create a PHP file.
  2. Created a database and table in MySql (or one of it’s clones).
  3. Add a database connection string using PHP
  4. Hard coded the code to create, read, update, and delete record using database table I created.
  5. Hard coded the code that lists the records in the table.
  6. The above creates on simple PHP program file.

That’s it. That is how it all started for me.

Create a PHP Development Environment

You will need a development environment. Either a simple VPS some place like Digital Ocean [link] or PixeGate.net [link] or you can use an old laptop or desktop. I have several test environments. I have a local hardware server (old Dell desktop computer) and an old laptop. Both have their spinning drive replaced with a Solid State Device (SSD) so they are better optimized having the hard drive bottleneck removed. Your garden variety i3 laptop with and SSD and 4G of RAM should serve you well.

One thing to note is you will want your development and testing servers have the same specifications as your production server. Since this is for learning and your code will not be moved to a production environment, this is not an issue.

Skills You Will Need to Develop

Linux – There is a lot to know about Linux and I do not think most will expect you to be master Linux admin while you are at the beginner stage. You should be able to install Linux and be able to create a user.

Networking – You should know how to modify a Linux network connect if need be, and plug in a network cable as needed. You need to know the difference between a static IP address and a leased IP Address (Dynamic Host Configuration Protocol (DHCP)).
Apache and / or NGINX – Basically you need to know how to create or modify a virtual host, and stop and start the webserver.

MySql or One of it’s Clones – You will need to know how to create a database, create a table, create indexes, and create query strings that can perform basic CRUD plus list.

Basic PHP – You will need to know the following:

  • How open tags work and why and when a closing tag is not required
  • Variables and Types
  • Data Types
  • Capturing Form Data, processing it and sanitizing it
  • For Loops and While Loops
  • How a Switch Works
  • Arrays
  • Creating and Accessing String
  • Searching and Replacing a String within a String
  • Formatting Strings
  • Call by Value and Call by Reference
  • Reading and Writing to Text Files
  • Basic Understanding of Object Oriented Programming
  • Procedural Programming
  • How to Configure PHP via the php.ini file

HTML5 – W3Schools has a great HTML5 tutorial that would be good to go through as part of your PHP programmer training. [link : https://www.w3schools.com/html/]

Cascading Style Sheets (CSS) – There is a lot to know about CSS. Basically it is the “language” that describes how a web page will be rendered. W3Sschools [link] has a great tutorial on this.

Mobile Responsive – You may not need to know much about making a website mobile responsive, however you do need to understand what it is. Basically it is using CSS to make a web page render in a desktop, a tablet, and a smart phone is such a way that is looks correct for that size of screen.

JavaScript – The first thing to understand is JavaScript runs in the browser, while PHP runs on the server. There is a lot to know about JavaScript. If you write raw JavaScript it may not work in all browsers. Each browser has it’s own JavaScript engine and they differ.

JavaScript library – jQuery is my favorite JavaScript library. It standardizes your JavaScript so that it runs in all browsers.

AJAX – AJAX stands for Asynchronous JavaScript and XML. Sounds ominous, and at first maybe it is. Once you get started AJAX can be quite fun. AJAX gives the PHP programmer the ability to create interactive web pages. That means the wold page does not need to be refreshed with every change the customer makes. AJAX will update just the block that needs to be updated making for a better user experience. Way back in the old days web pages were not interactive.

Conclusion

We covered a lot of ground. Becoming a PHP programmer requires a lot of work to develop the skills and knowledge you will need. It is possible to learn all this and some if one takes the time to work through the list while doing some hands on.

System Analysis and Design for the PHP Programmer

Image : System Analysis and Design for the PHP Programmer

This article covers system analysis and design from the PHP developer’s perspective. Not only should programmers be aware of system analysis and design, site owners should be aware of this as well. If a developer fails to perform an adequate system analysis and design they are setting themselves up for working harder and longer than they should have. The other part is this phase will produce a written outline of the project that can be used to communicate with the customer. The customer needs to be aware of this phase as well. I cannot state strongly enough how important this phase is.

Introduction to System Analysis and Design

System analysis and design is taught at most junior colleges and universities as part of their programming or computer science curriculum. But what is system analysis and design? In a nutshell is is formalizing the project. Taking what a customer has told the programming staff about what they want. When complete it is a road map to the finished computer application. In this article we will look at this from the perspective of the PHP programmer.

The System Analysis and Design

When it comes to the garden variety (small) PHP programming project there does not seem to be a lot of time to allot to the system analysis and design phase of the project. Usually the system analysis and design occurs in the programmer’s head. I understand this approach because there is usually limited resources when it comes to PHP freelance programming projects. In reality the PHP programmer should take some amount of time for a formal analysis and design.

For a small project the analysis and design phase will take an hour or less to compete. For larger projects this phase my take longer.

Doing a formal analysis and deign can save the developer time and energy. And it will allow the programmer to get early feedback to ensure that project is what they customer envisioned. In school they teach this phase will save the developer a lot of time and energy. From my experience this is true. I’ve hastily began projects believing I had it all figured out and took little time analyzing the project or formalizing it. Those times I skipped the analysis and design caused me to work harder and longer. It is very important to do a formal analysis and design before starting to program.

What Does a Finished Analysis and Design look like?

Each project will vary. Some will be maintenance or bug fixes that require thinking about the issue, doing some research and coming up with a course of action. Other projects, manly those where a project is built from scratch will require the following:

  • Project Statement – The reason for the project, the goals for the project, the why, and the delivery date.
    Site Hierarchy – Outline the menus, pages, and forms.
  • Form Templates – Making form templates and having them reviewed before stating to code will save time and effort and may flesh out potential misunderstandings.
  • Hosting Requirements – May need to be documented as well depending on the resources that may be need to be provided for the final web application.
  • Database Normalization – This is a big one. Database normalization is a skill all PHP developers should posses. The database is at the heart of the project. If done correctly it will make the project easier and will make future changes easier. And will reduce the amount of rework.
  • Reports – Outlining which reports are needed and what each report will require will help in understanding the project. Defining the reports that are needed will also help with understanding what data needs to be stored and in what format.
  • Security Issues and Concerns – The Internet has become a war zone. On a regular basis we hear or worse yet are invovled in a data breach. I do not think there is anyone in America that has not been effected. They say an ounce of prevention is worth a pound of cure. Be security conscious.

Conclusion

As you can see the system analysis and design is an invaluable tool to formalize the project so the programmer can verify with the customer that he or she is on the right track. This phase can also reduce the amount of time and effort that goes into a project. This is a mandatory part of all projects. The customer should request a system analysis and design occur and every programmer should do this automatically. Neglecting to do a formal system analysis and design could cause a project to go off the rails creating a failure. Performing this task will lead to better, easier, and more successful projects.