Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Freelance Web Developer Best Practices?

kdawson posted more than 5 years ago | from the like-a-pro dept.

Businesses 438

SirLurksAlot writes "My last employer had to make a series of budget cuts, and I was laid off. I have been on the job hunt since then; however in the meantime I have begun freelancing as a Web developer. This is my first time in this role and so I would like the ask the Slashdot community: are there any best practices for freelance developers? What kind of process should I use when dealing with clients? Should I bill by the hour or provide a fixed quote on a per-project basis? What kind of assurances should I get from the client before I begin work? What is the best way to create accurate time estimates? I'm also wondering if there are any good open source tools for freelancers, such as for time-tracking and invoice creation (aside from simply using a spreadsheet). Any suggestions or insights would be welcome."

Sorry! There are no comments related to the filter you selected.

Contracts! (5, Insightful)

nurb432 (527695) | more than 5 years ago | (#26023775)

First of all be sure you get signed contracts, or you will be stiffed more then you get paid.

Plenty of OSS timekeeping apps out there. Check out SQL-Ledger for a complete solution with accounting.

Re:Contracts! (4, Insightful)

ushering05401 (1086795) | more than 5 years ago | (#26023881)

Same note, different angle, make sure what you are getting paid for is something you can do not only ability, but time-wise.

Talented novice freelancers are often oversold freelancers, which leads to unhappy customers.

Re:Contracts! (1, Interesting)

Anonymous Coward | more than 5 years ago | (#26024735)

Aaaah yes I reminisce about the old .com boom days when that was really a problem for me, 20 hour/week part time job, part time college student, and 2 side freelance gigs, amazing I ever slept...and yes the freelance gigs in particular were pissed, an experience I'm not repeating...

Re:Contracts! (3, Informative)

Anonymous Coward | more than 5 years ago | (#26023943)

I've heard bad things about SQL Ledger so i'd suggest doing a good bit of research into its problems before deciding it is appropriate for your use. This may have changed, but what i'd originaly heard a few years ago was enough to scare me.

You can also take a look at LedgerSMB which is a fork of SQL Ledger when a number of people decided to improve it.

Personally I like the looks of TinyERP. http:/ its may be overly complex for your purposes, but i've been looking to migrate to it from QuickBooks for a while. (Yeah Quickbooks works but I hate it. The only reason I still have a windows vmware image.) Plus many linux distros already have packages for it and recently they added a web client.

There was another package i encountered that looked promising, but can't recall what it is. I'd done most of my research at the time on (Sourceforge) and (Freshmeat)

Re:Contracts! (1)

orasio (188021) | more than 5 years ago | (#26024731)

I always thought that TinyERP was great, its only handicaps being its name, and the lack of a nice and pretty web client.
Right now they have a good web client, and they changed their name to OpenERP. I have no excuse now.

Re:Contracts! (2, Informative)

Anonymous Coward | more than 5 years ago | (#26024409)

Signed contracts may not be enough in the UK.

If you are doing business with a small client, make sure you get written confirmation that the director(s) will personally underwrite your invoices to his company. If the client company has no money, then there is little you can do to recover debts unless the director's have been negligent, or you have this personal guarantee.

(I have recently been burned by this.)

Re:Contracts! (5, Informative)

Anonymous Coward | more than 5 years ago | (#26024533)

I have to disagree. I do a fair bit of freelance stuff on the side and I have never (not once) had trouble getting paid. At first I was very cautious but it just has not been an issue. Even on jobs where I'm basically dealing with an email address in another country the check has always cleared.

I terms of contracts don't waste your time. A contract is only worth anything if you can enforce it. Are you really going to spend thousands in legal fees going after a few thousand in wages. Just make sure they pay you as milestones are delivered and don't worry too much.

Get a lawyer (4, Informative)

plopez (54068) | more than 5 years ago | (#26023785)

Write up a standard contract. Make sure it defines what you will and won't do. Make sure that if anything is requested beyond what is listed the contract must be renegotiated including pricing. Making sure you are indemnified and held blameless. CYA.

Re:Get a lawyer (3, Informative)

teh moges (875080) | more than 5 years ago | (#26024087)

I'd clarify this by saying just to get a lawyer at the start to organize a 'standard contract', which means you don't need the lawyers involved for every little job.

Other then that, follow the parent's advice: Make sure the contract says exactly what you will and won't do DO NOT take a job where the client doesn't give solid, complete answers to your questions. Google 'scope creep', or learn the hard way yourself.

Make sure you track your time, not only for your clients, but also so you can learn to judge how long it takes you to complete a project. That skill is invaluable and will save you from many nightmares in the future.

Re:Get a lawyer (2, Interesting)

omb (759389) | more than 5 years ago | (#26024901)

Does someone want to post a standard US contract of this type. Ie simple!

Well (0)

Anonymous Coward | more than 5 years ago | (#26023789)

The best thing to practice for is a new career.

Pirate an obsolete version of Dreamweaver... (2, Funny)

John Hasler (414242) | more than 5 years ago | (#26023795)

...and you're good to go. Just look around the Web a bit. If they won't pay take down their sites: you'll own the domains.

Learn CSS (4, Insightful)

Anonymous Coward | more than 5 years ago | (#26023815)

For the love of god, do NOT make your websites using any of these:
- tables (for layout, I mean)
- Flash
- Java

Also, learn to code for Opera/Safari/Firefox first, then add conditional CSS for IE6 and IE7.

Take time to learn the real-life differences between JPEG and PNG. You shouldn't have a photo in PNG anymore than a logo should be in JPEG.

And last, know the limits of bandwidth and clients. Not everyone uses a high-speed cable connection on a Quad-core computer.

posted anon because of the freakin' Adobe Flash fanboys.

Re:Learn CSS (-1, Troll)

Ethanol-fueled (1125189) | more than 5 years ago | (#26024127)

Okay, I'll bite.What do you mean by "Java"? Surely you mean Javascript? I agree with keeping a site as simple and bling-bling-free as possible but using Javascript is a necessity for modern web pages, though I agree that the page should be fully functional with Javascript disabled or blocked from the browser.

Re:Learn CSS (1)

Greg_D (138979) | more than 5 years ago | (#26024187)

No, he means applets.

Re:Learn CSS (2, Funny)

vipz (1179205) | more than 5 years ago | (#26024203)

Pretty sure GP meant Java applets. You know, the little grey boxes from the 90s? :)

Re:Learn CSS (4, Insightful)

localman (111171) | more than 5 years ago | (#26024215)

Table layout is still very useful. I've seen some ugly, brittle CSS layout hacks that could have been solved with a very simple table layout. Yes, tables can be abused. Yes, in Netscape 4 they rendered painfully slow. Yes, CSS removes much of the need for tables. But dismissing tables entirely as a layout tool is pretty foolish.

Just my $0.02.

Re:Learn CSS (0, Informative)

Anonymous Coward | more than 5 years ago | (#26024379)

No, tables should ONLY be used for what they're intended for: to display tabular data. To use tables for layout purposes, is BAD PRACTICE nowadays.

Any GOOD web developer will not EVER have to rely on tables for layout, because he'll know how to do it with CSS.

The only situation where table layout is useful, is the situation where the developer is just not smart enough to use CSS for layout.

Re:Learn CSS (4, Informative)

Stormx2 (1003260) | more than 5 years ago | (#26024385)

There aren't many instances where tables give an advantage, and in the few instances it, the advantage isn't significant

Usually tables are a hindrance for me. I think in terms of divs now. And its always a pleasure to code. I didn't get that when I used tables, really.

Contrast tables with radical layout changes that can be made with small CSS bits. CSS was a pain before IE6, and IE6 still has issues, but for the most part CSS is an absolute joy to use now.

Cached CSS means your HTML files are all about content. It means less bandwidth use, and cleaner code.

Theres loads of reasons I like CSS, and not many for liking tables. My $0.02

Re:Learn CSS (0)

Anonymous Coward | more than 5 years ago | (#26024493)

The only thing worse than tables are divs used to make tables.

I'm not saying you do it, but I've seen it before. You tell someone to stop using tables and they essentially replace all their /s with


Re:Learn CSS (4, Insightful)

harry666t (1062422) | more than 5 years ago | (#26024421) :)

Re:Learn CSS (5, Insightful)

vux984 (928602) | more than 5 years ago | (#26024393)

For the love of god, do NOT make your websites using any of these:
- tables (for layout, I mean)

1) using tables for actual tables of course is perfectly ok (as you implied by saying 'for layout'
2) I would suggest "avoid" using tables for layout as much as possible, but don't discount them.

When faced with a situation where a table will just work in every browser you intend to support with minimal table html markup, and doing it with CSS requires divs nested in divs nested in divs nested in divs with all sorts of css hacks, and then STILL needs a javascript to run after the page renders to fix the widths and heights etc...

Yet its trivial to do with a table, without any javascript or browser hacks.

I just use a table.

Pure CSS is gold. But in my opinion browser hacks and javascript for layout are WORSE than tables. If you need them to avoid tables and make your "pure CSS" work, the cure is worse than the disease. (and really its not "pure CSS" anymore if you are using hacks and javascript)

As for flash and java. I again agree to a point. For most sites you absolutely don't want to make them essential for your site to operate, but there is nothing wrong with using either appropriately. And depending on what the site is, it might be appropriate to make them essential. without flash would be pretty pointless.

Re:Learn CSS (1)

SanityInAnarchy (655584) | more than 5 years ago | (#26024491)

When faced with a situation where a table will just work in every browser you intend to support with minimal table html markup, and doing it with CSS requires divs nested in divs nested in divs nested in divs with all sorts of css hacks...

Or you could just use CSS to make those divs behave like table cells -- which will work everywhere but IE. without flash would be pretty pointless.

Certainly everything homestarrunner is doing could also be done in svg/canvas and Javascript.

Re:Learn CSS (3, Insightful)

Oligonicella (659917) | more than 5 years ago | (#26024747)

will just work in every browser you intend to support

"which will work everywhere but IE"

Reconcile please.

Re:Learn CSS (0)

Anonymous Coward | more than 5 years ago | (#26024813)

Both of these points are reasons to use tables and flash.

If the website doesn't work in internet explorer, its unlikely to be of any use to the customer, and you've just given 2 places in my opinion, to stick to a cross-browser way of doing things

Learn jQuery (1)

SanityInAnarchy (655584) | more than 5 years ago | (#26024551)

As long as we're talking about best software practices...

Learn jQuery for JavaScript. And if you ever have to build anything bigger than a few lines of jQuery, read Douglas Crockford's stuff. You don't need to use it gratuitously, but Javascript isn't a horrible language -- it could have been much worse.

Learn PHP because you'll have to, but pick up something better (Ruby/Rails, Python/Django, etc) in case the client wants you to build something from scratch.

Re:Learn jQuery - Good grief... (4, Insightful)

FyRE666 (263011) | more than 5 years ago | (#26024705)

What a load of rubbish - have you ever seen just how slow Ruby sites run with any sort of significant load? Python too. PHP isn't the silver bullet or anything, but saying Ruby/python is "better" is just playing to the fanboy crowd.

Yes, I have used all 3 in commercial projects - have you?

And as for the idiots saying "don't use a table, you can make divs behave exactly like table cells, except not in IE6" - where to start... If you're having to code up 20k of CSS and AT LEAST the same amount of markup (probably a lot more) to emulate something that already works, and works realiably, then you're an idiot. The visitors don't care, your client won't care, Google doesn't care (really! go check it out) and you won't earn any more out of it. Saying "ah, but I can tweak it easier" is more junk - how many sites do you actually "tweak" after it matches the visuals? Virtually none. A redesign usually requires different content and completely different layout.

Don't even get me started on making the site work across mobile and email shots (yeah, you're going to be using tables, or lots of images and nothing else)

Tables have their place in the real world. Stop being elitist about it.

Re:Learn CSS (1)

rickb928 (945187) | more than 5 years ago | (#26024703)

If you make an all-Flash site, it won't show up on my G1. Mighty frustrating if you do this for a sports bar site I only look for when I'm scouting a place to see the game that has WiFi.

They didn't get my business today. Too bad for them.

Flash is the Web's PowerPoint, Which is the new Solitaire. Avoid for real work. Use sparingly, and where appropriate. Like cartoons, or intros intended to annoy people looking for information, not entertainment.

Re:Learn CSS (0)

Anonymous Coward | more than 5 years ago | (#26024871)

DON'T use tables for layout? Why? Just as the W3, you have absolutely nothing that substantiates why this choice should not be made, more than a vague "'coz it's not what they are supposed to be used for."

You saying that it's "wrong" to use tables for layout is as silly as people who pretend to be knowledgeable C programmers saying "don't use goto!!! bad!!!" - it's just like saying that a pair of scissors are bad, dangerous, and should at all cost be avoided, just because you might run around with them, fall, and stab yourself. Don't fear the damned tool, just learn how to use it and how to avoid its eventual pitfalls. (try grep the linux kernel sources or whatever for 'goto' - that'd make you gawk.)

Tables render and function identically on all browsers, the solution works everywhere, contrary to common and dirty CSS hacks that do not render identically everywhere - if they're even supported everywhere. You silly bandwagon jumper you.

Try AxoSoft (0)

Anonymous Coward | more than 5 years ago | (#26023837)

They have a very good bug tracking tool (Ontime) that supports hierarchy and the 1 user license is free.

a problem I have... (0)

Anonymous Coward | more than 5 years ago | (#26023839)

I seem to always get approached by nut-jobs who want me to make a website for them and are willing to pay for it. The problem is they often want me to work on a project that is either horribly conceived or just half-baked. And most of the time, they have some design in mind that I think is complete junk. I've been thinking about making the tag-line for my business to something like "building a steaming pile of shit to your exact specifications since 2001." What are you supposed to do in those cases? Just hold your nose and take the check? try to tell them that their site is completely unworkable?

Re:a problem I have... (1, Insightful)

Anonymous Coward | more than 5 years ago | (#26023893)

The answer to that is another question - how badly do you need the check? If next month's rent depends on it, hold your nose and take the check. Principles don't pay the bills.

Re:a problem I have... (2, Insightful)

Cylix (55374) | more than 5 years ago | (#26024235)

The trick is to get them to believe your idea is their idea. Some reading on confidence cons will probably help.

Sometimes you can just get by with, I like the base concept, but what do you think about these improvements.

Most times I've dealt with in house projects its always been as you described. In the end, it's not my dime, but I try to mitigate the damage as much as possible.

Re:a problem I have... (1)

genik76 (1193359) | more than 5 years ago | (#26024581)

Confidence cons are like ATM machines.

Just some answers (3, Insightful)

rho (6063) | more than 5 years ago | (#26023867)

Should I bill by the hour or provide a fixed quote on a per-project basis? What kind of assurances should I get from the client before I begin work? What is the best way to create accurate time estimates?

1. Maximize what you get from the client. Do hourly or fixed-quote, whichever is most appropriate. If you have the luxury of choosing only high-paying clients, well, nice to meetcha, Santa. How's the skiing in Hell?

2. Half up front. No exceptions.

3. Years of experience.

Re:Just some answers (3, Insightful)

FredFredrickson (1177871) | more than 5 years ago | (#26024521)

Always do hourly. Scope-creep will instantly ruin any fixed quotes you have. Even without scope-creep, the client will take a few looks, make you re-do everything because of some stupid reason.

Always bill hourly.

And, yes, upfront is good. I personally prefer pre-paid time blocks.

Always bill for time & materials (5, Informative)

duffbeer703 (177751) | more than 5 years ago | (#26023879)

Quoting a fixed price for projects is like putting a "kick me" sign on your back. You'll attract cheapskate clients who will chisel you.

Use a standard contract that indemnifies you and covers your ass as much as possible. Always create a statement of work for each engagement and create a new revision that gets signed off for each material change.

Always quote a fixed price (0)

Anonymous Coward | more than 5 years ago | (#26023973)

Billing time and materials is only acceptable if you can give a clear (and binding) projection of the time and material you're going to need. At that point you might as well quote a fixed price. In both cases, you will have to precisely define in advance what you're going to deliver. It must be clear to the client that changing their mind after the work is done to specification will cost extra.

Cheapskates will be deterred by the quoted price, if it is at all reasonable. The web design business is full of people who don't do it for a living, have barely enough know how to use a popular WYSIWYG editor and charge a pittance. If you offer a professional product and ask a reasonable price, the cheapskates will turn to the son of the guy that your brother knows from work.

Re:Always quote a fixed price (5, Informative)

Kukui23 (1416701) | more than 5 years ago | (#26024053)

Time and materials is essential when you have clients who can't make up their minds. Usually, start these people off with a bidded job, but take any change to the project as an excuse to concert the job to "T&M".

T&M is the best situation for the vendor to be in. It is the worst situation for the client to be in. A bid job puts pressure on the vendor. The threat of T&M forces the client to lock down their decisions.

This goes for just about any contract job. not just IT or webdev.

Re:Always quote a fixed price (2, Informative)

TheSpoom (715771) | more than 5 years ago | (#26024171)

I disagree. I think you should estimate as best you can for larger projects, but quote a per-hour rate as your binding price. Try to stay as close within your estimate as possible, of course, but I believe the grandparent is correct: if you quote a binding fixed price, people will increase the scope over, and over, and over, and won't pay you until you've done way beyond what the initial contract states.

Quoting a per-hour rate makes things easy and puts forward a message that you will do things as quickly as possible, but that the client will pay for any work that you do. This attracts honest clients who are willing to pay for quality.

Re:Always quote a fixed price (0)

Anonymous Coward | more than 5 years ago | (#26024417)

It depends on the type of client. Most small business clients I have dealt with want at least a binding upper limit. I think it's a result of too many amateurs in this business who don't complete projects on time and can't provide believable hour sheets.

I make it abundantly clear that all quotes and projections are for the specified work. If the client increases the scope or changes his mind, I let them know what the consequences are, i.e. give an estimate of the extra time and cost caused by the deviation from the original specification.

For projects where the client cannot form a clear vision of the desired result and the scope of the work develops as the project matures, I will obviously opt for per-hour billing. On the other hand I will not leave clients in the dark if they provide clear requirements. Depending on your hourly rate, your clients may be more inclined to accept per-hour billing.

Re:Always quote a fixed price (1)

soundguy (415780) | more than 5 years ago | (#26024795)

Materials? We're talking about web development here, which should be a pure SERVICE. If you bill for any kind of materials, you are considered a retailer/reseller and have to deal with specific sales tax, B&O tax, recycling & disposal fees, storage and transport laws etc related to physical goods in cities and states that have them. Also, very few people live in neighborhoods zoned for business so you can only do limited services when working out of your home. You generally can't warehouse materials without running afoul of local zoning ordinances.

Make the customer buy their own materials or have them pay you for them separately as an nontaxable reimbursement. If someone needs to buy software or hardware to do the job, YOU buy it and bill them for using it by the hour - that's "time and equipment" and it's how you bill when you are a pure service contractor. You get to amortize the price of the equipment over one or more years and you don't have to deal with most of the stuff that physical contractors have to put up with.

Re:Always bill for time & materials (0)

Anonymous Coward | more than 5 years ago | (#26024221)

I agree setting a fixed price is a bad idea. Clients always want modifications to be made after seeing your finished work. In some cases these modifications can take as long as the whole project.

In order to not be screwed over by cheap skate clients you should bill by the hour. By all means give your clients estimates on how many hours things will take.

Re:Always bill for time & materials (1, Informative)

Anonymous Coward | more than 5 years ago | (#26024641)

I work with fixed price.

Well I used to be a freelance web developer and now a business owner (small web development company).

So here are few advices I can give you after 10 years of experience.

Signed contracts aren't necessary if you work with down payments (up to 30% in my case) and quotes/tender. The invoice should stipulate that it is a down payment (% of the agreed sum) referring to a tender (with date) and in my country that's enough.

To make quotes estimate the time you think is neccessary and then multiply it by two...This is your limit (if you have to negociate). This is harder but it truly forces you to study the project. Make it very "verbose", every single feature should be described. Don't be an ass if they ask you extra features during the project...But remember this offer when things go out of hands.

And as a technical guy you will probably give a quote based on what you think it is worth (you always think it is simple...Don't you ;-)). That's plain wrong. You should try hard to imagine what your client thinks it should be worth. That's harder, but more lucrative. And cheap prices aren't always good for selling (they might think, you are cheap because you aren't good...Or worst: naive...)...That's a real science, always sleep on a quote, don't send it just after you finish it.

Something else if you aren't a good seller, visit communication agencies and propose your services as a freelance.

If you had a web agency experience, try to remember the price your ex company would have sold it and leave 30% for the communication agency as a commission. Use it as a selling argument for the communication agency. Propose yourself to write the technical part of the tender (Another of your added value).

Why? Because most communication agencies (well small and medium ones) have very poor technical expertises internally. They are usually good at visual stuffs but pretty ignorant when there is a "database" somewhere. "But" they have already customers, that's precisly the things you haven't yet.

Do not over charge on the first contract (you either need money fast, references or to prove that you are a good sub-contractor), make it attractive. Don't act too agressively if you aren't paid on time (it will happen...It happens all the time). That's probably the trickiest part for newcomers.

Here how I work: Leave 5 working days after the agreed date. Then "do not send email", first call them, or better ask them face to face "kindly" what the problem is (after a meeting or something). Always ask a date for the payment. If again they didn't pay you on time, turn "the annoying mode" on. In my case it means calling almost each day, always remember them directly that I haven't been paid yet, and better doing it in public. "Always" kindly, friendly but firmly each time you see him/her. If they seem to have a financial problem agree on a plan with periodic payment. Never be agressive! Never. Be annoying (really annoying :-)) but friendly.

I have always been paid in ten years, I never had to call a lawyer (yet). A lof of payments are done with a delay +/- one month (so keep that in mind)...Once you get cash...Save it! You will have months with no revenues...Sometimes even 3 or 4 months without new contracts...Be prepared for the worst.

Re:Always bill for time & materials (2, Informative)

nine-times (778537) | more than 5 years ago | (#26024513)

Quoting a fixed price for projects is like putting a "kick me" sign on your back. You'll attract cheapskate clients who will chisel you.

I disagree with this. You might argue that I'm a cheapskate, but if I'm going to pay a web developer, I want a real idea of what I'm going to be paying. If you quote me an hourly rate, I'm going to want to know about how many hours the project will take you so that I can calculate a total cost anyway. And I won't be happy if I have to pay more than I expected because you've estimated your time badly.

I think the key to quoting a fixed price for the whole project is to clearly define the project first. Make it very clear what you consider to be part of the project, and what's extra. Make it clear to the customer that if they want anything extra, they'll have to pay for it.

Remember, it's not just about legal obligations, it's about managing expectations. If you deliver what you said you would within the time frame and budget you've quoted, you're more likely to end up with a happy client who will hire you again and recommend you to others.

It may be tempting to give a low quote in the hopes of winning business, but I'd generally rather do business with someone who quotes me $x and charges me $x than someone who leads me to believe a project will cost $0.5x and then charges $0.9x. That may seem strange since $0.9x$x, and you'd think that I'd simply want to pay less, but really it's just that there's some business value in having predictable costs.

% up front and milestones (2, Insightful)

jimbudncl (1263912) | more than 5 years ago | (#26023889)

Even in the current economy, you're an asset. Don't under value your services; the worst mistake you can make is letting your clients get used to being billed for less than you're worth.

Aside from that, bill a percentage up front when you've all agreed on the specifications. Also, set milestones and bill another percentage when you meet them. This keeps you in the black and sets up expectations which help your client perceive you as a professional (now, be sure to _meet_ those milestones!).

As for time tracking... I'm sure there are good free solutions, but I haven't used any yet. I did use Quickbooks Online [] and it works, especially if you'll be working with others. Hopefully you'll be back at work somewhere soon! Working for yourself can be stressful.

Good luck!

Re:% up front and milestones (1)

Skal Tura (595728) | more than 5 years ago | (#26023951)

For time tracking, toggl is a good solution.

Re:% up front and milestones (1)

jimbudncl (1263912) | more than 5 years ago | (#26024219)

Nice, I'll have to look at that. Time tracking makes me ill, and I avoid contact with it at all costs.

Also, I just realized Quickbooks Online is only IE compatible... therefore I retract my recommendation ;) It's been years since I've had to track my time.

Re:% up front and milestones (2, Informative)

Firehed (942385) | more than 5 years ago | (#26024377) is also good for freelancers - I don't use them (I have a desktop app, Billings, Mac-only, which I prefer) but have seen what it can do and it's pretty solid. Free to get started I believe.

On that note, I'd read the hell out of They have lots of great advice and opinions for billing practices, contracts, invoicing, determining your worth, dealing with clients, and all of the stuff that you'd have to deal with by switching to freelance work (surprise!).

I will say that what you charge will drastically change what kind of clients you can get. If you can produce some damn fine work, then don't charge what a high school student with some free time will, because then you'll get stingy clients who are demanding crazy requests.

Learning to say "no" is also a good skill. Don't overdo it, but agreeing to bad terms is setting yourself up to excess stress and failure.

Again, I'd strongly recommend reading I'm not affiliated with them in any way, but have found them to be a great resource in my own freelancing experience.

Good estimates (5, Funny)

Mad Merlin (837387) | more than 5 years ago | (#26023899)

What is the best way to create accurate time estimates?

First, take your best estimate, then multiply it by two, and then increase the units to the next largest. So, if you estimate something will take 3 hours, tell the client it'll take 6 days.

Re:Good estimates (0)

Anonymous Coward | more than 5 years ago | (#26023921)

So a three month job will take 6 years?

Re:Good estimates (2, Insightful)

Dan667 (564390) | more than 5 years ago | (#26023985)

If he was talking about pure run rate to code then yes. I always used run rate to code times 10 to estimate. Surprisingly, it works fairly well as you need to do a bunch of stuff besides coding like collect requirements, documentation, etc.

Re:Good estimates (1)

Nefarious Wheel (628136) | more than 5 years ago | (#26023997)

So a three month job will take 6 years?

Only if you're lucky.

Re:Good estimates (2, Insightful)

Anonymous Coward | more than 5 years ago | (#26024155)

There's a better one... measure the work and keep track of your historical records. These multiplication techniques really only mean that you have no idea what you are doing.

Re:Good estimates (1)

AuMatar (183847) | more than 5 years ago | (#26024783)

WHich only works if you're doing the exact same thing you've done in the past. Which may be true for web work, but sounds incredibly boring.

Agile? (0)

Anonymous Coward | more than 5 years ago | (#26023907)

I think with regards to scaling time, it depends completely on the client. Some people just don't understand the way the web works and think its just like print media. I think if you set up quotations by breaking up the site into manageable sub-projects (designing a homepage, integrating it with a cms or rolling your own, developing a reasonable search engine for the site) and thinking how much time you think each task will take, you can easily tell the client how many hours something would cost and either bill the project as you or they see fit.

Mint money with maintenance (5, Insightful)

Fished (574624) | more than 5 years ago | (#26023935)

I do some websites on the side, and one thing I do that positively mints money is offer maintenance contracts. Basically, here's the deal. I offer two hosting plans:
  1. One for $10/month, and I charge $50/hour for any updates.
  2. One for $25/month, and I will do minor updates for free.

I carefull define what constitutes a "minor" update--basically, anything that doesn't involve a complete site redesign or a lot of graphics work is covered.

Here's the beauty of it: about half my customers go for maintenance and in the 4 years I've been doing websites on the side, I've gotten 12 customers that have maintenance contracts. I haven't done one update under maintenance. I just sit there, quietly collecting $25/month for doing absolutely nothing. And, even if I do have to do something, so long as it's not alot of graphics work, it only takes me a half hour or so anyway.

Also, as others have said, get a deposit before you start work on a site. I do sites on a flat-rate basis, and require 50% up front. Otherwise, you can spend a lot of time working on a site for someone and never get paid.

Also, remember that you will make as much money on hosting in general as you will on design--get a reseller account with a good hosting provider (I use hostgator, but if I had to do it again I'd probably get a dedicated server because hostgator's rails support sucks.) I suggest using paypal subscriptions to make sure you automatically get paid for hosting. They're cheap and easy to setup, and it all happens automatically.

project pier is a good basecamp alt. (1)

jaymz2k4 (790806) | more than 5 years ago | (#26023937)

We used project pier [] for a while internally before the PM's insisted we move to clockingit. The thing I like about project pier is that its basically basecamp, is very simple to use and you can install it very easily on your own dev server.

for managing your project or interacting with a client more than a ftp dump have a look at it.

Re:project pier is a good basecamp alt. (1)

Firehed (942385) | more than 5 years ago | (#26024455)

Seconded on PP. Free, easy to set up, and makes perfect sense for my workflow. I doubt it's the right tool for everyone, but if you want to basically break down massive projects into maintainable checklists, it's the way to go*. Most other organizational programs I found that I'd spend more time organizing the project in the app than actually _doing_ the project, but PP just makes data entry a lot more natural for me. Takes about five minutes to install on any *AMP system, so I'd strongly suggest giving it a quick test if nothing else.

There's also a similar web app, ActiveCollab (paid but fairly cheap) that offers some additional functionality - mobile versions and a couple other things. I believe it's based off of a fork before PP went open-source or something of that nature, if you care.

* At least among PHP-based apps that I could host myself. Not a ton of options, but I do my development on a MAMP install which contains only PHP and not any of the other "P" systems, which ruled out using Trac among other popular apps. That said, I prefer it by far, so the fact that it's one of few things that I could actually install on my local working/dev system was a big plus.

Re:project pier is a good basecamp alt. (2, Interesting)

jaymz2k4 (790806) | more than 5 years ago | (#26024741)

PP derives from a fork of ActiveCollab before it went closed-source, AC being a knock-off so to speak of Basecamp.

The one thing that stopped PP being adopted for my org. was the lack of built-in time tracking. I think AC has that in a much later version but ClockingIt has a 'push-on/push-off' AJAX-y timer which the PM's at my place fell in love with :(

PP would work well for a freelancer I think, if they need to do invoicing and bill for time by hours I'd use a little desktop timer, theres one or two for KDE in the PIM tools I think.

plan well, overestimate time (2, Insightful)

friskyfeline (1053432) | more than 5 years ago | (#26023939)

Several years ago I did exactly what you are doing. I worked for several companies as a freelance web designer/developer. Here is what I learned: 1. Overestimate time demands. Use the 2x, 3x principle. For new projects figure out what you will need in terms of material resources. Break down projects into subparts and estimate the time it will take. For technology and projects you are familiar with double your time estimate. For new technology you are less familiar with triple the time estimate. If the learning curve is very steep use 4x estimate (avoid this). 2. Use a contract with your client based on 1 third up front, 2 thirds midway, and final payment on shipment of product. Specify this in writing and get it signed by their billing department. If they won't agree then consider another project to work on. 3. Consider your billing and internal planning such as flow charts for projects just as important as doing the actual work. A lot of new freelancers fail to do this and get burned. 4. If you use artists work or do your own graphics use sign off contracts to get your client's approval that the final design is acceptable. Most clients will at this point say, "It needs to be approved by marketing...," or something similar to this. This step can save you from redoing this endlessly for free. 5. Be assertive about following the above suggestions. Part of running your own business is sticking up for your rights. If you don't others will take advantage of you.

another tip (1)

ViralInfection (1221188) | more than 5 years ago | (#26023971)

I'm in the same situation, try for bidding on projects or other similar websites like or never-the-less. I like oDesk, it does all the management for me, but cuts 10% on anything you make, creates less of a hassle for me.

What I'm doing (4, Informative)

jjohnson (62583) | more than 5 years ago | (#26024005)

I figured out an hourly rate based on my skills and the prevailing rates. When someone wants me to do something, I get a clear statement of what the work entails. I give an hourly estimate in the form of a range (e.g., 20-25 hours), and tell the client that the top of the range is a cap--after that, I turn off the clock and finish the job, and count the 'lost' hours as an expensive education in estimating (clients quite like that there's a ceiling on their costs and that I'm apparently willing to take a hit for doing things badly).

Then, when I'm estimating, I make sure that I understand the requirements clearly enough that I (almost certainly) won't ever hit that cap. I'm generous in my estimated hours, and if possible, come in at or below that floor of my estimate, which also impresses clients. I'm very upfront about the time taken being a range to handle unexpected difficulties.

For larger jobs that I quote, I break it up into estimable pieces, and call them milestones.

For jobs under five hundred dollars, I do the work and bill. For jobs over five hundred, I get half up front and half on delivery. For large jobs with milestones, the half up front, half on delivery is for each milestone. Milestones are structured with a clear deliverable so that the client feels like, if they stop at that point, they've got a recognizable thing for which they paid.

So far it's worked pretty well for me. The most important part has been long discussions beforehand so that a clear statement of requirements is agreed to before work starts. Then, if the client says they want something different, I've got clear grounds for either revising my estimate or calling it 'out of scope' work with a separate estimate/bill.

Re:What I'm doing (1)

xant (99438) | more than 5 years ago | (#26024297)

Half up front? Really? What kind of clients do you have who are willing to front money in this way for software? As software development is generally considered to have no up-front expenses, and you aren't Jason Statham, I don't know who would be willing to pay that.

Re:What I'm doing (1)

jjohnson (62583) | more than 5 years ago | (#26024361)

It's what I was told to do by the other consultants who are in the same (generally web-based stuff) field (and who refer work to me or subcontract out to me). They're doing it, and I haven't received any pushback on it. When I was an IT manager, it was also standard practice for large consulting outfits who worked with us. It limits the screwing either side can give each other, and everyone I've put this to seems to recognize that.

As I said, though, large projects are broken down into manageable chunks, so in practice, half up front is somewhere between a couple hundred and several thousand dollars. It's different if they simply want to pay me hourly over a period, but for project based fees, I've never had a problem doing this.

Re:What I'm doing (1)

macjosh (1047136) | more than 5 years ago | (#26024497)

The main reason to bill a 50% deposit is cash flow for your business. Most of the clients you work with are obviously going to be business owners themselves, or are making managerial business decisions, all of whom most likely have experience with these types of purchases. When you're looking at a development that takes weeks, if not months, this is a fairly reasonable and standard industry practice for maintaining positive cash flow.

Re:What I'm doing (1)

markrich (1294904) | more than 5 years ago | (#26024567)

For new clients I always get half up front. It does two things, 1. insures the clients interest in the project 2. insures you get something for your work if the client bails. I usually require NDA from the client so they don't drop me for someone cheap once we're making progress.

My experiances (5, Informative)

vw_bob (117531) | more than 5 years ago | (#26024009)

I started freelance web development more than 10 years ago. I built my company on my freelance work. So I can speak with some authority here.

Here's my advice in bite-size nuggets:

- Only bill time and materials. Do not ever agree to do fixed fee work or you will loose your shirt.

- Incorporate. It's actually easy and gives you more protections.

- When tax time comes around have a CPA do your taxes.

- Find a basic, easy to read, even handed/fair contracting agreement that you should always try to use. Have it reviewed by a lawyer. Include these points: mutual indemnification, your *hourly* rate, terms of ownership that gives you ownership over work produced until its paid for in full. Include a clause that allows your clients to cancel at any time without warning but they still have to pay for hours worked. (More on why later.) Any contracts provided by your clients have reviewed by a lawyer.

- You *will* eventually (probably sooner rather than later) be stiffed by a client in part or in whole. Have a lawyer you can call to write them a letter. You'll at least get some payment if you have a lawyer write a letter for you. Be sure to know how far you want to push this. The point of a lawyer is not to sue, but to get partial payment.

- You can set your hourly rate more or less randomly. Look to see what other independent contractors are charging (as best you can) and set your rate proportional to your experiance and confidence. Raise your rates annually.

- There are numerous ways to handle proposals. Here's what I do and what I recommend: First, spend time talking with your leads to learn what it is that they need. Write this down in a proposal format that includes the following: 1) A short summary (1 to 2 pages at most) of what the client needs. 2) How you propose to solve their problems. This pretty much says that you'll provide what's listed in section #1. 3) A list of technologies and techniques you're likely to use including languages, platforms, frameworks, database, techniques such as Test Driven Development and Continuous Integration, Source Code Control systems, etc. Provide a short blurb about each item listed and why it's good. And 4) provide a guesstimate of how long you think it will take. More on this in the next bullet point.

- To estimate projects follow this process: 1) break the project down into major steps you'll need to follow to complete the project. This would normally be something like building infrastructure, security, each major section of the application, etc, etc, etc. This is an art and is learned through experiance. Add 33% more for meetings and project management. Add 33% more for trouble shooting and debugging. Add 33% more for post deployment support. Make it very clear to your client that this is *just a guess* based on experiance. As a part of your project management strategy hold at least weekly meetings with your client to show them what you've accomplished, tell them what you're working on, and update them on anything that has taken longer or changed in scope on the project and how that impacts your estimate. Your contact should allow them to cancel at any time. The combination of your initial guess and your weekly updates, combined with the knowledge they can pull the plug at any time gives your client confidence in your project and comfort to pay hourly.

- Invoice bi-weekly and give a discount for payment in the first week. We give 3% discount for early payment in our standard contract. We get good cash flow and our clients save money.

- To find leads for projects I recommend that you network. There are many professional networking organizations out there as well as your local chambers of commerce. Also, attend conferences in your technical expertise. Submit topics to those conferences and try to talk at them. Write for technical journals. Most of these are very easy to get into. In terms of sales, don't try to sell. Instead listen to the problems your leads have and tell them what you think they should do, even if it means steering them away from you. This builds trust and will lead to referrals and eventually more work. Just be 100% honest in all cases and always try to give your clients the best possible advice.

Well, I'm pretty much tapped out in feedback. My company is Alagad and our website is If you have questions or want a little mentorship feel free to drop me a line through the website contact us form. I won't help you unending, but I don't mind answering some questions that may arise.

Good luck. You're on your way to a much better income and financial freedom.

Re:My experiances (1)

Luke has no name (1423139) | more than 5 years ago | (#26024649)

I saved this page on my computer for future reference in case I do ANY freelance web or software development. Sounds like you know what you're talking about, and it sounds like you have reasonable proposals.

Re:My experiances (1)

Shemmie (909181) | more than 5 years ago | (#26024857)

Snap - what a really well thought out piece of typing. Thanks a lot for sharing.

Re:My experiances (1)

fm6 (162816) | more than 5 years ago | (#26024893)

You're right, that's a well thought-out piece that strongly backs up the author's claim that he's been doing this for a while.

Quibbles: if he's that kind of independent worker, how come he has time to goof off at slashdot?

And why can't anybody remember the difference between "lose" and "loose"?

Re:My experiances (1)

nniillss (577580) | more than 5 years ago | (#26024899)

Thank's for the nice and well-written advice which should be useful for many.

However, you are consistently writing experiance when you mean experience. Just my two cents.

get EVERYTHING in writing. (1)

redcircle (796312) | more than 5 years ago | (#26024019)

I typically will charge like 1/2 up-front and 1/2 at the end. If you plan on doing that make sure you include in your contract an expiration time of your original quote. I've had customers that paid their initial fee then we didn't hear from the client or get any content from them. 2 years later they call and want the same service at the quoted rate. Since then I have increased my rates twice and have stopped doing those little projects. Because we didn't put a expiration on that quote we are stuck doing this at a much lower rate. Thankfully it is a very simple site.

simple opensource billing software (1, Interesting)

Anonymous Coward | more than 5 years ago | (#26024035)

ive been web freelancing for around seven years, and in that time ive developed my own open-source billing tool, eboshi [] , written in rails. its no quickbooks, but it suits my needs and spits out pdfs. feel free to use it, give me feedback, or fork it and hack away!

Learn a trade. (0)

Anonymous Coward | more than 5 years ago | (#26024069)

1. Always stock a supply of card board, and a black marker, it will come in handy for those 'will work for food' signs. In a pinch, they make great temporary shelters.

2. instant ramen is your friend, learn to love it.

3. Consider having a sideline ready, if you haven't already, file of UI or welfare.

4. Organize your finances, make sure you can find cheap rental accommodations where you wish to work.

5. Downsize your lifestyle, pawn everything that isn't useful.

If you have the funds, consider upgrading your education. Learn a trade, something useful.

No offence but you don't know what you're doing (3, Insightful)

syousef (465911) | more than 5 years ago | (#26024073)

The questions you're asking are very broad and very basic. You're going to fall flat on your face and work long and hard for a net loss if you're not very very careful.

On the one hand you're asking for a good way of doing estimates, but on the other you're asking if you should provide fixed quotes. It should be clear that if you don't have much experience estimating, you shouldn't be shooting for fixed work. You need to get these skills up BEFORE taking on this kind of work (and certainly before you take it on a fixed price basis).

Your best bet at this stage is to apply for some short term contracts, paid by the hour while you develop your estimation skills. Go through an agency to begin with if you can. Do this and provide YOURSELF with a fixed estimate at the start of the job. Write down your assumptions (which should always be part of any fixed quote - unless you want to work for free when the scope creeps). Only when you're able to create accurate estimates should you take on fixed work (making sure anything you sign limits the scope of the estimate). Make sure you're permitted to see the details of all contracts regarding your employment, and keep a copy to refer to if you do decide to take anything on without an agency. (Fixed contracts will be different again to hourly, but you need to start getting an idea of what the language is like in your employment contract if you're going to handle all this yourself).

Shameless self plug (1)

Fahrvergnuugen (700293) | more than 5 years ago | (#26024083)

We're building a basic project management / task management tool called ProjectLink [] .

Its currently functional as a task management tool (it even has an API) and is free to use, all we ask for is your feedback.

We are working very hard to build in native quote/invoice creation right from the tasks to integrate with our InvoiceLink [] and OrderLink [] systems.

How Magazine (1)

Orig_Club_Soda (983823) | more than 5 years ago | (#26024109)

Look for past issues of How Magize (I believe 2007) They did a series articles that answer your questions.

my advice (4, Insightful)

NickBuzzica (1426033) | more than 5 years ago | (#26024119)

1) build a nice portfolio and get references
2) NEVER work without advance payments
3) never call a potential client more than 3 times before getting a deal signed
4) never ever fail in doing what you're hired for
5) paypal will do for invoicing and billing. get a premier/business account and you'll be fine
6) get a set of must-have documents: an agreement, NDA, proposal wireframe, a set of relevant links for each project category
7) avoid custom coding. there are a lot of open-source apps today you can use code from
8) donate to them!
9) use modeling and frameworks. avoid coding pure language, you will waste precious time
10) don't get jobs just because you need the money!! very important.
11) decide on some hourly rates for various category of tasks and only give discounts for large projects. calculate fixed fee projects' values based on these rates.
12) always add 10-20% on the top of any quote you generate. clients will always surprise you with stuff like "i thought that was assumed"
13) establish a sales strategy and stick to it: "i'll do it for X-10% instead of X if you decide today" or "I can do both your projects for 75% their total value"

took me 9 years to learn this on my own. the very hard way. is the result of all this work.
Hit me up if you need help!

Quicken, Nolo Press, and Incorporating (1)

Timoteo47 (1080787) | more than 5 years ago | (#26024137)

Intuit offers a free version of Quickbooks called Simple Start [] which allows you to track expenses and generate invoices.

Nolo Press [] is a good resource for legal information. If you plan on freelancing for a while, you should consider incorporating to provide liability protection. Also, get business insurance, a good accountant and a lawyer.

Good luck!

Written communication and simplicity is key. (3, Insightful)

Calavaro (1426081) | more than 5 years ago | (#26024143)

1. Make sure your client understands that changing a website core mid development will make it push past scheduled completion time AND drive the costs up. Sign contract (talk to a lawyer to get correct wording etc).
2. Make sure they understand that changing website mid dev... yeah.
3. Written communication each and every time or you will be SOL when the client decides to change the website mid development... you never win an argument with a client unless it is all documented.
4. Quote them a whole project if you feel they are willing to cough up the cash for it. Take deposit totalling no less than your expenses (eg. travel, lunches, new software, etc)
4.1. If they state during initial talks "Pricey/too much/whatever GAH" quote a base site, (text, images, pretty banner maybe even a basic flash animation or 2), then each addon priced separately.
5. Make sure they understand that a lot of the work is behind the scenes, but show them the pretty to satisfy their visual urges.
6. Be prepared to age quick.
7. Know people are relatively clueless and needs basic stuff explained again and again. Write it down in an easy to understand format and email to them. Keep it short, most clients develop a severe form of ADHD when they need to make an effort to understand you.

Thoughts on freelancing. . . (3, Insightful)

Hero Zzyzzx (525153) | more than 5 years ago | (#26024157)

I've been freelancing on and off over the last 9 years or so, and I just came out of three years with a successful company where I learned a lot about how to be a consultant, how to create happy clients with clear expectations on both sides and how to not get soaked. Here are some things I've picked up, YMMV.

  • Always bill hourly. Always. Don't work with clients that aren't comfortable with that, you will get screwed. The talking points of the conversations I have with prospective clients go something like: "If you ask me to do something, you should assume that you're paying for my time - it's that simple. I don't work for fun, though I love my job. Have you ever had a consultant start ignoring you before a fixed-bid project is finished? That's because you aren't paying hourly and they have given up on you - they have too much time in for the amount you've paid. Because you - and all my other clients - are paying hourly, I don't ignore anyone. Time and again fixed-rate consultants burn out because they find they are doing too much work for free - I'm in this for the long haul and part of that is everyone paying their share so I don't burn out." I like to talk long-term, looking for clients that want me for more than just a one-off project.
  • Give estimates, but stress they are just estimates, the client is still expected to pay for the full amount of time a project takes. Let your client know you will check in with them frequently as the hours pile up to ensure you're on track or - if you aren't - that you'll discuss how to get the most important 90% of the project as quickly as possible.
  • Conversely, I think it's OK to do fixed-rate projects for long-term clients and/or where you've done a similar task many times over. Generally, I would avoid it, though.
  • Track all your time - even the non-billable sys-admin-y / business development stuff. It'll be invaluable when it comes to planning to know exactly where your time is going.
  • Double any estimates before you pass them to the client - things always take longer than you think (the devil is always in the details), and the client will be happy if you come in under what they were expecting. Many consultants are uncomfortable with this idea, but it has never been a mistake as far as I'm concerned.
  • Bill every month, or on whatever schedule you normally bill on. Get in the habit of billing regularly - too many consultants get too busy to bill their clients! It's odd, but totally common.
  • Don't take projects that're completely outside your skill set. Admit your limits - taking on a project that's out in left field is a sure way to a bunch of stress and an unhappy client. An example: if you don't really have an eye for design, find someone that does that you can trust.

For time tracking and invoicing, I'm enamored with (referral link [] , non-referral link. [] ). It's cheap, you can accept online payments, freshbooks can snail-mail invoices for you (!), the billing options are pretty flexible and the timesheet app is pretty slick with desktop widgets aplenty. I haven't found an open source project as polished and featureful as freshbooks - please let me know if something like it exists. SQL-Ledger is not a competitor to freshbooks - not by a long shot.

Hope this helps. Good luck!

Re:Thoughts on freelancing. . . (2, Informative)

71thumper (107491) | more than 5 years ago | (#26024869)

As someone who has "purchased" literally millions of dollars of consulting working from both large firms and single individuals over the past decade, I heartily recommend this post.

The major thing I look for is an estimate, and then constant, regular tracking against that estimate. If something starts to unwind or get out of scope, I want to know early and often because that allows me to make my decisions.

My bosses -- in fact, anyone's bosses -- don't like surprises. So we work together so there aren't any.

Keep it simple (0)

Anonymous Coward | more than 5 years ago | (#26024165)

Finding the work is usually the easy part... getting paid is harder :) Here are a few of my favorites to help get the right types of clients:

-Prepare a quick 1 page estimate rather than a full blown statement of work. This helps make sure that you and the client are on the same wavelength. If necessary you can prepare a full SOW after this step, but otherwise don't waste your time or theirs.

-Require a payment up front. I usually go with 25%. If the client doesn't want to do this, you'll likely have trouble collecting later. After this initial payment, require additional payments at milestones. If you give/show the client something tangible they'll be fine with this.

-I prefer to bill hourly. It's a good way to combat scope creep.

-Contracts are good, but in general if you don't feel comfortable about the business transaction with just a handshake - walk.

There are a lot of OSS tools out there, but I'd suggest figuring out your business model first. Once you've done this, then you may choose some tools.

SitePoint (1)

Larry Lightbulb (781175) | more than 5 years ago | (#26024239)

Although there'll be a lot of good advice about this on /., I'd suggest going to SitePoint and reading up on how people who are already doing this deal with problems.

Here are a few sites you might want to vist (1)

xmuskrat (613243) | more than 5 years ago | (#26024243)

For timetracking/project management. [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []

Suggestions from another web developer freelancer (4, Informative)

TheSpoom (715771) | more than 5 years ago | (#26024257) [] is the best freelancing site I've seen so far. They seem to genuinely respect both sides of the equation, the clients and the freelancers. Compare that to, say, Elance, which seems to treat us like interchangeable cogs. And the built-in escrow is also very nice.

Brush up on your English. A well-written bid makes you stand out among the rest, especially when the rest come from east Europe, for example. This isn't to say that all businesses there are bad, but some most definitely lack decent writing skills, and if your bid is easier to read, it makes you look more professional, and thus makes the client more likely to choose you.

Bill by the hour on all but the smallest projects until you are actually running a business where it's more than just yourself and you have an idea of how much things will end up costing in the long run. Legitimate companies won't take this as a bad thing if you provide an estimate at the same time.

Build payment times into your contract. If at all possible, get all your pay up front in escrow, but if that's not possible, make sure you state something like Net 30 days as your payment terms in the initial contract. If not, you could get shafted really easily when a client takes three months to pay you.

Encourage repeat business. Get into a discussion with your clients about their business, and suggest areas where you could help them achieve their aims. A versatile web developer can do many things for a business.

Place what you'll do into the contract. I don't think you need a lawyer like some of the sibling posts here as long as you're specific. Scope creep can really, really suck if you let it happen.

Oh, and if you happen to need any help with PHP development, give me a shout. ;^)

Consider learning CMSs and taking small jobs (1)

matthewncohen (1166231) | more than 5 years ago | (#26024279)

I have spent the past couple years getting my foot into this world from scratch (no significant prior experience) and I have found CMSs like drupal, joomla, and wordpress to be invaluable for my work with small businesses, non-profits, artists, health practitioners, etc.

These jobs are fairly short and easy to do. They can be a way of building your confidence, professional manner, and estimating abilities without getting too deep in over your head. Of course you can also work with building sites from scratch and updating already built sites in order to develop those skillsets.

The point is to take on low-impact jobs working for people you actually like and hopefully share values with. This makes the professional relationship a lot easier and provides a lot of useful education for you in the process.

I do a lot of work for barter too. It's nice to be able to get services that are important to me like massage/bodywork or auto-repair as I am going through this learning process and expanding my professional horizons. I also get paid a fair chunk of change now and then for relatively minor jobs from a development perspective.

Trust your gut! (0)

Anonymous Coward | more than 5 years ago | (#26024289)

I used to freelance a bit, and got burned a couple of times by clients who were assholes, and jobs that I never should have taken. In hindsight, they always smelled a bit funny from the beginning, but I ignored it to get the work. Trust me, save yourself the trouble, and don't take a job that doesn't feel right from the start.

Re:Trust your gut! (1, Funny)

Anonymous Coward | more than 5 years ago | (#26024829)

assholes smell funny? Thanks for the valuable insight!

LLC or Incorporate (1)

Nohbdy001 (265019) | more than 5 years ago | (#26024309)

It isn't the geekiest part of doing freelance web work (unless you are a finance nerd), but it would be wise to setup an LLC or to incorporate your home business.

Get an accountant involved that knows how to file for LLC status in your state. Should anything go drastically wrong (a bug in your code causes the site to be hacked and your client is out for blood), your personal assets will be safe.

As an added bonus, your accountant should be able to help you get all kinds of neat tax deductions from running your own business too.

If you feel like dabbling in the finances yourself, there are several online services out there that will help you fill out and file the forms on your own to either incorporate or form an LLC.

A List Apart (2, Interesting)

iangoldby (552781) | more than 5 years ago | (#26024315)

If you are seriously interested in freelance web development, there is a great community of like-minded people on A List Apart [] , quite apart from a vast repository of well-written articles that go way beyond what you've so far asked.

bill hourly (1)

klassicd (640042) | more than 5 years ago | (#26024405)

Per-project pricing can be very difficult. Clients always request new improvements or changes once they see your work. If you're stuck with per-project pricing you will end up battling the client over important changes they request. Bill by the hour and always create a statement of work. Your statement does not have to be very detailed. It should be a high level overview of your development goals. It should include time estimates for each phase of the project. If you are going to be investing over 40 hours of work into a project it's a good idea to request a retainer. The client should be willing to put 10% to 25% down. New clients may be weary of putting down a deposit. In this situation it's a good idea to break down the project into smaller phases. After each phase they should be required to pay you whatever hours you have logged. Always keep detailed track of your time. It's important that your quotes are very close to the time billed. This will be trust with clients. Time everything you do and always compare it to your original quote.

After five years of just about paying the bills... (3, Informative)

mdavids (143296) | more than 5 years ago | (#26024439)

  • Don't try to do everything yourself. Subcontract to other developers with complementary strengths who play nice with others: a couple of graphic designers, maybe a copywriter, sysadmin, or sales/accounts/office admin genius.
  • Don't try to support too many products/platforms. If you use a different tool for every project, just keeping up with security updates will either become a full time job, or else you will get hacked at some point (I did). Life got a lot easier for me when I decided to specialise in Drupal [] .
  • Get yourself a VPS or two. Don't bother with shared hosting - it's too expensive and limited. Your clients' hosting fees should pay for the effort _you_ put into keeping their sites ticking over, not for your hosting provider's cPanel licenses.
  • About 20% of your time will be spent on technical work. The rest will be negotiating and hand-holding. You've got to develop some social skills.
  • Insist on using a professional graphic designer (unless you're a graphic design genius yourself). No matter how adamantly a client initially insists that the look of their site isn't important, they will change their mind.
  • Pick your clients carefully. Don't be afraid to say no. Unless you're a scam artist, say no to anybody who proudly proclaims their computer illiteracy. If they don't understand what you do, they won't appreciate it. Likewise avoid clients who think they need a website, but don't know why. Ask them what they want to achieve with the project.
  • You probably won't find small/medium clients who will be happy with paying per hour. Demand a 50% deposit at commencement of work, plus timely delivery of whatever you need from them to complete the job.
  • Don't take on anything that you think will take more than a fortnight's work, for which you should quote four to six weeks. Every project takes longer than you would expect, so if you expect something will take a couple of months, you may be out of business before you get paid. Split large projects into smaller stages if necessary. Even the best clients (not to mention developers) will have a tendency towards feature creep. Make it clear that additional ideas, no matter how brilliant, are for later stages of development. Throw around some buzzwords like "agile" and "iterative".
  • Don't expect to do more than four billable hours a day. Don't let yourself burn out, and keep it interesting. If you don't do a lot of reading and stretch yourself with the occasional hobby/charity project with features that paying clients won't generally ask for, you'll be a miserable dinosaur in three years.
  • Mind you, don't do discounts/freebies unless you really believe in the cause. If you wouldn't do a fun run, sell raffle tickets, or shave your head for them, don't do a website for them. Be clear about the limits of what you'll do.
  • Did I mention you should develop with Drupal [] ? Check out this awesome presentation on catering to small clients with Drupal [] .
  • Catch up on the Rissington podcast [] . They're more graphic design focused, but have lots of useful tips for dealing with clients and organising your business, amusingly delivered, and advice about cheese.

Invoice creation (1)

spockboy (1007307) | more than 5 years ago | (#26024449)

For invoicing, this piece of software has been a breath of fresh air for me:

Simple Invoices []

ah Shoot the client? (1)

shareme (897587) | more than 5 years ago | (#26024495)

Ah shoot the client?

Standard Practice (1)

StormReaver (59959) | more than 5 years ago | (#26024537)

After I started freelancing, I wrote up a contract specifying what I would do, how payments were to be handled, how project termination would be handled, my responsibilities, my client's responsibilities, etc. I then paid a contract lawyer to draft a formal contract based on my terms (he charged me $150). He told me my draft was so well done that he needed to make only small changes. Nonetheless, I thought it was worth the money. Fortunately, I didn't have any problems with my first client, so I didn't need the contract there. For all other jobs, though, I require the client to sign the contract. It boils down to a few points:

1) I get paid by the hour (to the nearest 15-minutes), whether I'm programming, traveling, talking on the phone, etc. If it's related the the project, I get paid for it.

2) We can both terminate at any time with written notice through certified mail. The client is responsible for my charges up to the postal time stamp. Outstanding payment is due upon cancellation.

3) I provide weekly updates in screenshot form, and/or working application (as feasible).

4) The client agrees that its only legal recourse for dissatisfaction is the cancellation of our contract, and all legal costs beyond that are the responsibility of the client. Additional wording stipulates that if the client sues me, the client must pay my legal expenses.

5) The client gets the binaries and source code. I retain the copyright on the code, but the client gets the right to make unlimited derivatives and copies.

That's all I can remember off-hand.

I used Qt 3 for my first freelance job, and required that the client accept the terms of the GPL before I would do the project. For the client's practical purposes, it allows him to treat the program as proprietary since he doesn't redistribute (and neither do I). It also allowed me to avoid paying a huge chunk of my income to Trolltech. Trolltech's butchered transition from Qt 3 to Qt 4, though, has prompted me to do all my future freelance work in Java.

The client was thrilled when I explained what that meant (no vendor [me] lock-in), and it did no harm to my repeat business. Once a client has invested that much time and money in a vendor, it's very painful to switch.

invotrak (0)

Anonymous Coward | more than 5 years ago | (#26024635)

For invoicing I've used a web-based application called invotrak. I've only had a limited experience with it, but it was an easy, straightforward experience. Worth a look if you're looking for something simple and straight to the point, but there are probably much more feature-rich apps out there if you actually want a full-blown project management tool or something like that.

NEVER bill hourly! (4, Interesting)

LibertineR (591918) | more than 5 years ago | (#26024743)

You will read much opposition to this, but the fact is that PROS do NOT bill hourly. You will initially lose money, but you will gain experience and more importantly, the MOTIVATION, to bid and scope your projects properly at the beginning.

You will find clients who wont agree to a fixed-fee (1/3 up front) contract, and those are the clients that you don't want anyway. Your goal should be to work for clients who know what they want, and understand that changes beyond the initial contract will cost them more in money than it will cost you in time.

You will only lose money, when you attempt to do favors for clients who change the scope of work continuously, without regard for your time or contract. Run from these clients, or suffer greatly as you learn why.

Clients should not pay you for the time it takes for you to discover what they want. You should have the ability to provide DETAILED project plans and scopes of work BEFORE your client knows what it will all cost. If a client ever has to ask you: "So, what do we get for that amount?" You failed.

Clients should also not have to pay for you to learn ANYTHING, a new technology, a new software platform, etc. You are supposed to be the pro. If they are paying you to learn, you suck, and will eventually get caught. Learn on your own time.

Provide a standard Boilerplate contract, with an attached Schedule A, defining the specifics of your project. Give your clients a 7-day out-clause, with an understanding that after that time, the upfront payment is YOURS, regardless of any cancellation.

The bottom line is, to be perceived as a professional, you must present yourself that way. If you cant afford to walk away from business, you are not a pro, but a hack.

You would be amazed at what clients will agree to if they perceive that you are confident, professional, and most importantly, not willing to be shat on for their business.

When you bill by the hour, you and the client are at odds from moment one. They want it fast, and believe that you do not, less you reduce your billings. When you charge a flat rate, you are in sync with the client, because now you BOTH want the work done as fast and as well as possible.

No project gets completed without changes or adjustments. You don't want those adjustments costing you, so learn to plan for them, and bid them right into your fee. Dont be a job-shopper with a client looking over your shoulder, calling your cell phone endlessly requesting updated timetables. Your client should know BEFORE THEY SIGN, exactly when (barring changes) the project will be completed.

With a well developed reputation, you will find yourself able to charge for early completion, with the caveat that you will also except penalties for projects that are late. Planning is everything, or you WILL lose your shirt.

If you bill by the hour, every project you do will have a winner and a loser. If you lose, the client is happy, but you left money on the table. If you win, the client is pissed and you wont get more work.

Dont charge by the hour; be good enough to know what your work is worth, and CHARGE for it. If they wont pay, fuck them. Someone will, because if you have your marketing shit together, you wont have to pound the pavement for work.

some odd things in the contract (1)

CharlieG (34950) | more than 5 years ago | (#26024769)

I worked for a consulting company, and there were some odd things we added in along the way (this is for on site work) - we spec'd that we got the company standard desk, chair, wastebaskets, phones and the like - aka they could not stick us in the corner, in the back, in the dar, with a broken chair and desk

Other things we eventually wrote in - SWAG - if the members of the team (besides us) were going to be given sawg for being on the team, we had in the contract that WE had to get the swag too (That came after the time my boss - before I worked for him, and he was working for ME - didn't get a hat and tee shirt for the project because he was 'just a contractor' - he and I were co-leads on the project)

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?