Quick List: Have a Great Phone Call

I’ve found that phone calls with clients and prospects can either be really great or a total waste of time. In my experience, the great phone calls all have the same things in common:

A strict time limit
The best phone calls have a defined start and end time that aren’t deviated from – everyone on the call knows this, calls in on time, and says goodbye when time is up
An agenda written in advance
Everyone knows what is going to be discussed, what the various options are, and what decisions need to be made
The right people are on the phone
Everyone who needs to be involved in the required decisions is present and ready to make a decision
Someone is responsible for taking notes
If there are no notes, you’ll lose track of what you talked about and the decisions that were made
People aren’t afraid to say goodbye
When it is time to go, say so – you’ve got other things to do and can’t be sitting around forever blabbing

Getting on the phone can be a great way to get to know a prospect, establish a deeper rapport with your clients, or put a human touch to your work. That being said, you’ve got work to do – get on the phone, get what you need done, and get back to work.

Understanding GitHub’s Awesomeness

Until a couple of weeks ago, I didn’t understand what it was that makes GitHub so awesome. It isn’t the pretty interface to the Git version control system or the fact that people can post code and other things for the world to see and use. GitHub is awesome because it makes it absolutely trivial to collaborate and help out other programmers.

It all started with a tweet:

I thought it was pretty cool that Erik was sharing this with the world so I took a look at the plugin. I opened the plugin file that had just been committed and started perusing the code. I immediately saw this line:

wp_register_style( 'wap8-flickr-me', plugins_url( 'flickr-me/css/flickr-me.css' ), '', WAP8_FLICKR_ME_VERSION, 'screen' );

I noticed that plugins_url was missing the second parameter needed for it to function correctly. I wanted to help Erik out by providing a fix, but I didn’t have a bunch of time that morning. In the past, providing help would have meant checking out the code, making my change, generating a patch, and sending that to Erik in some way. Alternatively, I could have provided instructions for a fix like I did for the WP SMTP config plugin.

Because the code was hosted on GitHub, I didn’t have to do either of those things. The interface allowed me to create a fork, edit the file, and send a pull request – all through the web interface. In case I’m not illustrating how easy it is to do this, here’s some screenshots of the process:

Click the edit button to start the process

Click the edit button to start the process

A fork is created for you - make whatever changes you need to

A fork is created for you – make whatever changes you need to

Enter a summary of your changes and then click the "Propose File Changes" button

Enter a summary of your changes and then click the “Propose File Changes” button

Enter some more information or details if you want, and then click "Send Pull Request"

Enter some more information or details if you want, and then click “Send Pull Request”

Finally, you get to send a tweet letting the person know that you’ve sent them a pull request:

And that’s why GitHub is awesome. Not just because you can find solutions for problems you’re having, but because it makes it as easy as possible to collaborate and help others.

Multiple Featured Images Now Uses Theme Support

I recently posted about my approach to building a WordPress plugin that would provide multiple featured images on any content type. Today, I was looking over the plugin again and realized that I could have done a better job implementing the public API in terms of registering new image pickers. As a reminder, this is how I said you should do that:


add_action('init', function() {
	if(function_exists('mfi_reloaded_add_image_picker')) {
		mfi_reloaded_add_image_picker('hero-image', array(
			'post_types' => array('post'),
			'labels' => array(
				'name' => __('Hero Image'),
				'set' => __('Set hero image'),
				'remove' => __('Remove hero image'),
				'popup_title' => __('Set Hero Image'),
				'popup_select' => __('Set hero image'),

		mfi_reloaded_add_image_picker('sidekick-image', array(
			'post_types' => array('post'),
			'labels' => array(
				'name' => __('Sidekick Image'),
				'set' => __('Set sidekick image'),
				'remove' => __('Remove sidekick image'),
				'popup_title' => __('Set Sidekick Image'),
				'popup_select' => __('Set sidekick image'),

There’s a couple of things I see wrong with this after looking at it again. First, hooking on init is probably too late in some cases. That hook should probably be after_setup_theme. Second, there is already a function that allows for registering support in a theme for a certain piece of functionality: add_theme_support. Finally, I hate the function_exists call there. It is aesthetically unpleasant in my mind.

As such, I’ve changed the plugin to use add_theme_support so there is a new way to use the functionality included:

function register_custom_image_pickers() {
	add_theme_support('mfi-reloaded', array(
		'hero-image' => array(
			'post_types' => array('post'),
			'labels' => array(
				'name' => __('Hero Image'),
				'set' => __('Set hero image'),
				'remove' => __('Remove hero image'),
				'popup_title' => __('Set Hero Image'),
				'popup_select' => __('Set hero image'),
		'sidekick-image' => array(
			'post_types' => array('post'),
			'labels' => array(
				'name' => __('Sidekick Image'),
				'set' => __('Set sidekick image'),
				'remove' => __('Remove sidekick image'),
				'popup_title' => __('Set Sidekick Image'),
				'popup_select' => __('Set sidekick image'),
add_action('after_setup_theme', 'register_custom_image_pickers');

You can see the changes in the GitHub repository. Let me know if you have any questions!

I’m Not on the Cutting Edge but I’m Close Enough

A big part of what I like about being a software developer is that I get to learn new things every day. Whether it is a new programming language or simply a different way of thinking about a specific problem, the novelty keeps my working life exciting.

Of course, learning mew things comes with a cost. First, I have to identify what I want or need to learn about. Then, I need to dip my toes in to evaluate if it is worth pursuing. Finally, I have to master the concepts required to be useful with whatever I’m attempting to pick up. Each of these steps takes a non-trivial amount of time.

As a freelancer, time is my most limited resource. In addition to doing the actual work I’ve been contracted to perform, I have to write project updates, pursue new prospects, and negotiate with leads. On top of these things, I have to eat, sleep, and exercise and make sure I don’t neglect my beautiful wife and handsome dog.

What this all means is that I have a small time budget to invest in learning new things. A consequence of this is that I’m seldom on the cutting edge of any new technology. There just isn’t enough time in the day to invest in learning all about the new hotness (even if it seems really interesting).

This used to worry me. I wondered if my skills were going to be obsolete because I wasn’t building new applications in the language or framework of the month with every non-working waking hour. I don’t worry about that anymore. I’ve learned that, with a baseline skill level and a desire for knowledge, I can stay close enough to the cutting edge that I can learn what I need to without too much effort. When the need arises, I can dig in and rectify any knowledge deficiencies on demand. Then, when the project is over, I can decide to either push forward and learn more or discard the use of whatever new technology or technique I trid.

In the end, the most important thing is to learn enough to help my clients achieve a business goal or make more money. That very rarely requires the very newest thing and, by taking this approach, I actually get to spend time with my family instead of wasting it trying to keep up with the cutting edge.

What is your approach to learning new things and how do you find the time?

WordPress Plugin Skeleton Updated – Added Settings Functionality

Today, I updated my WordPress plugin skeleton to implement basic settings functionality. This update includes some code that adds a settings page, registers the settings on that page, outputs some common controls, and sanitizes the options after saving. I think this code could be useful to anyone looking to build a WordPress plugin with a settings page. As a quick preview, here’s the settings panel that the plugin skeleton now provides:


You can find the WordPress plugin skeleton repository on GitHub or download it and take a look locally. If you don’t want the settings page functionality, you can just grab the bare bones version.

You’ve Got a Lead – Now What?

As a freelancer, you work hard to drum up new business: you have a great website, you’ve established yourself as an expert in your field, you run advertising campaigns targeting your desired market, and you put the effort in to find people who are interested in your services. Now what?

Filter Your Prospects

You don’t have much time for bad prospects – you’re too busy working on good projects! As such, the first thing you need to do is filter out the good leads from the bad. Basically, you want to eliminate conversations with prospects who want “Pinterest for dogs, but with a budget of $250.”

I’ve found that a good way to do this is to move discussion about budget and timeline to the forefront immediately upon receiving a request. Read through the prospect’s request, think about the project they’re proposing a little bit, and then immediately send over a rough price and schedule. Generally, I say something like this:

Based on your requirements and my experiences with projects like yours, you’re looking at a cost between $3,500 and $5,500 and a total timeline of 4-8 weeks. This is a rough estimate given the details you’ve shared with me at this point and will be revised as we move forward.

If you’re interested at this price point and that timeline works for your needs, I’d love to talk more with you about your project and possibly working together!

These three sentences are enough to weed out non-serious people while still endearing yourself to good prospects.

Ask a Ton of Questions

After you determine a project seems like it has a defined budget and schedule, its time to dig a little bit deeper. First, you want to determine the overall project goals. What would make the project a success and how can you help your prospect hit that milestone?

Next, ask if the prospect has thought about how he or she would like the system to work. Do they have a process they’re attempting to replace and they want to increase the usability? Is this something new for them and they want input on how to best accomplish their goals? Use your experience and expertise to make suggestions that you believe would make the system better and try to learn as much about your prospect’s business interests as you can.

Finally, try to capture the edge cases. This can be challenging, but time spent here will be totally worth it down the line. You want to catch the unknowns before committing to any work. Basically, try to document and ask every single “What If?” question that you can think of. Sometimes this helps the client understand that what they need is different then what they’re asking for. It will always help you understand what you’re getting yourself into.

I’ve talked before about fixed price contracts and how great they are if you can narrow down a specification to a known quantity. This phase of client communication is the crux of doing that.

Narrow the Quote and Make the Sale

Now that you have way more information than you had before, you can either give a firm quote on price and timeline or narrow the range considerably so you can start making the sale. If there are still lingering questions about the specification, use a range. If not, make a firm offer based on the value you think you’ll add to the prospects business and when you (realistically) think you can get it done.

If the response you get is positive, move on to a formal specification and get your deposit! If the prospect has some concerns about your quote, you should work to address them. Some possible problems and responses are:

Your price is too high (or we can get this done cheaper)
I believe that I’ve provided a fair price based on my experience and knowledge of your project at this point. If you’d like, we can work together to remove non-essential features from your project’s specification to decrease the price.
We need to get this done sooner.
Is there a specific launch date you’re trying to hit that I’m not aware of – perhaps an event that you’re participating in? If so, we can find some way to narrow the feature set and do a smaller iteration so you have a product to showcase. Alternatively, if you need to have the full product done by a certain date, I do offer rush pricing at 1.75 (adjust this based on current workload) the amount of my original quote.
How can we be sure you can deliver?
I’ve worked on previous projects of this size before and had great results. I can provide references and would be happy to direct you to my testimonials (which you are getting, right?)

Basically, apply the knowledge you’ve gained while working as a freelancer, know the value you provide to someone’s business, and try to work from a position of strength or as an equal to your client. When you’re a true partner, you’ll have a better project.

Sometimes, of course, there will just be too many obstacles and you won’t be able to work on a project or with a prospect you want to. Just remember there will always be new things to work on and let it go.

What’s Next?

After you make the sale, you still have work to do. You’ve got to get a formal proposal and Statement of Work to the prospect, get a deposit, and then work your process to reach the project’s goals. Those are all pretty easy once you’ve got the client on board, though.

So how do you handle incoming prospects and what do you do differently? I’d love to hear from other freelancers out there about how you filter the good from the bad and go on to make the sale, so leave your feedback in the comments!

How to Write a Great Feature Request or Bug Report

There are few things more important to a project then clear and actionable direction. If you’re a freelancer, knowing what to do next makes your job infinitely easier. If you’re a client, detailing what you’d like to see with as much clarity as possible will ensure you get the end result you want.

Writing actionable feedback takes practice. That being said, there are a few concrete steps that will make feedback better for everyone involved.

Describe the Current and Desired Behavior in as Much Detail as Possible

As much as it pains me to say it, this does not go without saying. When giving feedback, you should go out of your way to explain, in as verbose a way possible, what you expect to see or experience. The preferable way to do this is in a step-by-step format given a certain scenario.

For example, if you’re testing a custom registration process for a web app, perhaps you expect to see validation of fields happening as you fill them in. Instead, field validation is happening only when pressing a “Register” button on the form. Here’s what you might write:

The username, email, and password fields are not being validated until a form submit happens. I am performing the following steps:

  1. I click on the name field to focus it
  2. I enter an invalid username
  3. I press tab or click to advance to the next field
  4. There is no indication that the name is invalid
  5. I click “Register” on the form
  6. A message displays indicating the username is invalid

I would like to see the following occur:

  1. I click on the name field to focus it
  2. I enter an invalid username
  3. I press tab or click to advance to the next field
  4. A message displays indicating the username is invalid

This is much more useful than an abbreviated description that might read as follows:

When I enter a bad username I don’t know it is invalid.

While accurate, the second version doesn’t explain the desired behavior in any way or allow for reliable replication. The recipient of the feedback can guess what is going wrong and what the desired behavior is, but can’t be sure until she attempts a fix or asks more questions, lengthening the process to get to the expected end result.

Provide Supporting Materials

Any time you’re testing something that requires input in some form, you should provide your inputs with any written feedback. For example, I recently build a form parsing engine for a client which would automatically detect appropriate labels for each input detected. Unfortunately, the engine couldn’t appropriately parse certain forms that would be popular with the market the surrounding product was entering.

The client provided me with samples of the forms that were not being parsed correctly without prompting. This gave me the ability to test, diagnose, and remedy the problem that had been discovered. Without the forms, I wouldn’t have been able to move on the problem with any speed.

As a simple rule, provide any of the following related things with each bug report or feature request:

  • Text you entered into a form field
  • Files you uploaded or used as input into a desktop application
  • Error messages you received (if any)

Take Screenshots and Record Screencasts

Have you encountered a visual bug? The most useful thing you can do is take a screenshot and provide it with any feedback. Whether a UI element is positioned incorrectly or you are seeing an odd rendering bug in a corner case, a picture can be worth a thousand words.

How should you take your screenshots? All operating systems come with a facility to capture the current output of the screen. You can reference Take-a-Screenshot.org for information on how to take perform the correct steps.

If you have access to a graphics editing application, adding text and arrows or lines pointing to the elements you’ll describe in text is very helpful.

While screenshots are awesome, there is a class of bugs that require capturing motion on your screen. Perhaps an animation is running incorrectly or some type of interaction with the application causes an unexpected result which is hard to describe. These are the perfect situations to record a short screencast.

There are a variety of screencast tools to choose from. If you’re looking for the absolutely easiest and quickest, I recommend Screenr. I prefer this tool because it allows you to download an mp4 formatted file after uploading to this service, which you can upload to a project management tool or send via email.

A Real World Example

Recently, I was working on a WordPress plugin that integrated the Forecast.io embeddable widget into a WordPress site. While doing so, I encountered a bug and reported it to the developers of the site. Here is what my bug report said:

While I was checking out the widget functionality you guys have developed (using my hometown). I found what I think might be a character encoding issue with Chrome on Windows 8.1. The red flag warning icon character doesn’t show up correctly in that browser for some reason. It displays correctly in every other browser I tested, though, including Firefox and IE11.

I’m attaching a screenshot that illustrates the issue.

I provided the following image for reference:


As you can see, I provided a description of the behavior, what I did to test the issue, and (most importantly, in this case) a screenshot that clearly illustrated what I was seeing.

Did I Miss Anything?

These are the steps I follow and ask my clients to follow when we details changes we’d like to see. Do you have any other tips or pointers? What do you like to see in a bug report?

Easy Freelance Financials

Disclaimer: I am not an accountant. This post describes my approach to finances as a freelancer and nothing more. It has worked well for me and I hope it works for you! For the difficult stuff, I recommend consulting a CPA for the hard stuff.

If you’re used to getting a paycheck, juggling your finances as a freelancer can be a little intimidating at first. Income is inconsistent, taxes aren’t taken care of for you, and you need to track your expenses to make sure you save every dollar you can when tax time rolls around. It took a little over a year for me to figure out a system where the mental overhead was low enough that I could follow it without difficulty.

In this post, I’ll outline some of the steps you should take when you first get started and then go through the approach I use to ensure that I don’t have any money worries.

Setting Up Your Accounts

Before you accept your first payment as a freelancer, you should set up separate business banking and credit card accounts. This makes it easy to keep your personal and business finances separate. This becomes very important when it comes time to pay taxes on your business income.

Getting business bank accounts set up is pretty easy. You need to register your business with the proper authorities in your jurisdiction (usually the Secretary of State’s office) and then bring your business registration certificate to the bank of your choice. You’ll want both a checking and savings account for your business (for reasons that will be explained in a moment).

Getting a business credit card is optional, but having one can be handy when you need to make a larger investment in your business then you can afford to do with your cash on hand. For example, you may need a new computer or need to license some software to perform work for a client.

I’ve found that credit card companies will send you unsolicited business account applications as soon as you register your business. My advice is to compare the terms of your available options and pick one. If you’re looking for a recommendation, I’ve had consistently great experiences with Capital One (now Spark Business).

Processing Business Income

If you’re doing business online, you’re probably going to be receiving payments in multiple forms. Some clients will pay via PayPal, others via credit card through a payment processor like Stripe, and some will insist on paying via paper check.

No matter how you receive your income, it should be moved immediately to your business checking account. Do not deposit business income into your personal accounts directly. If you do, you’ll lose the authoritative view of business income and expenses that your business accounts provide you.

Save 1/3 of Every Payment

Once your income is in your business checking account, my advice is to immediately move 1/3 of every payment you’ve received to your business savings account. Once you move that money to your savings account, consider it gone until the end of the year. In your mind, it might as well not exist.

This is a really, really conservative strategy, but it has consistently given me good results. Why are you saving this money?

First, a conservative saving strategy is good for your mental well being. While moving a full 1/3 of your income into savings may seem extreme, having this hard rule means you’ll spend less time thinking about money and more time working on and in your business. That should lead to more productive work in the long run (and in turn, more income).

Also, saving a full third of your income means, in general, you’ll never have to worry about having enough money to pay your taxes, whether estimated or actual. I’m not advocating paying a third of your income in estimated taxes, of course, but if you have a more successful year than you expect, you’ll be able to cover any amount due when you file at the end of the year.

Finally, by saving this much you’re bound to have a huge chunk of change left over after you pay any tax liability after filing. I like to think of this as my yearly bonus. Over the past few years, my wife and I have done different things with this bonus including going to Hawaii for a week long luxury vacation and bolstering our house savings as we prepare for home ownership.

Record Every Business Expense

If you’re freelancing, you are going to have business expenses. You need to host your website somewhere, buy software, buy hardware for testing, take clients out for coffee, and more. Every one of these things can be deducted on your tax return as long as you have appropriate documentation for them.

As such, you should record every business expense and pertinent details about it. Here’s the information I record:

  • Date
  • Amount
  • Category (rough, like “Dining” or “Advertising”)
  • Description of how it applies to your business

Not everything is deductible, but recording everything and filtering out the chaff later is a pretty good approach, in my opinion.

Use My Spreadsheet!

There’s lots of ways to track your financials, including some awesome online services. I prefer to keep everything offline so I track all my data in an Excel sheet I’ve developed that gives me a good view of my income and expenses throughout the year. You can download my income and expenses worksheet if you’re interested in how I do things. A fair warning, there are a lot of calculations in the spreadsheet so it may take a minute or two to open.

The spreadsheet is easy to use. Enter your income on the “Income” worksheet, including date, amount of payment, and an optional description. The amount you should save will be calculated for you. Use the “Expenses” worksheet similarly. Enter every expense, its amount, and an optional category and description. The “Totals” will show you your income, savings, and expenses for each month and for the year to date. I added a “Per Day” calculation so you can compare your income directly to your previous years based on the elapsed days in the year so far.

If you want to change the amount you save from 1/3 to some other amount, feel free to edit the appropriate cell on the “Helpers” worksheet.

If you’ve got any questions about the spreadsheet or anything else, or if you have some ideas about how to manage a freelancer’s finances, let me know in the comments!

A Path to Freelance Success – Part 2

Yesterday, I talked about the first few steps in my path to freelance success. In this post, I’ll finish talking about the steps I took and how you could take advantage of those things. Just to review, the first three steps were:

  1. Figure out what you like doing
  2. Figure out if there is money in what you like doing
  3. Write a plan, including specifics for your finances and marketing

Now, onto the next steps.

Practice Your Craft

If you want someone to pay you to do something, you need to be good at doing that thing. That means you need to practice.

One of the best ways to practice your craft is to create high-quality stuff and give it away for free. There are lots of ways to do that:

  • Are you a developer? You can contribute to open source projects, create a library and give it away, or write tutorials related to your expertise
  • Are you a designer? You can give away a set of icons, create a single page website skin, or give advice on design practices
  • Are you a writer? Find something you’re interested in and write about it to show off your skills
  • Are you a freelance personal trainer? Record some videos that show people how to perform certain exercises

The ideas are endless. As long as it is related to your field, you can potentially profit from it. From a mindset standpoint, this is a marketing step. You are not seeking payment (although it can be nice). This is to get your name out there and establish expertise.

Seek Out and Nurture Your First Good Client

Once you know you’re good at something, its time to find your first client and nurture your relationship with them. There’s a bunch of different ways to find that client:

  1. Referral from a friend, family member, or business associated
  2. Inbound lead from you website (which you should definitely have up and running)
  3. From online job boards or on a freelance website like Elance, ODesk, or Freelancer.com

The first two scenarios are generally preferable to the last one. Once you find your first client, you need to do an awesome job on your first project. Work as hard as you possibly can to meet your client’s expectations while establishing a good rapport. Make sure you make it clear what is your responsibility and what isn’t, but going the extra mile on the first project won’t hurt you in the long run.

The most important thing here is to establish a relationship that allows you to be the person that this client goes to in the future.

Leverage Your First Client Into Multiple Contracts

Once you have your first client and have established a great relationship, you need to leverage that client to generate more business for yourself. There’s a few different ways to leverage your client:

  • You can get new contracts from the client, turning them into a repeat client
  • The client can refer others to you and your business
  • You can ask the client for a testimonial, write a case study about your project, or request credit within the project itself – this is indirect leverage

All of these things are valuable and relatively easy to do, assuming you do a good job following up.

After First Few Contracts – Examine Your Current Situation

After you complete a couple of projects, you need to step back and take a look at your freelance business. There are a lot of important questions you can ask yourself, but I recommend starting with at the following:

  • Do I really like doing this thing for money?
  • Who is my ideal client and what is my ideal project?
  • What have I learned so far and how can I use this knowledge?
  • How can I continue learning new things and bettering myself?

The first question is probably the most important, but they can all help you move forward with your business.

Solidify Marketing and Advertising – Push and Watch Your Business Grows

At this point, hopefully you’ve got a good feel for what it takes to be a freelancer and how you should be running your business. Assuming you want to keep freelancing and grow your business, there’s a lot of things you can do as you move forward. You can ramp up your marketing efforts by blogging, tweeting, attending conferences or meetups, or sponsoring the said events. You can advertise your services in a variety of ways and places.

Finishing Up

If you’re looking to start freelancing or are already freelancing and not sure how you can push forward, I hope you’ve found this set of articles helpful. Looking back, this is the exact path that I followed to grow my freelancing business to what it is.

If you have any questions or would like specific examples of some of the things I talked about, please leave a comment and I’ll be happy to provide as much help as I can.

A Path to Freelance Success – Part 1

My freelance career has been remarkably successful. I’ve worked with an amazing array of individuals and companies from around the world. I’ve gone places I never thought I would. I authored a book when I was 24, something I wanted to do sometime in my life but didn’t think would come until much later.

The money hasn’t been bad, either.

I had no idea what I was doing when I started freelancing. I figured I’d just wing it and hopefully things would work out in the end. I certainly didn’t jump in blindly – I did my research – but I never codified my plans in any way.

Discovering the Path

A couple of years ago, I was on a business retreat with some awesome associates of mine. Each person on the trip was invited to present to the group on a topic they considered interesting. I sat down in the weeks leading up to the event and thought about what I could talk about that would be applicable to a group of freelancers from disparate backgrounds and a variety of disciplines. I wanted to present on something that they would be able to apply to their professional lives.

That’s when I came up with the process that I credit with my success as a freelancer. I believe anyone with a marketable skill can follow the steps I’ll outline and be successful.

I’m not saying this is the path you MUST FOLLOW to have success as a freelancer. I don’t deal in absolutes like that. It has worked for me and I hope it will work for those of you who are interested in freelancing and aren’t sure how to get started.

In this post, I’m going to go through the first three steps of the path. Tomorrow, I’ll reveal the other steps. I look forward to hearing what you think!

Figure Out What You Like Doing

If you want to build a business as a freelancer, you need to choose the services you offer wisely. You’re going to be doing something every single day in order to pay the bills, so you better make sure you like doing it. Otherwise, you might as well go work as a nameless and faceless drone in some thankless corporate job.

I love developing software because it gives me a chance to craft unique solutions for a myriad of different problems. I get to think things through logically and architect artful solutions. I learn something new every day and I get a deep sense of personal satisfaction from knowing people use the things I build.

Figure Out if There is Money in What You Like Doing

To freelance professionally, you need to be marketing a service that people are willing to pay (and hopefully willing to pay well) for. No matter how much you like doing something, you’re not going to make it as a freelancer if the service you offer has no market.

Here’s how I found out that people were willing to pay for software development in general and WordPress plugin development in particular.

  • I found job boards centered on the service I was providing (like WordPress Jobs and the FreelanceSwitch Job Board)
  • I looked on Craigslist and saw there were job postings for freelance software developers
  • I found people already doing what I wanted to do

No matter what service you want to offer, you should be able to do the same.

Write a Plan

Once you determine that you can make money performing a service you can provide, you have to dig deeper and do some planning.


The first thing I did was figure out how much I needed to make per month to live the life that I wanted for my wife and I. After that, I worked backwards to determine a plan to start making that much money. In my first few months freelancing, I gradually built my business up and hit my “need this much money to live” goal.

The most important thing about financial planning for a freelancer is to be realistic. You can almost certainly make the money you need to get by if you plan appropriately, but you can’t expect to go from nothing to full income in a few days unless you already have a captive audience, prospective clients who will pay for your services without further convincing, and the ability to provide those services in a business context.


The most important question you should ask yourself is “How am I going to get the word out about my services and the fact that I’m now offering them?”

If nobody knows you’re in business, you won’t be able to make any money. You need to find clients or have them come to you and request your services.

There are a variety of ways to do this, the simplest being word of mouth. Tell all of your friends and family members that you’re freelancing and let them know what you do and how people can get in touch with you.

As a follow up, you should register a domain name and put up a business website. Make sure it has a clear call to action that prompts people to contact you and that it clearly demonstrates your ability.

How do you demonstrate it? If you’re a developer, have code samples or links to your GitHub profile. If you’re a designer, portfolio pieces and a link to your Dribbble account might be in order. Writers should have writing samples in a variety of formats. Bottom line, demonstrate you’re good at what you you want people to pay you to do.

Part 2

Tomorrow, I’ll go through the final steps of the freelance path I discovered and flesh out a bit of the endgame. Getting started is tough enough, so if you have any questions or comments about the steps outlined so far, please let me know in the comments!

Update: You can read part two now!