In 2008 I began freelancing through kevinleary.net, and I’m still freelancing today. It’s been a challenging journey and along the way, I’ve learned a lot about myself and what it takes to be successful as a solopreneur. If you’re considering a career as a self-employed web developer or currently are one these tips may help you navigate the world of professional freelance web development.
1. Client’s Care About Outcomes Not Technology
If you suggest a new framework or technology to a client make sure it’s the best option for their business, not yours. You may want to use the latest and greatest framework, but you’re not being hired to do that. You’re being hired to provide an outcome in the most effective way possible.
Over the years I’ve tried to kick off a new project with a modern framework, but if a client has a large application already built with a specific framework, I’ve found that they probably won’t be interested. Using a modern framework is often not the best choice for a client. It’s important to recognize this and make sure that you’re not losing sight of your objectives. If you really want to use the latest, greatest framework then find time to build a side project on your own that solves a common problem, promotes you or your services, or generates side income.
If you’re constantly chasing new technology your clients will quickly lose patience with you. From a client’s perspective, the tool or technology doesn’t really matter all that much. What matters is the outcome from their perspective:
- Does it achieve everything we want/need?
- Will it speed up or slow down development cycles?
- Will it reduce or increase future maintenance costs?
- Is it reliable and stable?
- Is it commonly used and well supported?
- How large of a labor market is there around the technology?*
*_This is becoming increasingly important with the speed at which new frameworks are created and abandoned._
In my experience, these are the primary questions on the mind of a client. As a result, I think it’s very important to have an understanding of modern tech in addition to legacy tech that’s still commonly used today. As of 2017, I prefer to work with Angular 4, but I encounter Angular 1 and even jQuery infrastructures much more often. Understanding how to work with a broad range of legacy environments is a critical skill for freelance developers that is often overlooked.
2. Demanding Clients Aren’t the Most Important
Make sure that you don’t neglect your most valuable clients in favor of the most demanding ones. It happens to every freelancer: you tend to focus on servicing those that are the loudest and most demanding. By loud I’m referring to clients that:
- Routinely blast your email, phone, and voicemail messages whenever they need anything
- Attempt to contact you with redundant requests through as many communication channels as possible
- Use a brute force approach to get your attention
From the perspective of this client, these tactics unfortunately work. It’s usually easiest to deal with a difficult client like this as quickly as possible. If you don’t it can be a major distraction when working on another project or client. This can be a dangerous practice though, and I highly suggest that you rank and service your clients in order of their importance to you as a business.
Make sure you don’t neglect your best clients in favor of the demanding ones. The quiet and calm clients are often your best ones. Make sure you don’t forget about them when you’re bombarded with requests from a demanding client. As a freelance web developer, it’s critical that you determine the priority of client requests based on the importance of their business to you. Secondary to this is the relative importance of the request itself, sometimes emergencies do happen and I don’t suggest that you undermine those in any way.
3. Reliability is Your #1 Sales Tool
It is critically important that you’re always reliable and dependable. Providing clients with a result that meets and exceeds the expectations can be your most valuable marketing and sales asset. I’ve found that more than 50% of new business as a freelance web developer comes from repeat customers and referrals. If you’re not a reliable and dependable partner for your clients, or you don’t provide a finished product that solves a client’s goals, then referrals and repeat customers won’t exist. You burn up a lot more time landing new clients or writing project proposals for new contacts than you do working with existing clients. Chasing new clients is effectively unpaid work until you close a deal.
People often contact me with stories of freelancer’s abandoning a project before it’s finished. I’m not sure why anyone would do this, but my best guess is that when other promising opportunities come up people may abandon a project in favor of a larger, more profitable one. This is short sighted and will only hurt your freelance business in the long run.
In 10 years, I have never abandoned a client project like this. I’ve fulfilled the requirements I was hired to provide for every project I have ever worked on, with the exception of two cases where projects were cut short by client request based on internal organization changes. I’ve missed out on more than a few projects because I was too busy at the time, but I know it was the right choice to make in the long run.
4. Don’t Work for Free
As a freelance web developer you are a business, not an employee, and it is your sole responsibility to choose projects that get you paid. When someone hires you they are asking you to provide a service. It’s up to you to make sure you’re compensated for that service.
Beware of small budgets with big expectations. Over the years I’ve heard more than a few project pitches that sound like this:
“We have a very small budget for this project, and although we don’t know each other we’re asking for a sizeable discount. Don’t worry though, if this goes well then the next project will be something with a big budget and you’ll be our guy/gal.”
In my experience, there are frequently problems with this type of working arrangement, and I always suggest that you avoid it. Here’s why:
- 95% of the time the next project doesn’t exist, fizzles out or has a tight budget as well
- Your small budget is your own problem, not mine
- When you agree to this you frame all future conversations surrounding cost
You’re entering into a no-win situation that’s simply not a good business decision. Notable companies usually don’t operate like this, they are happy to pay for quality results. The potential for this to become a long-term engagement is unlikely.
Always consider a project with a small budget from a promising business with realistic and reasonable expectations. This scenario is a very important distinction from small budget, big expectation projects. When a prospective client reaches out to you and clearly states that:
- They have a small budget
- They know it
- They recognize that they will have to compromise on what they want as a result
This circumstance is completely different, and I highly recommend working with someone like this. In the long run, these are the clients that are often starting a business that will grow, and you can be an integral part of that. This type of approach is generally taken by someone who has a sound business mind and can lead to a mutually beneficial client relationship. Some of my best long term clients have come out of the first project like this.
5. Help People Make Money & They’ll Pay You More
The best way to build a lucrative business as a freelance web developer is to help clients make more money. Don’t be afraid to make suggestions beyond the scope of your role, especially if it pertains to revenue generation. Here are a few examples:
- Suggest that a client consider selling internal data via an API
- Mention that the content on a landing page is confusing from the perspective of a new visitor/user
- Suggest a creative way to upsell users inside of an application
- Point out major flaws in any inbound lead funnels, and suggest ways to fix them
Quite often people in an organization feel that their manager’s opinion or idea isn’t the best approach, but they’re skeptical to bring it up for fear of backlash. Most people don’t want to challenge their boss. This is completely understandable when you’re in an office, but when you’re an outsider you’re in a different position.
I’ve found that if you challenge a decision in a respectful way, and in the right context, that it can be a wonderful way to help a client grow. Be ready to back up your claims with data and metrics, and don’t be emotionally connected to anything you suggest. You’ll often find that high-level people thrive on being challenged like this provided that your idea is well thought out, backed by research or past results, and can be measured.
One prerequisite to this approach is that you must know the in’s and out’s of your client’s business. Specifically what they’re selling and who’s buying it, which can be more difficult than it sounds. This approach can quickly backfire if you don’t. Avoid any generalized suggestions that undermine a person’s deep knowledge of their own organization.
6. Educate Yourself Constantly
In an office environment people seem to have the idea that higher education was the time for learning, and a career is where you apply those skills. I highly disagree with this statement, I believe that you should always be learning and developing skills. If I had taken this approach to skill development, I wouldn’t have lasted my first few years as a freelance web developer.
At any given time, I’m always reading at least one technical book, or building a sample project using a new technology or approach. As a freelancer, you need to make sure that you’re always improving your strongest asset: your skills and knowledge. Technology changes incredibly fast, and you need to make sure that you’re moving in the direction your clients and the market as a whole expects.
7. Always Be Promoting
As a freelance developer, promotion is a never-ending process. Even though clients will come by referral, you want to be improving and expanding your brand recognition and visibility at all times. Here are a few suggested ways to do this as a developer:
- Speak at local meet-ups
- Blog or write about your experiences
- Build up a social following
- Answer questions on StackOverflow
- Contribute to open-source projects on GitHub
- Have a clear, effective message conveyed in public profiles and on your website
- Build up public profiles around the web
This list will change and expand over time, but it will always be critical that you build up a positive reputation within the programming communities you focus on.
8. Criticize Yourself Constantly
When you’re the boss you’re responsible for everything. This isn’t what most people expect, and in fact, it’s quite the opposite. As a self-employed individual in any profession, you are directly responsible for your successes and failures. It’s the failure part that people have a hard time dealing with and learning from.
One of the most difficult things to do when you’re managing yourself is, to be honest, and critical of your own actions. It’s easy to make excuses for failures and shortcomings, but if you’re not honest with yourself about what you did wrong then you’ll never be able to improve. This is more difficult than it sounds, and I see it as a life long endeavor that extends into every aspect of life.
9. Automate Whatever You Can
When you’re a one man show, automate the boring details whenever you can. So much in life, today can be automated and it pays off in dividends to automate whatever you can as a freelancer. Here’s a list of things that I’ve automated over the years, which has helped to free up my time for more billable work:
- Billing – I use Harvest and connect it to Trello cards for integrated billing
- Project Management – Trello helps me herd client requests into a single place, and it also helps clients understand my process and what I need to get things done.
- Email – I use Google Apps for email @kevinleary.net, and I have TONS of rules in place to automatically delete, archive, categorized and even reply to income requests.
- Social Media – While it’s bad to automate everything, I use IFTTT to promote new blog articles and flagged items to various social media profiles
- Bash – I commonly write Bash/fish scripts to automate common tasks I find myself doing in the terminal with git, node, and other CLI tools
- Code Snippets – I use Sublime Text as my primary editor, and whenever I find myself repeating the same bit of code over and over I turn it into a snippet. It’s a small practice that makes a big difference in productivity over time.
10. Be Conservative with Cash Flow
The amount of money a client pays you is not the amount of money you made. I’ve heard many stories of new freelance web developers getting into trouble with taxes and cash-flow management. The reality of working for yourself is that you’ll have periods of ups and downs.
With a salary or hourly job, you have a consistent stream of income coming in weekly, bi-weekly or monthly. This makes it easy to manage everyday expenses like a mortgage, bills and other common expenses. With freelancing though, you could earn 5x in a month what you did the previous month, and the month after that you could have no income at all if a project is stalled or a client is slow in paying.
I highly suggest that you save as much as possible when you have large projects, and keep that as a reserve for any doldrum months that come up in the future, and don’t be mistaken they will come.
Have fun, be free!
Always remember that the reason you most likely sought this path was for freedom. If you find yourself working 7 days a week, constantly responding to clients while on vacation, or in general carrying more stress than you should take a hard look at what you’re stressing about.
The lifestyle of a freelance web developer is more challenging and difficult than everyone initially thinks, but if you work hard and follow some of these tips and lessons it can be an incredibly rewarding way to live.