Almost all freelance web developers are doing it wrong. And it’s a miserable existence to endure.
If you awake one day and say “I’d like to be a freelance web developer. Now how do I get clients?” you’re already setting yourself up for failure. Yet nearly everyone who chooses this career path makes this mistake. Like consulting, freelancing ought to be a natural progression of a web developer’s career (though of course, not the only path). Done right, it becomes the obvious next step for someone who has built an extensive professional network, developed finely honed skills, and has an entrepreneurial spirit. But prematurely deciding to freelance for any length of time can severely damage your career and mental health. You’ll feel pressured to take any work you can find just to keep the bills paid and your skills will erode as you crank out an endless stream of cheap WordPress sites. Here’s how to do it right:
Step #1: Obtain full-time employment in web development.
For the readers starting from scratch, this first step obviously is the most frustrating. After all, how do you get experience if every job requires experience? My initial advice is dependent on just how close to zero you’re starting. For those who are self-taught but just lack a bit of pedigree, I would recommend contributing to open source projects on GitHub and building a technical portfolio. Then craft a project-focused resume rather than a chronologically organized one. If you are uncertain about your skills and find the thought of contributing code a bit intimidating, offer to write documentation. Good documentation is critical to the success of every open source project and yet most maintainers are loathe to spend time on it because writing code is more fun. Plus, the ability to understand and explain other people’s code is an exceptionally valuable professional skill to develop.
If you lack the expertise to yet make sense of code, my recommendation would be to consider taking a few classes at a local community college. A well-taught certificate course will help you establish a baseline of skills. A two-year degree may or may not be worth the investment, depending on the content. A four-year degree in “web development” is, without a doubt, not worth either the cost or the time (a Computer Science or MIS graduate from a reputable school is infinitely more employable).
Obtaining full-time employment early in your career, even if you eventually prefer to be a freelancer, is important for a number of reasons. You’re exposed to how a business operates from the inside and will learn what works (and what doesn’t work) on someone else’s dime. Operating as a freelancer can also be a financially precipitous position for even those that are successful. A secure job will provide the opportunity to build up a savings cushion and practice managing personal finances.
Step #2: Start networking like your job depends on it.
I’ve been a professional web dev since 1997 when I first wrote a simple online shopping cart in Perl for a small computer store where I was a PC tech. Over the past 16 years, the biggest mistake I’ve made was spending too much time honing my technical skills at the expense of all other aspects of my career. I’d rather spend hours tangling with the toughest bug than go to a business social event. It wasn’t until my late 20s did I stop discounting “soft skills” as pure fluff.
Spend some effort getting to know your co-workers; especially those whom you rarely interactive with and don’t know well. Chat with clients about more than their immediate project. As the level of trust builds, ask about other aspects of the business you might be able to assist. Attend local user groups, meet-ups, and developer conferences. These events can require a significant time commitment but are invaluable because everyone is there specifically to meet you (and people like you.) MeetUp.com is a popular resource that I’ve used with success, as are searching for local groups on LinkedIn.
This networking is laying the groundwork for your eventual freelancing and is absolutely necessary for your success. A moderately-skilled programmer who’s really good at communicating with people is worth at least 3-5x more to most businesses than a brilliant programmer who prefers to be left alone all day. Schmoozing increases your “social surface area”, which leads to more professional contacts and more work, but also improves your ability to translate between tech-speak and business-speak. Your goal is to become known as someone who solves problems, rather than the “web guy.”
Step #3: Leverage your network to find a job that’s compatible with freelancing.
For most developers who love their field and have no desire to freelance, I’d recommend seeking employment at a software/web development company rather than an insurance company, bank, etc. Being on the front lines as production staff (the people making the money) generally means that your interests and the company’s interests better align: higher pay, more interesting, varied work, and greater respect. However, for those looking to moonlight on the side, this often presents a conflict of interest. Don’t be tempted to circumvent a non-compete agreement, unless you have both a good legal standing and a very good personal reason for doing so. This can backfire and ruin much of the goodwill you’ve spent your career building. Additionally, it will burn a bridge that otherwise could be a great backup plan in the event that freelancing doesn’t work as well as planned.
A better option is to find a job that allows you to comfortably leave “work at work.” While not as exciting (or lucrative) as other career options, it does leave enough energy to pursue side work in the evenings and on weekends. You may even want to make a lateral move and spend your days doing something other than development to help prevent burnout. In my case, I took a job as an IT Manager for a microchip engineering company.
Step #4: Tap your network to find gigs.
I use quantity of LinkedIn connections as a measure of preparedness to enter the freelance marketplace. Are you connected to less than 100 people? If so, step up your networking efforts. While wholly arbitrary, it’s a good barometer to whether you lack a large enough network to support freelancing. Using this network, reach out to past employers, coworkers, and clients. Let them know that you’re currently seeking side work and whether they know anyone who needs help. This type of shameless self-promotion might push you outside your comfort zone, but becomes easier with practice. And if you have the desire to becoming solely reliant upon freelancing to earn a living, learning how to sell yourself is an essential skill.
I’d also recommend that you give freelance marketplaces such as ODesk, Elance, Freelancer.com, and Guru.com a shot. Don’t concern yourself with the fact that you’re bidding against developers from all over the world who are willing to work for pennies. My company is in the top 0.8% of providers on one of the aforementioned marketplaces. We use it for short term, filler work and routinely bring in more than $100/hr because I’ve gotten rather good at marketing our services. I’m highly selective about the projects I bid on and in my initial contact I address the specific problem that’s immediately in front of the client.
Step #5: Keep raising your rates until your gigs pay better than your “real” job.
Rational people make purchasing decisions based on value, not price. Pricing yourself beyond the reach of irrational clients is a good first line-of-defense against taking jobs you’ll regret. As you work to establish your reputation as a freelancer, your time becomes more valuable. The industry is fraught with unreliable and poorly skilled freelance web developers. Always ensure that your rate grows with your value.
Properly pricing your web development services can be tricky, especially for those who don’t have a background in business. However, if you’re taking the advice of this article and gradually and organically growing your freelancing, it actually becomes rather simple: Allocate a fixed amount of hours each week to your freelance gigs, perhaps 12-20. Doing so will help prevent burnout and, since work expands to fill available space, force you to work more efficiently. Once you’re consistently booked each week, raise your rates on new clients by 20%. Rinse and repeat until you’re turning away more than half of new business and then begin raising rates on existing clients. The goal is to hit an equilibrium where your schedule is booked solid 4-5 weeks in advance. Getting to this point will take several years of hard work and you will make a lot of mistakes. Learn from them and move on.
Step #6: Profit! (er, hopefully)
Assuming you’ve been patient, persistent, and extremely driven, by this point your freelancing should be more lucrative than your day job. The decision of when to make the leap into full-time freelancing is a very personal one. It will vary depending on your risk tolerance, skill level, amount of debt, family obligations, and other factors. In other cases, such as with myself, the decision is made for you through the loss of your job. However, looking back on it now from the perspective someone who’s managed the finances of a business, ideally I wouldn’t recommend quitting until you’re consistently making double your annual salary with freelancing 20 or less hours a week. If that sounds like a lot of money for a lot less work, you’re in for a shock. At the end of most months, you’re likely to be making about the same as you did at your day job.
Now that you’ve escaped your day job, remember this mantra: Always Be Selling. Freelancers frequently slip into a “feast or famine” cycle. One month you may be feverishly pulling 70 hour work weeks while the next your diet may consist mainly of Ramen and PB&J. This cycle occurs when you let your pipeline dry up and focus exclusively on the fun work of building web sites. Even if you’ve got more work than you can handle, spend one day a week (20% of your time) on business development efforts. It needn’t be anything as dreadful as cold calling (and in fact, shouldn’t be if you’ve carefully managed your pipeline). Call/email past clients to reconnect, attend networking events, or update your blog.
Beyond: Specialize and then clone yourself–or hire (whichever is easier.)
I could write a book on everything that I’ve learned (the hard way) that fits under this heading. Briefly though: the most important bit is to specialize. My company, RightBrain Networks, specializes in consulting on engineering best practices for applications that run “in the cloud” (generally Amazon Web Services). There are other companies out there that only make websites for luxury car dealerships or personal injury law firms. And there are yet other, independent freelancers who make a killing supporting legacy ColdFusion or ASP classic applications. Don’t be afraid to specialize. At first, it can be unnerving to turn away work that doesn’t fit with your new, better-defined vision. But it’s a necessary step unless you want to permanently be competing with every person on the planet that has ink jet-printed business cards that say “freelance web developer.”
Hiring is an even more tangled topic to wade into. Growing to need employees is what graduates a freelancer from the ranks of the self-employed to a business owner. However, a person absolutely must be sure that he wants be a business owner first and a web developer second. Plenty of businesses fail because the owners figure that it will run itself if they focus on the billable work. Employees are God-awful expensive and the company has to be in a condition to support them, but it’s because they’re worth it when/if you’re ready. Don’t be in a hurry to hire and remember that a comfortable living can be made as a successful freelancer, sans employees. Work your network and find other freelancers to assist with overflow work on a contracted basis. Do this for as long as possible before contemplating hiring actual employees.