Slashdot Mirror


Freelance Web Developer Best Practices?

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."

11 of 438 comments (clear)

  1. Contracts! by nurb432 · · Score: 5, Insightful

    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.

    --
    ---- Booth was a patriot ----
    1. Re:Contracts! by Anonymous Coward · · Score: 5, Informative

      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.

    2. Re:Contracts! by dwarg · · Score: 5, Informative

      I second this. As someone that had trouble getting paid when I started out, I have to acknowledge it was my own fault for doing work for either friends, or friends of friends that were just starting out. Or sometimes taking a chance on a shady character or bad referral. Unless you want to spend a lot of time and money in court, signed contracts won't help you.

      In addition signed contracts will scare off more legitimate customers and cost you more time than they are worth. Just make sure you are dealing with a company that is a viable business, write a good bid/estimate, use common sense and MOST IMPORTANTLY require a fractional payment up front (1/3 for large jobs and 1/2 for small jobs.).

      Also, to elaborate on your question about fixed bids versus hourly rates, the answer is both. Most clients are going to want an estimate and you are going to be stuck to something near that number after you pull it out of your ass. So keep track of your hours so you can make better estimates in the future. And make sure both you and your client understand expectations and deliverables so you can increase the dollar amount *WHEN* your client starts moving the goal posts. You'll also want an hourly rate for any down-the-road maintenance or ancillary services you might provide. After a few years in business 80% of my income comes from 4 clients that provide me with a steady stream of work, billed at an hourly rate. Those clients started off as fixed bid projects that grew and grew until I was an important enough part of their business that they had to keep me around. And I don't know about you, but I would rather have a steady stream of work from known clients I trust than be making cold calls or spending money advertising to find new work. Which reminds me, the other 20% of my work comes from referrals from those 4 clients.

      First rule of freelancing:
      When you find good paying clients, treat them like gold and they will return the favor.

      Good Luck!

    3. Re:Contracts! by wibs · · Score: 5, Insightful

      I agree to a large extent but it depends a lot on the client. I say this as a fulltime independent web developer.

      I once spent a month in negotiations with a client over a contract, until finally I walked away. The only thing that would have been acceptable to them was essentially a non-binding resolution governed by the state of Utah, their corporate home, suffice it to say I am not in Utah and it would have made even an effective contract impossible for me to enforce because I don't have the time or money to fly somewhere to fight over payment for one gig. A few months later I heard that they had stiffed the person they eventually found to do the job, and now more than a year later they still haven't made any progress but have lost the benefit of any referrals.

      Point is, a contract wouldn't have saved me there, and it certainly burned some goodwill with the client. But it also showed me what kind of people they were, and the struggle ended up steering me away from a bad situation.

      In general I agree with everything else said. Keep very detailed accounts of your hours and how you use them. Treat your good clients like gold - and I mean that. Send them Christmas cards, with handwritten notes - nothing sappy or long, but let them know you're a human being and you appreciate their faith in your work. If you love them, they will love you back. Always get money up front (this depends on the client and the project, but it's generally within 25%-40% for me).

      I have made a gut call and not even mentioned a contract with a few clients. Just remember that to a stand-up client who intends to pay you money for the work you do, a contract shouldn't be a scary thing. If it is, that means you're presenting it wrong, it's written poorly, or something about them isn't aboveboard. Maybe they're just trying to keep the government out of their accounting, or maybe they want to be able to walk halfway through if they get a change of heart without having to pay anything. Whatever it is, it's important you find out before it hurts you.

      Ideally, I have 2-3 major projects going at once and a handful of smaller ones with less demanding timelines, and almost all of my business comes from a fairly small circle (20 people or so) who pass around referrals. I think maybe the biggest thing I haven't seen mentioned is that us independent web developers and designers and coders and whatever are not competitors - even in bad economic times there's plenty of work out there for us, if anything it's the expensive agencies that will lose contracts to flexible independents. Cherish your network of trusted associates, it's through them that you build a reputation and grow your business. And the next time you've been offered some work that doesn't fit into your schedule, pay it forward and refer someone else.

      With good clients and bad, the most important thing is getting a feel for them as people. Show respect, get respect. Do a good job, get paid for it. Pretty simple, really.

      --
      If you get nervous, just remember that there are a few billion other people who don't really give a damn.
  2. Always bill for time & materials by duffbeer703 · · Score: 5, Informative

    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.

    --
    Conformity is the jailer of freedom and enemy of growth. -JFK
  3. Good estimates by Mad+Merlin · · Score: 5, Funny

    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.

  4. Mint money with maintenance by Fished · · Score: 5, Insightful
    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.

    --
    "He who would learn astronomy, and other recondite arts, let him go elsewhere. " -- John Calvin, commenting on Genesis 1
  5. My experiances by vw_bob · · Score: 5, Informative

    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

  6. Re:Always quote a fixed price by Kukui23 · · Score: 5, Informative

    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.

    --
    Malama
  7. Re:Learn CSS by vux984 · · Score: 5, Insightful

    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. homestarrunner.com without flash would be pretty pointless.

  8. Contracts are premature by tomhudson · · Score: 5, Insightful

    Contracts? From reading the article, contracts are really premature. The person asking the question is too vague about too many things. They should have at least gone into some detail about their skills, experience, and target market. "I want to freelance as a web developer" sounds more like an act of desperation than a person with a plan.

    Just some of the basics that are missing:

    1. What market you want to attack in terms of clients - size, type of projects, supported technology - you can't hit your target if you don't have one. Is there even a market for what you're trying to sell? If so, where? "Don't know?" means you've already earned an F.
    2. What skills and experience you have, and what you've done to ensure that you have contacts with others who have complementary skills. The wold doesn't need YAFPWM (Yet Another FrontPage WebMonkey) or another "I know Dreamweaver so I'm a 1337 web developer and deserve big bux."
    3. What corporate sales experience you have - you REALLY need people skills to survive in business, and make no mistake about it, if you're freelancing, you're running a business, competing with other businesses. Have you ever cold-called on businesses? You need to see at LEAST 50 a week for the next 3 months, and devote 1 day a week thereafter, or you'll get stale fast, and someone else will eat your lunch when you're not looking. If you can't learn how to call on business, and ENJOY it, then being in business even as a freelancer is not for you.
    4. What sort of initial setup you have. Most web developers, even if they're not freelancing, already have a laptop (good for meeting with potential customers), a hosting provider already running a few sites, a server at home for putzing around with that could quickly be converted to a test box, a collection of tools and software you're familiar with, a decent camera and/or camcorder, and a laser printer. These are basic tools of the trade, and without them, you can't compete - it'll be poor presentation, poor preparation, and poor perception on the other side of the table.
    5. Transportation - after all, you're going to have to go out there and SEE potential clients. Spamming them with "hey, I'm a web developer and I want to enlarge YOUR business" isn't going to work. You need to spend on gas and shoe leather. Sure, "the internet is my market" - but people are more likely to trust someone if they have met them in person. Trust is essential. Your market is local, unless you're competing solely on price with rent-a-coders.
    6. You'll also find that you need to dress the part - and I don't mean casual Friday "webmonkey", but "entrepreneur."
    7. Business cards, complete with both physical and email address (NO POST OFFICE BOX!!!), cell phone, and web site, are de rigeur. Buy a few thousand, not a few hundred, Remember, you need to see 50 potential clients a week, so 1,000 goes fast at 2 cards a pop. And don't be cheap. Cheap shows. Worst is if you print them up yourself. You might as well hang yourself first. And put your cell phone or blackberry number on them - you need to be reachable. You'll really be pissed off if the client who could have made your year couldn't reach you. If you're not getting a blackberry or an iFruit with a data plan, put your cell phone SMS number on it (the one that people can send email to from their pc and it goes through your providers' email gateway).
    8. Staying power. You need to be able to last at least 6 months before you earn any money, or you don't have a prayer. Reduce your non-business expenses, get focused, and be ready to put in a lot of 18-hour days - daytimes prospecting, evenings preparing, planning, and polishing. If you can get unemployment, get it. If you can find part-time paid work as an employee, take it.

    If, after looking at this list, you see you don't have the resources to pull it off, maybe it's because succeeding in business is more than just "doing a job." Perhaps it's because now is just not the right time for you. Perha