Hacker News new | past | comments | ask | show | jobs | submit login
How to become a freelance web developer (ryanwaggoner.com)
256 points by ryanwaggoner on Oct 6, 2010 | hide | past | favorite | 63 comments



What is the sales cycle like? Do you take on more than one client at a time? If so, on average, how many? Are you looking for new gigs even while in the midst of implementing something for a given client?

Should my blog be about tech-related stuff only?

Do you always sign a contract before taking a gig?

Is fixed-price or hourly-rate work harder to get? I always see professional freelance devs using hourly rates, but I really prefer to take fixed price gigs (with payment milestones if I don't know the client well).

I occasionally see contractors complain that they have to much work. I'd love to be subcontracted for some of that work (seems like a pretty straightforward proposition - I'll do your extra work for a bit cheaper and you can keep the difference), but would that hurt me long-term because I wouldn't develop relationships with end-clients? Is this even a reasonable strategy for getting work?


I'll elaborate more in part two, but briefly:

What is the sales cycle like? Do you take on more than one client at a time? If so, on average, how many? Are you looking for new gigs even while in the midst of implementing something for a given client?

2-4 weeks to land new gigs. 1-3 clients at a time. Yes (see sales cycle answer).

Should my blog be about tech-related stuff only?

Only if you want it to be. My clients say they feel like they know me better after reading my blog.

Do you always sign a contract before taking a gig?

Usually, but not always. Probably always should, but there's really little recourse if a client in Kansas stiffs you for a $5k job. A contract won't help.

Is fixed-price or hourly-rate work harder to get? I always see professional freelance devs using hourly rates, but I really prefer to take fixed price gigs (with payment milestones if I don't know the client well).

Most clients seem to prefer fixed-price. Just make sure you have it spec'ed out well and you are clear that scope creep isn't going to happen.

I occasionally see contractors complain that they have to much work. I'd love to be subcontracted for some of that work (seems like a pretty straightforward proposition - I'll do your extra work for a bit cheaper and you can keep the difference), but would that hurt me long-term because I wouldn't develop relationships with end-clients? Is this even a reasonable strategy for getting work?

I think it's a fine strategy, but I'm personally wary of giving work to someone because if they fall through, I'm on the hook. I might make an extra couple thousand a month doing that, but if I have to do the work and end up jeopardizing my other clients because I don't have time to focus on them, I lose more than I gain. Plus, I think the time managing that subcontracting process is a lot more than you think. I did teach my little brother to program over the last couple years and he's paying his way through private university by doing subcontracting for me. Family is a little different, though.


"I think it's a fine strategy, but I'm personally wary of giving work to someone because if they fall through, I'm on the hook. "

That's my feeling too, though I'm (currently) in the camp of "too much work."

I'm reluctant to farm any work out that's going to ultimately have my name on it, but being over-busy means I'm turning away work, missing out on potential stable business, and staying coupled to too few large jobs.

What do other people here do? How do you arrange to subcontract?


I too have more work coming in than I can take on. If I know someone who can do it, I'll recommend them on directly rather than letting them go through me. I don't gain financially but it generally breeds goodwill. I could take a referral commission (some acquaintances seem to do this), but again I fear I'd be somewhat on the hook if the other person screwed up. Plus, if customers refer me other customers, they don't take a cut either.


That's what I've been doing. I don't like to leave people hanging, so I try to find someone who can take care of them.

I also like that people feel they can come to me as a first point of contact when looking for a developer, that if I'm not available I'll (hopefully) point them to someone who is.


If your influx of new contracts is stable enough, why not rent a cheap office, get said other person as an employee and work together at the same place?


"If your influx of new contracts is stable enough, why not rent a cheap office, get said other person as an employee and work together at the same place?"

I'm not sure the influx is that stable. And I'm not sure I want to shift to being a manager of a multi-person development shop. I suppose if I'm sub-contracting then I'm doing much the same admin work there as I would with a regular employee, except I think having that formal "business with employees" arrangement adds some complications (payroll, taxes, insurance, etc.)

But it has crossed my mind.


This sounds like good advice to me.

BTW, "Build something first, even if it’s just for fun." doesn't just apply to freelancing. You should do this even if you are applying to work for a company. Having something to show means A LOT in an interview.

And if you're in college and haven't done that yet, you're wasting time. Get on it. Have something ready for when you graduate.


That is absolutely true. I once got a job offer because I could speak at length about a custom news-scraper I simply wrote for myself so I could read the news easier in the morning. Have something built that you can explain - including the challenges and why it is important.


Showing practice trumps showing theory (e.g a degree), because in showing great practice, people know you have great theory too.


Someone yesterday posted a question about where to find freelance work, and I've been fairly successful at this, so I thought I'd write up a few of my thoughts on transitioning to the freelance thing.


I've only been freelancing for 6 mo. but I have about 10 years of experience as a software developer in the same market. Right now I'm totally saturated with work and it's come entirely through contacts -- I haven't talked to one recruiter or answered a single ad. So far it's been a blast, but not quite as lucrative (yet) as working full-time for a salary.

In my opinion, the two major reasons I've had success finding good work are:

1. I'm specializing in a popular niche and, backed by my experience, I can claim I'm an expert. This also means I can charge high rates.

2. I've always been a nice person to the people I've worked with and have remained friendly with previous bosses and co-workers. I've developed a reputation as a capable programmer who's easy to get along/work with. (Conan O'Brien, last spring, attributed his success to being passionate about what he does and being a nice guy. I think this is really true.)

I'm still struggling with a couple of things. I basically always get my time estimates way wrong. I have trouble focusing and switching contexts from wheeler-dealer (finding jobs and managing contacts) to h-core coder to my personal life. To that end, I tend to work from my clients' offices quite a bit and I'm considering renting a cube somewhere. Finally, being a nice guy has it's downsides--I almost never get paid promptly and clients often times don't provide as much support as quickly as I need (like when I need to work w/ a client API and I need documentation/time with their engineers to move my work forward).


If you're fully saturated with work and you're not making as much as your salary, you're probably not charging enough.

Freelancing's risk is that projects come and go, so you need higher rates compared to salaried jobs to provide more of a buffer zone for yourself.

On the other end, your clients are saving from not having to provide benefits and having efficient resourcing (both in that they can ramp up the work when needed, and the fact that if you're billing per hour, you're actually doing work as opposed to someone just hanging out at their 9-5 job)


Thanks for the tips. Perhaps I could raise my rates, but I think I lose money more by a) not properly estimating timelines and b) becoming idle while waiting for client feedback/help/etc. As I said, I'm only 6 mo. into it, so I'm still learning how to better handle these things. I'm finding that when I go into a client's office to code, they are more inclined to provide me the resources they need and I feel ok billing them for the hours, even if they've left me idly waiting for their input.


Here's a rule of thumb: your hourly rate is roughly comparable to your yearly income.

Here's why: you'll probably have about 1,000 billable hours in a year (because not all of your work is billable, there will be some dry periods, vacation and sick days are unpaid, etc.). If you charge $90/hr, your income is $90,000.

But this is definitely not equivalent to a $90k salaried job. You are taxed at a higher rate. If you set aside 40% for taxes and 10% for a rainy day, only 50% of your income is spendable. So $90/hr gives you $45,000/yr of spendable money (and you still have to pay for your benefits like health insurance).

So don't be shy about charging more, but do make sure that your customer is getting what they pay for (quality code in a timely fashion with good customer service).


"My method for trolling through Craigslist is to grab RSS feeds for all the major cities where I’m interested and setup in Google Reader"

I built a quick app a few years ago that helped out with this tremendously. I would feed the app a list of craigslist cities I wanted to watch, and it would grab the RSS of the web/info design section for that city. It would parse the feed and dump the jobs into a database. It would load new jobs with a cron that ran a few times a day.

The dashboard page showed a list of jobs that hadn't been acted on yet. You could easily eliminate a job with an [X] button, or move them into a "save for later" area. You'd have to act on every job, but it was quick to do so. Then the app had a built-in responder that allowed me to initiate the conversation from within in the app.

After putting this thing together, I got a total of 2 good jobs off of CL. I quit looking for freelance jobs shortly after but may start up again once I'm done with my masters.


I have built something along these lines called FlowThing:

http://twitpic.com/2vedlp http://twitpic.com/2vef3n

You get a bookmarklet to save a listing from any site, keep track of the relevant bits of data (company, square feet, salary, bedrooms, mileage, etc), and move them through a little workflow (interested, applied, contacted, lost, etc).

You can use it for jobs, apartments, cars, dates, whatever! All the fields and workflows are completely customizable.

It's been on the backburner for a while, since my day job has gotten busy, so there's no help available and signups are invite-only right now. But you guys seem like the kind of people who can figure it out pretty easily ;)

Here are some invite codes:

  http://flowthing.com/invite/r4bjpgrh11
  http://flowthing.com/invite/zb6kqavuu4
  http://flowthing.com/invite/1wd5m65i4t
  http://flowthing.com/invite/2iqihqylrn
  http://flowthing.com/invite/svjkj7ambs
  http://flowthing.com/invite/knfaktvf6a
  http://flowthing.com/invite/h6d0o4h3ye
  http://flowthing.com/invite/act1cl1f94
  http://flowthing.com/invite/imto1f10e8
  http://flowthing.com/invite/ay3fqfoujz
  http://flowthing.com/invite/nqdfnkjj11
  http://flowthing.com/invite/xmbvsveyrv
  http://flowthing.com/invite/dad8jaowpn
  http://flowthing.com/invite/vebgl2ycrw
  http://flowthing.com/invite/kb69pji0tm
  http://flowthing.com/invite/792oaih7qc


It might not be worth the effort but you might want to consider making this available to the public as a service for freelancers.


I had mostly forgotten about it until I saw this post. I think it would be a good idea to give to freelances and may revisit it in the near future.


The gigs board on craigslist is generally a huge waste of time. Maybe a little better in the bay area than any other city, but even if you do spot a decent project chances are if they are posting in the gigs board, the client isn't that committed. God knows how many useless meetings with flaky idiots I've taken through CL gig board ads.

My approach to CL is let them come to me, unless I'm desperate. That means post your resume, put an ad up in the services section, keep A/B refining it until you get hit with good emails.

One of the best approaches to finding local clients (that I rarely do and should attempt more) was actually cold-emailing local businesses that conduct a lot of web dev work. Back in 2004 I moved to the bay area with no clients whatsoever, and did 2 things - posted CL resume listings, and cold emailed every design agency I could find. At the end of a week, I had enough clients to last me the next 3 years.


So about 30 minutes ago I decided it may be a good idea to look into (local) consulting, for businesses or people who don't know much more than "I want a website". Has anyone done this/any advice?

I figured to start with (aside from occasional freebies) maybe $500 for 3 hours. No idea where I came up with that number but it gives me something to start at.

But maybe I'm not set on what I _do_. My plan was to walk them through options, advise whether they need something custom built or hacked wordpress or use a hosted shop. Then take it from there/work with them to find developers (or do it myself).

Good? Bad? Any tips would be good.


Depends on who the client is and what you want. If it's just about making some cash, find some local businesses (restaurants, etc), charge $400, then set them up with a wordpress blog with a theme from theme forest, woo themes, or ??. Spend an hour customizing it and your done.

If you want to build a more sustainable web development business, find some larger corporate clients, and do basically the same thing but instead of the off-the-shelf theme, pay a designer $500-$1500 for a custom theme then charge $5-$10K per site. Get an intern or temp worker to do the data entry.

Also, I've found that "I want a website" type people really like to work on their own website once they have it. So don't be scared to let them have a go at the Wordpress (or whatever) backend. Just be ready to clearly explain the limitations when they inevitably make ridiculous requests.


How have you had success finding larger corporate clients? I've been working at 20 person agency as Director of Engineering for 5 years, but we generally run $500k+ year long webapp builds in Rails, not $12k corporate sites. I'm trying to catch up on some debt, and have the client and team management experience to put together some "mini-agency" projects like, but am not sure how to go about finding the sort of client who needs this type of site.


Thinking back, I realized that all my larger contracts have been with companies where I had an inside contact (friend who was working there). Also, look for companies in fields outside of internet technology. They certainly won't be spending $500K on webapps, but do want a modern presence online.

I'd recommend asking friends/family if there company is unhappy with their current website or other technology services. The market rate for design agencies is probably $15-50K, so an individual who can do it for slightly less than that and in a friendly manner is highly attractive.


Have you been able to grow beyond the "inside contact" deals? And by "look for companies in fields outside of internet tech" can you give some examples?


How did you go about finding these 500K+ web apps? What kind of clients are they? What kind of apps do you do for them? If you dont mind me asking


The guy who founded the company, and with whom I've been working closely for over 5 years, is technical with a design background, but also happens to be a bizdev god. He's in SV (I'm in Portland, along with several of our other employees), and knows a lot of the right people. We do some startup builds, but also a lot of projects that add directly to people's bottom lines - for example, an admissions and course management system for a university, which will contribute directly to them being able to get an accreditation rating they're seeking, and which will return the cost of the work to them (conservatively) at a 10x multiple.

Of course, these aren't lump sum, flat bid projects - they're paying for an agile team over the course of a year or so.


I think sending your cover letter to hundred of employers is just a bad idea (may be I'm wrong or these are just my thoughts).

I prefer to read the freelance job description and check if I'm ready to do it and it's a good match. If so, I'll take 15 or 20 minutes to write about it. I'll mention ideas, suggestions, my skills... something really made for that ad.

I won't send hundred of emails a week, but instead 3 or 4 and pick carefully the jobs I chose. If the buyer didn't take the time and spent 30 or 20 minutes to write the ad, his job is probably not worth checking.


> Assuming your projects function correctly, 95% of clients at this level are going to judge your web development skills based almost solely on the design of your sites. Unfair, but true.

Not sure about this, we have had a steady stream of clients since we got going without a particularly attractive website (http://gastownlabs.com)

I'd say the percentage is 95% but the metric isn't your web design but references from previous clients.


Compared to what I'm talking about, your site is very attractive. I'm talking about stuff where you built the back-end but the customer hired a terrible designer, or stuff where you were brought in to do maintenance on an existing site that just looks absolutely terrible. Most clients won't care that you wrote great code and cleaned up the existing issues; they'll just see the crappy design.


All you need is color. Your site's design is definitely good but it screams, "We're afraid of color!" ;)

I started my blog design with a black-and-white theme thinking it would look sharp and sophisticated but it actually just looked bland. So I threw some saturated colors into my blog and it breathed life into it: http://techiferous.com/

Here's a good tool for choosing color palettes: http://colorschemedesigner.com/


I agree about the lack of color being a problem. In my mind, it links you with mimes and aloof Mac designers who think they're better than you. Maybe that's what you were going for, though!


Hey, I love your website!

How's the business going for you guys in Vancouver? Do you have any problems finding customers in and outside Canada? Is being in Vancouver a problem for getting US customers? Sometime I saw postings where they are looking for a local web-developer for contract.

Would love to hear more advise from a fellow Vancouverites!


I generally reply to less than 2% of CL ads - choosing the ones that I feel I have the best chance to win. I never send a resume, I only reply with links to other projects I have already completed that are pertinent to the job request. I also mention that references are redily available, which they are, although no one usually checks on them.

I find that answering the job ad specifically, explaining how I would work on the problem, and mentioning how I have done something similar in the past gets me the best success rate to speak with the client directly. Even if you don't have exactly the same project under your belt, you can reference other web work and explain how portions of the project are the same.


I agree with most of the article. I am primarily a web programmer, but most of the projects I work on have or already had excellent designers work on them, which makes my portfolio projects that much more appealing.

However, I find your work-acquisition strategy a little shallow. The best thing I can recommend is to spend a decent amount of time crafting your message (even if its as simple as "I make websites for small businesses"). Consistency and clarity is key here over specialization.

Once you have a clear consistent message tell everyone, especially non-technical folks. As the article said, its a numbers game. By doing this, I have found clients through friends of friends who talked about me, twitter, and my mom even picked up a project for me at her book club.

If you can manage your own projects, I would branch out from just working with firms that already hire/manage designers/devs (freelance or not). There's an endless supply of businesses that hire contractors without having technical managers and then end up extremely unhappy (at the least). If you're competent, a good communicator and transparent with the client, you'll easily wow them over and over again. Further, these clients will pay consulting rates (min $100/hr) rather than designer/developer rates ($50-$75/hr).


The more I think about freelance work, the more I come to the conclusion that we all need to start specializing.

Every business needs a set of unique attributes, and many people are creating freelance businesses. How can people possibly compete effectively without becoming _very_ good at least part of their job description?

I know that many of us like to think of ourselves as capable of tackling everything, but in reality it's very difficult to wear five different hats.

I'd like to see networks develop which allow developers and specialists to effectively work with each other in more specific capacities without needing to form permanent business structures.

I'm fairly certain that this is the way the labour market is headed - but Ip think it would be useful to be able to make the process of partnering with other freelancers more democratic.


You mean something like DB experts working with server experts working with programmers working with UI designers?


I do, yes.

In the future, I think there's a strong chance that we're all going to end up as specialists - I'd like it if there was a network / site / application that allowed these informal working arrangements to function well.


ho hum.

you're always competing with the person who'll try to "copy facebook for $15/hr"

once you've got more than one customer you'll inevitable get in the situation where, if you were honest, you'd have to tell Customer A that his project is late because you've been working on Customer B's project. If you are honest, Customer A will freak out and odds are 50% or so that he'll dump you right there.

I joined the project management institute, and one day looked at the code of ethics I signed onto and I realized I'd be violating it all the time if I was doing typical freelance work for the typical freelance client.

So I won't.


I rarely find this an issue. I've found I'm more likely to be waiting for a client to be getting back with some sort of feedback, and therefore using my time to be working on another project.

This may be down to handling client expectations at an early stage. If you make it clear that as a freelancer you will be working for several people at any one time, and give them a time estimate for when progress will be made, I've found most clients are fine.

This does mean I have to make sure I'm progressing enough on each project to keep each individual client happy, but I've found for a lot of people, as long as they see some progress and you're keeping up communication with them - which can be as simple as a 'here's a quick update' e-mail - then they're happy.

If you get a client who wants you to work solely on their project, this can be more of a problem. As I've been freelancing a while I'm in a position to say I can't work that way, and know that I'll find other work if they then do not want me to work for them. When I was starting out and work was thin on the ground, I couldn't be so picky. Then again, I didn't have as much work to juggle either.


Just posted part 2, which you can find here: http://news.ycombinator.com/item?id=1767620


How did your rates evolve over the last four years? (from when you were a beginner with no experience, until now)?

Was it tough justifying high rates with little experience?


I started at about $50 / hr and now I charge about twice that for smaller projects. For longer-term or larger chunks of work, I give discounts because it saves me time looking for work.

The high-risk, high-reward stuff is fixed-price gigs where I charge a set price for the whole project. I've taken a bath on some of these, though never lower than $50 / hr. On the flip side, the good ones have worked out to high hundreds per hour. Stressful, though.


Do you ever get work through recruiters? Do you find their rates to be less? Whenever I get contacted by a recruiter and I tell them my rate they freak out. They say "The customer has a stretch budget of $40/hour for this contract" like that's some huge amount.


Here's the thing about those recruiters.

Let's say they get a budget of $80/hour for the project. Their goal is to sell it to you for as little as possible so they can take the difference. So they're always lying to you about the customer's budget, because in truth it's about them maximizing their profit.

I once had a recruiter offer me $25/hour. I laughed at them and told them to not call me back unless they could do $60, which at the time was my rate. They called back about 15 minutes later and said the client had increased the budget and they could do $60.


I've landed two gigs with recruiters at about $75 / hr, and I've made it clear that I'll be raising my rates after several months, assuming things are working out. I think it just depends on the type of work you're doing. I would imagine iOS, Rails, Django, and anything other than PHP would probably be more.


are you doing php only?


I've been making a good living as a freelance web developer for the last three years and never once have I had to inquire for work. If you do a good job on your client's sites, create a lot of public side projects, and network well within your local community of developers, you'll have more work than you'll possibly be able to manage.


Have you considered outsourcing the initial client contact (numbers game/craigslist posting and replies) part of the process?


No, because I only do this a few times a year, and then I have enough work to last me several months at least. And now that I've been doing this for several years, I only have to do it maybe once or twice a year. I get enough repeat work, referral business, and long-term contract gigs that finding work isn't the problem it once was.


several months? What kind of jobs do you typically apply for? And if you do this only a few times, how do you stagger the client work ?


If you primarily do Rails or Django applications (i.e., complex web applications including database design) do you still call yourself a "web developer"?

I associate "web developer" with graphic design or dinky brochure sites. I've been calling myself a freelance programmer. Thoughts?


You need to think like your customer. If you are a subcontractor and your customer is a shop that is buying code, perhaps you can call yourself a coder. If you are selling directly to customers, who are buying websites, you may need to call yourself a web developer.

And, yes, that means that customers will expect the whole package. They don't know how to draw the lines between how the site looks, how the UI works, how the backend works, and how the hosting and the maintenance workflow will work. Those lines can be hard to draw even for experts, and drawing them is your job. Organizing that, and explaining it to them in their terms, is much of what they pay you for. So you'll need to learn to do some graphics and front-end work, or you'll need to learn how to subcontract that, or you'll have to become a subcontractor yourself or otherwise join up with a network of people who can band together to accomplish all the subtasks needed to build and run a site.


How do you handle just choosing the closest cities to you in Craigslist? Most of the web developer jobs can be done from anywhere so it doesn't seem like it would matter where the clients are located. Have you thought about searching all craigslists?


Does anyone else see this at the end of the post?

> "Hello there, fellow HN user! If you like this post, I'd really appreciate an upvote." [1]

I'm not sure how I feel about it, but I am curious how it's done.

1: http://i.imgur.com/gu47C.png


He is using Wordpress so I assume PHP: $_SERVER['HTTP_REFERER'];

http://php.net/manual/en/reserved.variables.server.php

HTTP_REFERER "The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted."


It's WP Greet Box and it's fairly controversial here [1]. I may remove it. I'm not entirely sure I see the problem with reminding HN users to vote for a piece of content if they found it interesting, but it's not a big deal so if people are going to boycott me over it, I'll dump it.

1. See discussion here http://news.ycombinator.com/item?id=1738183


I liked it, and prompted me to finally get around to registering, so the win is clear for HN as well.


What kind of projects/jobs do you get usually? I mean, do you do facebook apps, iphone, customize WP/drupal, or code websites from scratch, or...?


Have you been badly burn by a client? (ex. doing a lot of work without getting paid). What's the ratio of good client vs bad ones?


In my experience (seven years as a freelancer), most clients are good. You need to build up your sense of who is good and who is bad so you can weed out the bad ones early on. Things to look for are:

* Have they fallen out with their previous developer / team

* Do they start off saying they have no budget

* Have they decided it's a short job but have no noticeable idea of how long things will actually take

* They only want to pay at the end of the job, when they've received everything

* They won't sign a contract

On their own, none of these is a deal breaker (apart from the last one.) However, if you start hitting two or three points, that's real warning signs that they're going to be a bad client.

In the UK, I and a lot of other developers and designers ask for some money up front (for new clients, long running clients not so much, it depends what they're like.) I started doing this from advice from another freelancer, and it's the easiest way of weeding out bad clients. People who argue about paying 25% to 30% up-front also tend to be the ones who pay late or argue about paying the whole amount.

By not working for clients who won't pay a deposit, I've actually saved myself hassle in the long run by not having to chase for payments.

The most I've been ripped off for is £300, but I've some freelancing friends who are owned thousands of Pounds by various clients.

To mitigate risk, if you're doing a lot of work for a client it's best to break it down in to milestones and bill frequently - at least monthly. That way if they haven't paid a previous bill you can stop working until it is paid, and you have less to lose.

[Edit - trying to format list]


Any relationship you form needs to be based around the idea of 'good will'. Respect needs to be mutual, and the desire to find amicable solutions also needs to be mutually held.

I think it's usually quite easy to tell whether a client is going to be bad news; e.g. if a prospective client is looking for the cheapest solution above all other requirements, or they're very vague about deliverables it's probably worth giving them a wide berth.


Huh... what's freelancing? Oh.. working for other people's companies? Why do that?




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: