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."
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 ----
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. 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.
Potato chips are a by-yourself food.
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
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).
These posts express my own personal views, not those of my employer
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!
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.
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.
For time tracking and invoicing, I'm enamored with Freshbooks.com (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!
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.
Code, Hardware, stuff like that.
Oh my god, this is the worst advice I've ever read.
It's extremely hard to estimate the level of effor it takes to build software. Thus you are virtually guaranteed that if you bid fixed rate you will get burnt. And, even if you're good at estimating, maintaining change orders for each little request is killer. And what happens when you estimate something (like say printing in Flex/Flash/Air to be a 40 hour project and it turns in to something like 120? - not that that's happened to anyone, or anything.) My point is, neither you nor your client know how much effort it will take to build software. Read my comment above to see how I recommend estimating, billing, and collecting.
Besides, I'd rather get paid for every hour I work. That's both honest, as I'm not getting paid for work I didn't do, and fair, as in I'm only billing for work I did.
I know a LOT of people who have been burnt bad by agreeing to fixed fee work. Software ALWAYS has bugs and your clients can easily say that something that doesn't work they way they feel it should is a bug and threaten legal action if you don't fix it for free. If you bill hourly for every hour of work you're covered.
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:
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
The correct answer is you do whatever is within the budget of your client. You and I both know it takes longer to do a proper CSS based two column layout. If your client cannot afford that, do the tables and tell the damn W3C to suck it. Purity trolls have no business in contract work. This is business and you work for your client, not the W3C. You do what is in the best intest of your client.
And yes, CSS is easier to maintain in the long run, so it might be worth your while to convince your client that it is worth *their* while to pay you to do it right so they can save later. It is an up-front investment that will pay off downline. But if you know they are never gonna expand and you are doing a quick one-shot design an they are a budget... tables all the way!
In other words, it depends. Just remember, this is business, not advocacy. If you are in it for the advocacy and not for money, you'll never survive. Sorry.