How to be a Freelance WordPress Developer

Hi there! :), your here and I hope your interested in earning money by doing freelance work.

A little bit about me before we get started, I was a freelance developer for more than 3 years and I designed (some) and developed more than 40 websites. My customers were from different countries including Sri Lanka, United States and Singapore. It was hard work managing a regular day job and doing freelance website development as well, but it was worth it. That extra work is what helped me to save enough money to buy my car and also helped me finance my self to move to Singapore when I got my current job here.

So enough about my self, this post is to note down the things I learned the hard way when doing freelance development. Hopefully this will help you who is new to website development learn something and get started. I sincerely hope that you can be successful by following some of the information given here, but I hope you understand that it is actually hard work on your part which will ensure your success.

Ok So lets get to it,

Why WordPress?

Why WordPress? Why not develop websites using HTML and CSS or Drupal or Joomla. The main reason I picked WordPress was because it was very easy to learn. A huge community and lots of tutorials and materials are out there to help you to get started.wordpress-logo

And the other reason is there are¬†lots of jobs available for WordPress. Its easy enough for normal people(Non developers or Muggles ūüėõ ) to get started using it on their own but just complex enough to prevent them from building a fully customised website. So people are always looking for developers to help them customise their website built using WordPress which they already started on their own or people who want to upgrade and rebuild their old websites.

My speciality was catering to those clients, who wanted to convert their static websites into CMS based website, so that They can manage their website on their own.

There are other reasons, But for me above two were the main reasons.

Types of WordPress Work

Website Setup/ Installation / Maintenance / Bug Fixes

wordpress-tag-cloud-2This is kind of the smallest job, and least rewarding. Most people can install WordPress on their own, but there are some people, specially older generation who might find it confusing to select servers or setup their domains etc. So you can easily do those to earn some quick cash. Bug fixes sometimes can be confusing as WordPress installations can get quite complex depending on the types of customisation done the on the website. So you might need to look at what your dealing with properly before accepting this kind of job.

Theme customisation

This is purchasing/downloading a commercially or freely available WordPress theme done by someone else and customising it to fit the customer needs. This can be easy or hard depending on the level of customisation the client requires and the way that theme is developed. Sometimes themes are developed using obscure frameworks which makes it very hard to customise.

My personal advice is to avoid these unless the required customisation is quite small. These kind of websites can be a very big headache in the long run. But if this is the kind of work you like its a good starting point. You can get jobs that only includes the task of installing and setting up the theme as that can be quite confusing. Make sure that there is good documentation accompanying the theme when you accept this kind of project.

The customisation could be both front end and backend. So you might need HTML/ CSS/ Javascript and also PHP knowledge to do this kind of job. Also the ability to understand and follow instructions and patience to ready other people’s code is also helpful.

Plugin development

This is more to do with PHP development than WordPress. Plugin development is kind of advance development work, but you can charge more for this kind of work. Plugins can be developed to do all kinds of work but most of the time people looking for freelance developers to do Plugin Development knows what they are talking about, so will be easier to work with. Plugin development can be learned on your own, as there are lots of tutorials available to get you started. You need to get a good understanding of the various APIs provided by WordPress if you want to be a good plugin developer.

Custom Theme development

This was what I used to do. This is building an entire WordPress theme from scratch based on a design. Functionality of the website can be achieved by integrating plugins and theme can be developed as a WordPress child theme or totally from scratch. I used to build any required functionality into the theme it self and avoid using plugins as much as possible as can be very difficult to maintain a plethora of plugins and keep them up to date.

To develop custom themes you need to have good understanding of front end technologies, HTML, CSS, Javascript, Front end frameworks like Bootstrap, Foundation and also PHP.

From this point onwards I am going to assume you want to become a custom theme developer and continue with my post. But any other type of work is also basically same, so depending on your preference, replace custom theme development with what you prefer.

What you need to learn or know

  • Basic photoshop skills: How to open a PSD file, how to isolate layers, How to slice a PSD files. Tip: Only slice and take out images that your cant replicate with CSS. Dont use images for gradients or buttons if you can avoid it.
  • Front end: HTML, CSS, Javascript, JQuery, Front end frameworks- Bootstrap and Foundation (One of these is enough, bootstrap is more popular but I find foundation is easier to understand.)
  • WordPress: Understand how to install WordPress, how the database looks like, the file and folder structure, the dashboard, just install a test version and play around the dashboard. I suggest going to and creating a blog to get a feel of the dashboard first.
  • PHP: Basic PHP knowledge is enough to get started, you can learn as you go along.
  • MySQL: WordPress uses MySQL as the database engine, so it wil be helpful to get some understanding on how databases and tables are created, basic sql commands etc.


Obviously you wont have a portfolio when your beginning. So the best thing to do is to start building your own website using WordPress. That’s how I got my start in 2012, I built a very crappy version of my website. Which I sent to a client as a sample. My theory is something is better than nothing, so Just build something it doesn’t have to be great.

But if you have already done WordPress development in your office or during your studies. Just build a portfolio website. This can help a lot when convincing your customer about your abilities.

Where to find customers

4Best place for me to find WordPress customers is on Which is part of WordPress I think. Here its easier than on most freelance websites as you can directly talk to the customer and show off your skills. I personally find it difficult on other sites as those require complex profiles and doing tests to show your skills.

Some other places to find jobs are given below,

Do a google search for “WordPress Jobs” and you can find lots of places to find WordPress work.

How to communicate with customers

This I think is the most important part of this post. Its your communication style that will set you apart more than your work. From the initial email or message to the daily or weekly updates on the project, A client needs to be kept updated. Remember, An informed customer is a happy customer.

Follow these when your communicating with your client,

  • Be polite – Be nice and patient when dealing with the customer. Remember they might not always be technical and you might have to explain things several times to convince them.
  • Be descriptive but keep it simple – Keep the information in point form. This helps to understand and breakdown what your trying to say.
  • Give examples – Giving examples or visual aids can go along way. Use a tool like Greenshot to provide very descriptive screenshots. If your on skype share your screen or ask your customer to share their screen when talking so that you both know what your looking at.
  • Be prompt – Don’t go missing. Be quick to reply to client enquiries.

Always remember a face to face meeting is better than a call, A call is better than an email.

How to get paid

businessman holding money and clock. time is money concept ** Note: Shallow depth of field

Have a contract. I know this can be tough to do, but discuss your rates with customer and download a sample contract from the net and just send it to your client to get signed. At least provide them with a quotation. This could be helpful when trying to get paid. (I used for generating my quotations.)

And discuss how your getting paid in advance. If its overseas client, you can get paid by direct wire transfer to your bank. Which can be bit costly for the client but easier for you. To convince the client to do this, give them a discount depending on the cost they have to bare. Also you can use money transfer services like Western Union and Moneygram.

Give them an invoice, this makes you appear as a proper professional and they will take you more seriously. I use¬† for invoicing. (You can also use if you want to quickly generate a pdf invoice. ūüôā )

And always remember to use a time tracking software to track the work that you do. This will help to make sure your charging appropriately and not overworking your self. Also this will help to keep your focus when doing work. I use Toggl to do my time tracking.

How to maintain the relationship with customers

Freelancers most of the time seems to go from project to project and client to client. But I think its important to keep a client for repeat business than trying to find new customers. Repeat business is the easiest way to earn a steady income and it will be helpful to maintain good customer relationships to do that. Here I have given some of the things I use when I deal with customers.

  • Always give more than what your getting paid for.
  • Be prompt
  • Be transparent
  • Keep them informed, at least explain what you did to them. or even better provide them with a user guide and train them on how to use the dashboard.
  • Charge them fairly.


I have tried to put down as much as possible of what I have learned down in one post. I hope this will help at least one person in getting started as a freelancer and earning money. I am planning to do a YouTube video on WordPress theme development in the future, Let me know if you would be interested in that. Thank you. ūüôā

How to host your website on Google App Engine for free.

Ok Guys and Girls. Today I am going to teach you how to host your website on Google App Engine for free. This is quite easy, but please note that this method is for a website that doesnt use a Database. So if your website is using a CMS like WordPress this will not work. You can do that as well by using the method given on this link but you have to pay for Google Cloud SQL then.

Ok lets get started.

Step 1

First go to the following link,

You will get a screen like following,

Google Developers Console - Google Chrome_2014-06-08_15-42-42Step 2

Click the big red button that says “Create Project”

You will get the following screen,

Google Developers Console - Google Chrome_2014-06-08_15-46-27

On that enter a project name and a project id, for this you can use Your website name as the project name and create a unique project id (you can combine yourname-yourwebsite to get a unique name)

Then click the Create button to create the project. This will take a few moments.

Step 3

Ok now your project is created. Now you just need to upload your website content to the App Engine project you just created.

To do that first you need to download Google App Engine Launcher which is a simple tool available for all platforms. It comes free when you download the Google App Engine SDK which you can do by going to this link.

Download the setup file for your platform and install it. (You need to have python installed on your computer for the Google App Engine Launcher to work, Get Python from here. Make sure you get Python 2.7.6 newer version is sometimes not supported.)

Then you will get an icon like this on your desktop or start menu.


Click on that to launch The Google App Engine Launcher.

Greenshot image editor - _2014-06-08_15-52-06

Step 4

Ok on the Google App Engine Launcher.

Go to file->Create New Application

on the window that you get,

Google Developers Console - Google Chrome_2014-06-08_15-59-14

Enter the project id you gave on the Google Cloud Console when you created the new project.

Browse and select the Parent Directory of the website files on your computer. This creates a folder under that parent directory in the project id you gave. So you will have to move the website files into that folder.

Select PHP as the runtime.

Click Create button.

Step 5

This will create App Engine files in the website files folder.

In that you need to edit the App.yaml file. This is where you tell the app engine app where all your files are and how you want them to be launched.

So go to your website project folder on your local computer and open app.yaml file on notepad. Or on the Google App Engine Launcher click the newly created project and Click the Edit Icon.

Greenshot image editor - Google Developers Console - Google Chrome_2014-06-08_15_2014-06-08_16-04-50

I am adding my app.yaml file here to show you how you need to add code sections to load Javascript, Css, images and main url files.

Like I have given you will have to give all the static file folders in your website. Here in my website all traffic is directed to my index.php file. If you have other files you will have to modify that part like following.

For each of your links you have to give like above.

Ok now your ready to upload the files.

Step 6

Go to your Google App Engine Launcher, Select your project and click the Deploy button at the top.


It will start uploading the files. Once completed you can go to the following link to see if you website is working properly. (project id is the unique project id you gave when you created the project on Google Cloud Console.)

Ok If your website is working fine, the Next step is to point your domain to the Google App Engine hosted website.

Step 7

Go to Google Cloud Console (

Click your project Name

Google Developers Console - Google Chrome_2014-06-08_16-15-53

You will get your project view. This has lots of functionality, explore at your own risk ūüėČ

For our purpose click the App Engine link on the side bar, under that you get a link called Settings Click on that. After that click the custom domains tab on the top.



Ok on that its pretty self evident what you need to do, But let me explain each step.

1. Verify you domain

Enter your domain and click verify, it will open a new tab and show you verification options. Easiest way is to select your domain provider and click verify. If your domain registrar is not in the list, click Other and you will get a TXT record which you need to add to your DNS settings. (If you dont know how to edit your DNS better to check with your domain provider. It can mess up your website if you get it wrong.)

2. Select your domain in the second step and it will show you DNS records as the Step 3, which you need to add to your DNS Settings.

Google Developers Console - Google Chrome_2014-06-08_16-26-18

That’s all. It looks like a long process, but its quite simple. Try and let me know how you did. ūüôā

2013 in review

The stats helper monkeys prepared a 2013 annual report for this blog.

Here’s an excerpt:

A New York City subway train holds 1,200 people. This blog was viewed about 4,800 times in 2013. If it were a NYC subway train, it would take about 4 trips to carry that many people.

Click here to see the complete report.

When applying for your first job – cv + interview

These days the company I’m working for is searching to recruit a trainee web developer. As the senior developer at our company I was asked by my boss to go through the CV’s and short list the candidates. After shortlisting we asked them to come for a short interview. From the 100’s of CVs that we received and dozens of interviews that we conducted these are the things that I noticed and these are tips that I can offer to increase the chances of getting recruited.


  • Qualifications – Most the of the CV’s that we¬†received¬†had all the life long certificates and courses and degrees listed. Most of these are not at all¬†relevant¬†to the advertised vacancy. For example If you have a degree all your other small certifications that build up to that degree become non¬†relevant. So if you have a degree in Software Engineering the certificate you got from some obscure institute for computer literacy becomes worthless. So no need to list that. Also why do people keep listing all their Ordinary Level and Advance Level Qualifications? We¬†don’t¬†want to know that you got a C for social studies. Just list the subjects that you got A’s for and if possible limit that to Mathematics and English. Because listing these¬†unnecessary¬†qualifications you obscure or hide your most relevant qualifications.
  • Languages that you have studied – Another thing that I noticed is that most candidates list down all the computer languages that they have heard. The thing to note here is if you know one language well and if you have understood the programming concepts of that language it is really easy to apply that knowledge to another language. So if you say you know PHP really well, I get the idea that if we ask you to do a project in Java you will learn java syntax and apply the Programming concepts you learned for PHP and do a decent job. If you list totally different set of languages we assume that you¬†don’t¬†know even one language well. So limit your self to a one or two languages and learn them well.
  • Technologies – Most people list all the frameworks that they have heard about, but without any practical knowledge at all. So if your listing that you know PHP, limit the frameworks to PHP frameworks, and dont list all the PHP frameworks it is practically impossible to learn all the PHP frameworks. List the one that you know well. For me that framework is Yii and I have a project to prove that I know that framework really well. Also have some overall idea about the technology needed for that language/ framework to work. Ex: If its PHP you must have some idea about the LAMP stack. If its Java have some idea about Tomcat/Jboss etc.
  • Work Experience – It is tempting to list that 3 month internship you worked as an insurance broker for that famous company, but think for a moment what does being an insurance broker have to do with web development? Point here is to only list¬†relevant¬†work experience. But to show that you have some experience working at a company is ok but try to be¬†relevant.
  • Projects – Please please list some projects that you have done. This will ensure that you get the job more than anything else. Even if its some small game that you created using¬†JavaScript¬†provide a link or at least bring it in a pen drive. This will show that you have the go that is required to do something on your own.


  • Smile – When your meeting new people the first impression counts. So please smile. Be relaxed. Its not the end of the world. just be your self. No one is going to scold you.
  • Read about the company – Before coming to the interview at least go to the company website and get an idea about what that company does.
  • Answer questions clearly. your mumbling wont help either of us. If its hard to talk in¬†English¬†speak in your native¬†tongue¬†as long as its understandable to the¬†interviewer. We just want to know about you.
  • Show some enthusiasm about why your here. We are not trying to hand out a job right? so you should show that your willing to fight for this job. Be happy about the¬†opportunity.
  • Keep out your personal struggles out of the interview unless asked. We¬†don’t¬†really care about how many problems you have. We are more interested in how you can help us solve our problems. Don’t look for sympathy, try to win over the interviewer with your knowledge (relevant¬†knowledge)
  • Learn about the trending technology. If you come for a web development interview and if you¬†haven’t¬†even heard about WordPress or Joomla or Jquery you will be rejected for sure. ¬†Simple things like subscribing to tech blogs will help you keep up-to-date.

I am not saying that I have done all the above items when I was looking for a job. Actually I made most of the above mistakes. But for some luck I managed to find jobs. But it was hard. And I tell you it¬†doesn’t¬†have to be hard. Now if I have to find a job I think I could do a better job. So if your just out of university and you want to find a job think about the above facts. Hopefully you can find a good job and demand a good salary. Wish you all the best on your job search. ūüôā


If your fresh out of university and if you¬†don’t¬†have any work experience, my advice is to go to top jobs or some job site. check out the most common vacancies and the technologies and qualifications that they demand and study up on those. I think one month should be enough to be¬†proficient¬†enough to apply for a job. Pick one technology and focus on it. You will find that people look for you to give jobs, than you going after jobs when you have mastered some area.

Pay Pal for Sri Lanka

Sign the petition to urge The Government of Sri Lanka, Central Bank of Sri Lanka and PayPal Pte. Ltd to work together to enable receiving money to Sri Lanka through PayPal.