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

15 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 ushering05401 · · Score: 4, Insightful

      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.

    2. 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.
    3. Re:Contracts! by Registered+Coward+v2 · · Score: 4, Insightful

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

      While I agree with all of the rest of your excellent advice, I differ here. A simple contract, that clearly spells out the deliverable, due dates, etc., helps both sides understand what is being done for what cost. As the work progress, you talk with the client to ensure they are getting what they expect and to keep the project on track. That way, there are no surprises and both sides are happy. I've never had a client balk at signing a contract; in fact most want one and get nervous about starting work without one. Be professional about it and clearly lay out what is to be done when, for what cost, and what support you get from the client and I suspect you'll have no trouble. Once you have a solid relationship you can work on spec but until then a contract helps both sides.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    4. Re:Contracts! by lalena · · Score: 4, Insightful

      Exactly.

      And if that scares people, then call it a "Statement of Work" instead of a contract.
      All you need to do is write out exactly what you are providing, by when, and for how much.

      Then, if the project does suffer from feature creep you can always point to the statement of work to show it wasn't in the original estimate.

  2. Learn CSS by Anonymous Coward · · Score: 4, Insightful

    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.

    1. Re:Learn CSS by localman · · Score: 4, Insightful

      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.

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

    3. Re:Learn CSS by harry666t · · Score: 4, Insightful

      http://giveupandusetables.com/ :)

    4. Re:Learn CSS by daniel_newby · · Score: 4, Insightful

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

      CSS is terrible at sharing horizontal space. Consider a two column page: a sidebar on the left aligned to the left of the page, an elastic-width content column on the right, and a fixed-width margin separating them.

      With a table, the code looks like this:

      <table class="bare-layout-table"><tr>
      <td><div class="sidebar"><% sidebar %></div></td>
      <td><div class="content"><% content %></div></td>
      </tr></table>

      Is that really so bad? All of what you normally consider style is set by CSS. The table is just there to position the content horizontally at sidebar right edge + margin, regardless of how wide the sidebar is at the moment.

      If you use raw divs for this, then you have to lock the sidebar to a fixed width, and manually give the content a horizontal position. Every time the sidebar is resized, you have to pull out a pocket calculator and recalculate, looking up the desired margin from whatever non-machine-readable place you stashed it. This is not good engineering, it is guru full employment. It is X Windows modelines brought to the web.

      float: left is not a solution either. Oh, it will seem to work for a few toy tests. But think what happens if the content ever gets so much as a single pixel wider than you hoped: it gets reflowed vertically below the sidebar to give it that extra pixel. The poor user is left staring at a blank space where the content should be. In the modern context of resizing fonts and single-pixel fixups in Javascript, this effect is almost to be triggered eventually, probably by a junior employee who cannot even recognize what they have done. Quite a number of major websites blow up in this fashion. One feels an urge to pat the designers on the head and take away their crayons.

      That's what the grandparent comment means by "ugly" and "brittle". Good engineering is about making the computer automatically do the hard work, not following the "semantic markup" demagogues off a cliff. Even if it is a damn stylish cliff and all the cool kids are doing it.

      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.

      CSS is pretty great for controlling typography**. Unfortunately, it provides no way to make block elements simply share horizontal space.

      **But try indenting/outdenting your headings a certain number of ems when they use non-100% fonts. It's pocket calculator time. If you change the indent/outdent/percentages, you have to manually fix-up everything. Dammit, CSS! Learn some arithmetic!

  3. 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
  4. my advice by NickBuzzica · · Score: 4, Insightful

    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.

    www.buzzica.com is the result of all this work.
    Hit me up if you need help!

  5. Re:Learn jQuery - Good grief... by FyRE666 · · Score: 4, Insightful

    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.

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

    1. Re:Contracts are premature by tomhudson · · Score: 4, Insightful

      Here, here, it's a travisdy that he didn't post his entire business plan on Ask Slashdot.

      Seriously, he just asked a simple question, I don't think he was looking for a lecture on how to start and run a business.

      Seriously? Freelancing IS being in business. The government treats it as such. So do clients. It's not like they're looking for work mowing lawns or painting porches, something that's easily measured, easily priced, and easily evaluated as to "what has to be done." If you're thinking of just making a couple of grand to "tide you over" till your next "real" job, why not just mow lawns, shovel sidewalks, or paint porches? It's honest work, and there's a lot less hassle involved.

      Someone laid off, looking to freelance, doesn't know how long it will be before they get another full-time job, so that freelance work *becomes* their full-time job. It needs to bring in enough money, on a consistent basis, to live on, which, if you're not living in your mothers' basement, means running it like a business.

      If you're going to deal with businesses as a supplier, you might as well do so in a professional manner. The way the economy is going, by this time next year it might spell the difference between living comfortably and living in a cardboard box.