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 ----
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.
putting the 'B' in LGBTQ+
The best thing to practice for is a new career.
...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.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
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.
They have a very good bug tracking tool (Ontime) that supports hierarchy and the 1 user license is free.
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?
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.
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
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!
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.
Game! - Where the stick is mightier than the sword!
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.
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
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.
jaymz
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.
I'm in the same situation, try odesk.com for bidding on projects or other similar websites like ifreelance.com or elance.com 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.
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.
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.
Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
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
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.
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!
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.
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
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.
Kiteboarding Gear Mention slashdot and get 10% off!
Look for past issues of How Magize (I believe 2007) They did a series articles that answer your questions.
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!
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!
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!
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.
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.
For timetracking/project management.
letsfreckle.com
myquire.com
GetHarvest.com
BasecampHQ.com
tasktic.com
Tickspot.com
AtTask.com
paymo.biz
rememberthemilk.com
zoho.com
nozbe.com
www.tenrox.com
whodo.es
clockingit.com
activecollab.com
project2manage.com
activestudios web design
Guru.com 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. ;^)
It's better to vote for what you want and not get it than to vote for what you don't want and get it.
- E. Debs
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.
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.
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.
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.
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.
For invoicing, this piece of software has been a breath of fresh air for me:
Simple Invoices
Ah shoot the client?
Fred Grott(aka shareme) http://mobilebytes.wordpress.com
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.
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.
Don't thank God, thank a doctor!
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.
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.
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.
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)
-- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
Oh, and all free software, all the time. You never know when you'll come up with some re-usable code, or want to use a sizable chunk of some other GPL-licensed code, so make it clear that the client has the product to use as they wish under the terms of the GPL (or whatever), but they don't have the copyright. Anything else is a legal nightmare, and I've never encountered any resistance to this. Anybody not knowledgeable enough to be comfortable with the GPL probably doesn't care about the legal details anyway. Anybody who has dreams of striking it rich with their own proprietary web application is going to be a problem client you should avoid.
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.
Rails definitely uses more CPU time. However, it can make development of some kinds of things much faster, and you can work at higher levels of abstraction in Ruby than PHP.
Whether that matters at all depends on the situation. There is no such thing as the "right tool" except in the context of who's using it and what they're doing with it.
When agreeing on the contract, make sure your client knows exactly what's expected of them too. I used to be very clear about my part, but less clear of what I required to fulfill it, like content, design and marketing decisions, etc. Now I always make it very clear that I will do the job in a timely manner only if the client meets his side of the agreement. Otherwise you always risk taking a lot of undeserved shit and have other people's deadlines forced on you. If you don't have what you need and can't do your job, you can always point to the initial agreement and take some heat off yourself. Then you have the option of offering to be nice and put in some extra hours or some such, potentially benefitting from other people's problems rather than suffering for them.
Perhaps this is obvious, but I was thrown into freelancing and was a bit naive about how my clients understand the web and their own capacity. They don't understand the web at all, it turns out, and their own capacity is usually only slightly better understood.
More importantly, what's best practise on getting work?
Do you think his clients will pay him any less if he uses tables instead of CCS? I doubt it.
Don't forget who your clients are: not software purists, not your comp-sci teacher, but the people paying you money. Some "clean" approaches will earn them money, some won't. I'm not suggesting that you ignore best practices, but you have to justify it in terms of direct value and savings to the client. A directive of "learn CSS" is totally off topic for your question.
It may be perfectly acceptable to many people that you can reach 95% of their target audience for $200, and they'll decline the standards-compliant package at $1000.
Even risking to repeat some of the stuff allready said, here's my list of my recommendations of which some were earned very hard on my part:
1) If you want to get going easyly, you need a main client. You otherwise will allways end up with a net loss, unless you are extremely disciplined at only billing for actuall work done. Which is nearly impossible in the first year or so for someone in this field without prior experience.
2) A lesson hard learned by me: End-customers know much, much less about IT and the web than you can possibly imagine. Chances are they won't understand a word you're saying on your first meetings. Take that into account from day one! They *will* compare you to the son of a friend who can do the same thing in MS Frontpage for a tenth of the cost. If that happens: WALK AWAY!! Somebody like that is *NOT* your customer! Trust me on that one.
2b) Likewise, people know squat about modern webdesign and, to be honest, chances are that you don't either. This is the top league, and if you're not playing in it and don't plan joining it (i.e.: scoring a regular official entry in csszengarden and building an accoring personal site - which basically means putting 1500 hours into webdesign, alistapart and such and getting really good at it) STAY THE F*CK AWAY from web-design. The field is fubared enough as it is. If you insist on building your own CSS and HTML, learn a CSS framework. I strongly recommend YAML (as in CSS, not config-language) as the foundation to all your custom design work. But double-check your artistic abilities with proven pros befor doing so. I happen to be gifted with both programming and artistic skills and there are some others like that too, but that is more rare than most geeks like to admit. ... And earning money with programming is much easyer anyway - you know, the son doing Frontpage and all that ...
3) Learn one (1!!!!, ONE!) FOSS web-app-kit. As in: *NOT* two or more. But ONE. And focus on it. Find out which of the big ones suits you best. For instance, Typo3 owns the German market (yeah, whatever, cue bloatware jokes below), so it's a safe bet if you live there and want some freelance gigs to roll in fast. Others are Zope/Plone, Django, TurboGears, CakePHP, Symfony, ZendFW, Prado, Joomla, Drupal and EZ Publish. Some are CMSes, others are Appkits, some try to be both at the same time and usually manage quite well. Which one you choose nearly matters squat, they all have their ups and downs. However, it *is* important that you pick exactly one, and one only, and become a pro at it. It takes about 3000 hours and a few years of work with one community to achieve that. Do it. Help them out with bugtracking from the get-go and make room for developement-branch of the project in your pipeline. And try to join the core crew or at least the bugsquad or something. I'm in the Joomla bugsquad, which is sort of my sorry excuse to say I'm helping out. It does give me a little bragging advantage with the one or other customer though.
Bottom line on this one: Concentrate! I can't emphasise this one enough - you have to restrict your geek-experimentation drive when running a business. Do it from day one on!
4) Have a working one-stop zero-fuss pipeline custom built to fit the FW you use *before* you start. In fact, make that your first task to do before even considering going freelance! Automation, Versioning, Bugtracking, Project-Management, DB-sync and project-deployment, local and remote LAMP stack and all. Set it up and use it! If you don't know versioning and issue-tracking, you have no f*cking business doing freelance web-work. That's a fact! We have to many n00bs joining the fray as it is! Join me on a gig some time in the future and not know versioning and I'll have your ass for dinner, even if you live on the other side of the planet! I can't tell you ho
We suffer more in our imagination than in reality. - Seneca
Have you tried Joomla?
What are the advantages of Drupal over Joomla?
1. Do whatever you have to to get the contract. Feeling out how to best manipulate and extract money from your client. If you have to undercut your best friend, be prepared to do it. Put your ethics on a shelf, the world isn't about them anyway.
2. Never do business with anyone you could not utterly destroy should the need arise. If a company is hiring a freelancer, chances are they are going to screw you. You need to be prepared to screw back, harder and deeper.
Really those two rules work in all dealings. If you cannot cause financial ruin to someone you are in an agreement with, you are not safe.
I am the penguin that codes in the night.
The contract (or simply the "agreement") will make or break you. I've estimated, negotiated, and developed for jobs ranging from a few hundred dollars to multiple millions, from a handshake to a 40 page contract. Writing a good proposal, knowing what to charge for, knowing what to negotiate, knowing when to hold your line - these are things it takes years to learn (and many people never do.)
So do yourself a big favor that will certainly increase your profit and may keep you out of court. Get involved with other consultants and learn everything you can. Find a small business group and take classes. Go talk to SCORE - their services are free. See if there is a web developers group near you on meetup.com.
In short, find mentors - people who have already learned from the school of hard knocks and are willing to share their experience.
Just one "simple" example - how much to charge. There's an absolute minimum you must charge just to break even. You have to factor in expenses (including software upgrades), capital costs (computer equipment), vacations, overhead, business insurance, attorneys, CPA, marketing, non-billable time - the list goes on. If you don't know how to do these calculations, then get help before you go broke.
Wow, color me surprised, a framework for a language makes development faster than the raw language. It's a shame there aren't frameworks available for PHP that could cut development time in a similar manner as Rails does for Ruby...
You seriously couldn't take the time to read all the way to the end of the sentence you quoted? Or, even better, to understand my point?
Yes, there are definitely frameworks in PHP. I'm sure they're swell. But Rails was such a departure from existing frameworks in part because of the Ruby language. There are plenty of web frameworks in every language, quite a lot of them inspired by Rails. But there's only so much you can do without certain features of Ruby. Which, as I said, comes at a CPU cost, as they would in any language.
However, my point was that one should pick the right tool for the job. How you can get your panties in a knot about that, I dunno.
This is my first time in this role...
You know, it's no wonder so many people have such low expectations and opinions of the IT industry.
There's far too many amateurs hanging out shingles as "professionals" and their complete lack of knowledge and experience is exactly what people are being fed as "IT professional".
The kinds of questions you are asking are questions you'd have all of the answers to if you'd have apprenticed for a requisite amount of time as a Web developer before deciding to pass yourself off as a professional.
If you wanted to add an addition on to your house, would you hire somebody you knew had done nothing more in the way of contracting than a few minor renovations around their own home?
I bet if you did hire somebody passing themselves off as a professional and then found out when it all started going wrong that they were nothing more than a DIYer, you'd be eager to sue for fraud or mis-representation.
Please excuse me for replying to my own post.
I want to thank everyone for all of your excellent advice. It's obvious there are some very experienced folks here, and it sounds like the way most of you have learned how to freelance is through the School of Hard Knocks. I'm sure I'll be putting some time in there myself, but hopefully not too much ;-)
It sounds like there are a lot of good arguments for and against billing by the hour and fixed-rate quotes, and that may just be something I'll have to try on a case-by-case basis until I find my groove. I can see value in both methods depending on how big or small the job is. I also see a lot of posts about setting up a some form of standard contract and from a CYA perspective that makes total sense to me. All in all I have a lot to consider (this is a good thing), and hopefully someone else who may be in the same boat that I am will benefit from this discussion as well.
This is my first AskSlashdot submission, and after reading through the responses it makes me realize again just how many intelligent and helpful people hang out on this site :-D
Thanks everyone!
God, schmod. I want my monkey man!
Exactly what he said.
If you get nervous, just remember that there are a few billion other people who don't really give a damn.
Ok, here's a decent method I've used for estimating:
Obviously the hardest part is trying to come up with the list of tasks in the first place.
"I have never let my schooling interfere with my education." - Mark Twain
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
Of course, once you add in the overhead from those frameworks, PHP isn't any faster anyway.
If it ain't broke, you need more software.
A horse with lipstick on is still a horse.
PHP is dead, get over it.
Web Developer: Knows how to code in several server-side programming languages, including at least one (and more likely all) of the "p" scripting languages (php, python, perl), how to interact with one or more database backends (mysql, postgresql, oracle, etc), client-side programming languages (javascript, including XHR, JSON, etc); Knows the quirks wrt css in most browsers, knows what a DTD is and uses "strict". Must be able to maintain a test/development server, with version control, as well as maintaining the production web site. Codes to standards-compliant browsers first, then ports to IE, using the magic incantation "Fucking Internet Exploder" as many times as necessary - or more. Probably also knows Java, may also know C, C++, C#, assembler; can ssh to the dev box as necessary, scp files, uses svn or git, has strong opinions about sml, the vi vs emacs wars, knows what a LART is, and isn't afraid to use it.
Web Monkey. "I know Photoshop and/or Dreamweaver and/or Frontpage, and I can drink just as much coffee as a real developer. HTML is too coding! I copied this javascript to do mouse rollovers - isn't it cool? Wait until you see what your site looks like when I do it ALL in Flash. Firefox? No, I use Windows." Sometimes targeted for LARTing by bored Web Developers.
This has been a public service announcement. Please resume your usual trolling^Wdiscussion
I've started about 7 years ago under similar circumstances.
Here is the advice I have to give you:
1. If it doesn't feel right, don't do it. There are going to be a lot of fish out there, and quite a few of them are bad. Avoid them at all costs.
2. If it is too good to be true... get a signed contract.
3. Don't hesitate to fire a toxic customer which kills your motivation. They just drag you down and you'll be better of without them.
4. If a longtime customer has difficulty paying, work out a payment plan. If a new customer has difficulty paying, stop working for them until they pay all that is due (including unbilled time).
5. Use a CRM (hint http://www.maximumcrm.com/ ) to keep track of your customers.
6. Keep track of all the time you spend with your customers, including just having IM conversations. While it may not be billable, it could point to you problem customers, eg those that talk a lot buy don't pay much.
7. Make your hourly time what you think you are worth. If you try to compete on cost you'll just wish you got a job again.
8. Make agreements that allow you to show case the work you did and use it as example whenever possible. This is going to be a major problem as you get experiences as a freelancer as a lot of companies don't want to let you use the work you did for them as part of your marketing.
9. Make backups.
10. Test your backups.
11. Use SSH keys instead of trying to remember a gajillion passwords.
12. Your long time customers are worth gold and will bring you much much more work then elance or other expert marketplaces.
13. Diversify, don't keep working for just 1 customer. At least have 4 "permanent" customers.
14. Some customers might ask for a discount if they commit to a certain number of hours per month, or they might want to enter into such an agreement. It does help to limit the fluctuations in monthly income, but you do have to be able to provide for all of your commitments.
15. Be careful who you sub contract to. Their work will have a direct reflection on yours. If I have a new subcontractor I want to try out, I usually use him/her on a new customer. Always, in any case, handle ALL communications and billing between you and the subcontractors. This is even more true for your longtime customers as they will expect a certain quality to the work you do.
16. Make backups, again.
17. Make sure that the flat rate you pull out of your ass reflects the work that is requested. This is unfortunately not always possible, especially if you use Elance for leads. Make sure your hourly rate is in the profile and point it out to the customer if he ever wonders what it is.
18. Be careful in giving freebies. If you establish a pattern (like billing by the quarter hour), then customers will expect you to keep it.
19. Keep a separate facebook / myspace account for your customers. Don't post your recent party photos to it!
20. Keep accurate bookkeeping and pay your taxes. If the tax agency finds you making undeclared money they are going to wait a few years so that you dig yourself a rather large hole and charge you many years of penalties and interest on these penalties.
So, if you're really at a significant fork in your career's road, can I suggest (no, BEG) one thing:
Think twice about freelancing as a web developer.
I also recommend against careers in HR, environmental monitoring and weather forecasting. Each has a nasty habit of being seen perpetually as a cost center that any schmoe can work in.
I got out of web developing for pay before the dot-com failure for that very reason. It horrified me one day when a nitwit cousin of mine was overheard saying that he was a web developer. Since then, I do charitable or for-a-friend web applications (Drupal), and even at 'FOR FREE' I still bump into people that have a brother that talk them into letting them do the project.
Pick a tangent and start refining your skills accordingly. Database admins get 6 figures, as do security geeks, cisco admins, firewall maintainers, business application coders (funny, since I dissed someone on another slashdot thread jsut 5 mins ago for thinking that .NET and JAVA were the vast majority of programming), or anything else with a significant barrier to entry and a bit more mystique than web developers.
I'd be bitter if I hadn't been lucky enough to navigate the above transition so nicely...
Having said all that, if you insist on being a web geek, here's my advice:
I have colleagues that bill by the project and by the hour. Client dictates. I also know a couple guys that charge an arm and a leg to clean up other coder's disasters. And another team that makes their money off reasonably cheap websites and overpriced hosting fees. Focus on nontechs local to your area, probably: join the local chamber of commerce or Rotary or whatever groups, make connections with area businesses, and bill like you'll only work 800 hours the first few years.
Oh, one last comment: the guy that said 'don't bill for learning time' was wrong: I bill for everything because I can figure stuff out that my clients can't and won't. They're clear on the idea that I am a computer geek being asked to come up to speed on some new X.
The what?
http://www.no-spec.com/
This tells all.
Yeah. My advice: don't. But then, I think Drupal sucks too.
contracts are good. you decide how you want to charge but the best things to do are get half up front and do the work on your own sandbox. if they dont pay you the rest they dont get the files. makes things easier to get paid
I know this is likely to get lost in all the comments, but bookmark this: http://www.unixwiz.net/techtips/be-consultant.html
/* oops I accidentally made a comment, sorry */
My business improved after I made a practice of heavily interviewing clients before they signed the contract.
Why?
First, because shitty clients are time wasters. If one clients relentlessly pisses away your time, it hurts your bottom line because that is time that could be spent on other clients, sales, R&D or just good old fashioned self-pleasuring -- all superior even to doing paid work for an ass.
Second, it will improve your outlook, and ultimately improve you are your work. The best piece of code I ever wrote was the main shopping cart system I constantly resell. It began with a local client who deeply enjoyed participating in the development and debugging of the software, and we eventually expanded the project to include large-scale integration of inventory control, brick and mortar sales and online sales.
Third, you may spends months if not years with these people. No one should ever have to deal with an asshole lording over them because of money.
I cannot emphasize this approach enough: interview your clients like you are hiring for the most important job position in history.
And be prepared to walk if they fail the interview, no matter how much money they offer.
I scream. You scream. I assume that means we're both acquainted with the problem. We proceed.
What I did is to ask the client to pay maybe 30% of the agreed price upfront. That amount will not be refundable if the client agreed to terminate the project. At least you would have some assurance that your effort will not be wasted for some unreasonable client that just cancel the project.
I don't know, but it looks to me like I can hire all the offshore web developers that I want for $2 an hour. I have seen job ads for web developers that ask for a bachelor's degree, and loads of professional experience - in several technologies - for $14 an hour (part time, no benefits). I know there a lot of 15 year old web developers, who are actually very talented.
Frankly, it looks to me like web developers. and web-developer wannabees are not a dime-a-dozen, but a dime-a-gross.
Correct me if I'm wrong.
I had been building for several years, but only ever for fun. Recently I began doing it as a service for others, and even more recently started actively promoting my services. I bill by the hour, but I've made it a practice to require a deposit before I begin work, as well as requiring clients to maintain a balance to which I can bill the work (thus avoiding being ripped off). I haven't bothered with any contracts, and so far none of the businesses that I've worked with have requested that one be drawn up. Since my references are reputable, they take me at my word. A little trust can eliminate a lot of hassle.
Sometimes I'll go fishing for clients. If I know of a business that needs a website, I might do up a design and tease them with it. "Look what YOU could have!". It's a good way to grease the wheels with any prospective client.
Why, if not because?
Just a little contribution: gnotime is a very nice little app for time tracking/ invoice creation. Not a whole lot of features, but it does the job, and can create customized invoices.
if you're not very careful. I think the most important thing is to establish a VERY clear agreement on what is to be done and then all the little shitty details how it is to be done. They're the things that will fuck you.
The typical case would be you putting in effort like crazy and making a technically excellent site. And then in the end get totally fucked by the client because of some stupid, stupid detail they failed to communicate to you.
Before you write your first tag, have a written contract.And as much as I hate lawyers.... you know, they have one. (or a dozen.)
I tried Mambo on a few sites a few years ago, one of which got hacked by a phisher within a few months (to be fair I hadn't been keeping up with security updates), so I quickly migrated them over to Drupal, which I had started using once the limitations of Mambo became apparent. I had a look at Joomla! soon after it forked from Mambo. It was supposed to have been substantially rewritten, but I couldn't see any significant differences.
My most immediate frustration with Mambo was that there was a lot of hard-coded markup that you couldn't cleanly override without hacking the core system. This may have changed in the last couple of years. Drupal's theming system, even at the time, was an order of magnitude more elegant; not necessarily easier, but much more flexible.
In fact Drupal v Joomla! is not a fair or useful comparison. If you just want a CMS that works out of the box, I'd guess you'd probably find Joomla! a happier experience. If you're a developer or a graphic designer who knows their HTML/CSS/PHP, or if you want to do something beyond the standard features of a CMS, Drupal is for you. It's said that Drupal is an application development framework that just happens to come with a CMS built-in. I was showing Drupal to someone earlier this year and he said, "Hey, this is like Rails!" Moreover much of the recent development in the Drupal ecosystem has been directed towards making it possible to build quite sophisticated database-backed applications without having to do any coding. Someone else once said to me "Hey, this is like Microsoft Access!" (I was a little less happy with this comparison.)
To return to the subject of the parent post, if you are a one-or-two-person web development shop, and you want to do as much as possible while having to support the smallest amount of code, you can't go past Drupal. For any particular problem it may not be the best solution, but it's a satisfactory solution for a vastly wider range of problems than any other system I'm aware of.
Good answer.
Been relying on Joomla pretty heavily since 1.5 came out, might have to check out Drupal.
Got any instructional Drupal URLs to recommend?
(Note to all the "justgoogleit" folk: Google presents options, it does not give recommendations.)
http://bambooinvoice.org/
I'm not affiliated. I've used the software and extensively used the php framework (CodeIgniter) it's built upon.
Yes, use a contract, in case you may not have noticed its pretty much essential. Not using a contract is like having sex with an STD ridden prostitute without using protection. Clients are always trying to screw you and they often leave you with something that burns.
Also, for the rest of us, please charge a reasonable price. A professional web designer or developer should make $40/hr+ depending on your region. Its a grave disservice to your peers to charge less than this, as it it not an acceptable wage for the amount of work and skill required to design and implement a proper web presence. I suggest buying a copy of the Graphic Artists Guild's Pricing and Ethical Guidelines, it will detail going rates for design work.
1. Bill hourly.
2. Contracts will do you no good in the end. Only work with people and companies you trust.
3. Set small milestones. 1 - 2 weeks is preferable.
4. Know the technologies you are working with. Don't be a jack-of-all-trades-master-of-none.
5. Speak good English.
6. Always deliver on time.
All the advice is excellent. Bill by the hour, fixed price whatever, they all have a place.
The key piece of advice i have is when you engage with a customer put a shitload of effort into your statement of work. Scope creep can be mitigated with a good statement of work.
Final thing is if you and the client can't agree of time and cost versus fixed price try shared risk.
Shared risk is that you will deliver the statement of work deliverables for x dollars. If you deliver under that the client pays out 50% of difference to fixed. If you go over the the client pays 50% of the over, essentially covering costs...
Good luck man.
"are there any best practices for freelance developers?"
i think best practices should apply to any freelance, not just developers...
first and foremost: communication.
i think one of the most important tasks is to make sure your client clearly understands what service you provide(and what you don't provide).
make sure your client clearly explains what they are expecting from you. in writing.
don't be afraid to state what you are going to do explicitly. if you are just doing site development, make sure you state that you will not expected to input the actual content. or that you are not a content generator. just be clear in your communications with your client.
"What kind of process should I use when dealing with clients?"
there's nothing wrong with asking your prospective client to describe in writing the scope of a project. if a client has a hard time expressing the nature of their project("you know, kinda like this, but different... it's hard to explain but you know what i mean"), you might think twice before entering into a business agreement with them. have them put something concrete in writing/email. if they can't do it but you really want to work for them, you should put it into writing for them and request that they acknowledge your interpretation as an accurate description of the project scope.
"Should I bill by the hour or provide a fixed quote on a per-project basis?"
this question is open for wide interpretation... it depends on the client and the project. If you have a project that will take 1-2 weeks, you might consider charging a flat project price. if you are going to be engaged in a multi-week (3+ weeks to several months) project, you might consider an hourly rate. you might also consider putting together a rate card for yourself i.e. 1 static html website with 5 pages, hosting setup and domain registration = $500. 1 CMS(joomla, drupal, sugar, dnn) or DHTML website with MySQL/java integration, hosting setup and domain registration = $1500. online store/shopping cart starting @ $1500, depending on merchant solutions, etc,etc... i don't know what your skill set is, but you should be able to quickly answer the question "how much will this cost me?" prepare your rate card in advance of client meetings.
"What kind of assurances should I get from the client before I begin work?"
what the hell kinda question is this? are you asking how should you ask to be paid? since you're a freelancer, you should be bold and ask for payment upfront. in fact most businesses use this as a model:pay us first, then we'll give you a computer. are you afraid to ask for the entire payment up front? how about asking them for 1/3 down before any works starts, 1/3 halfway thru the project, and 1/3 at time of final delivery. or how about half up front and half on delivery. WTF, dude, that really depends on your client, doesn't it? smaller companies will pay cash up front, bigger ones will want to issue a P.O. and pay just one invoice. there's no single rule here.
"What is the best way to create accurate time estimates?"
if you need to provide an accurate time estimate, you'll spend a lot of time tracking what you're doing. you might actually impact your overall output with too much time analysis. make you time estimate in 15-30 minute increments (if necessary), and err in your favor. if you performed a task that only took 5 minutes to do, charge it out as 15 minutes. establish a minimum chargable amount. you don't have to spell out all the details for how you bill, just make sure you establish your own business rules for billing, i.e. minimum bill
three can keep a secret, if two are dead - benjamin franklin
Three-column layouts are harder, but it can be done in any of those configurations, and without sacrificing semantically correct code or scalability.
What is the semantic meaning of a DIV tag? I don't think it has any. It's just a tag we stick in the code to make layout easier. Well, TR and TD can serve the same purpose sometimes. It always cracks me up when people talk about "semantic code" and then their page source has DIVs wrapped in DIVs wrapped in DIVs so they can get the CSS layout just right. Web pages mix layout and content--that's just the way it is in HTML. There are only two real ways to separate the two:
1. A template or CMS system. Your template code is 100% layout, and the placeholder code is 100% semantic. Note that the template can be DIV- or table-based and this is equally true.
2. A full AJAX interface where the browser loads the interface code first then asynchronously calls for the content. Again--the HTML your javascript engine writes can be DIVs or tables and this is still true.
People talk about how easy it is to redesign with CSS layout, but the fact is that any real redesign starts back in Photoshop and produces new assets and new code--HTML, CSS, Javascript, and (if you're so inclined) Flash. Then you use your template system to install the new code. I don't know any professionally run Web sites that do redesigns by just uploading a new CSS file. At most a good CSS file lets you tweak paddings, margins, fonts, and colors--but again, that works just as well for tables as it does for divs.
Build a man a fire, he's warm for one night. Set him on fire, and he's warm for the rest of his life.
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.
I'm curious since Google uses a lot of python/javascript combinations. I also recall they have some traffic to their sites...
PHP is nice, but it ain't always perfect.
Look, I'd never use tables for a template based system. But you cannot tell me that it takes the exact same amount of time to do a clean CSS/standards based design as it does a table based one. If you are doing a quick "brochure" site for an art studio with 5 static pages, you are wasting your clients money doing pure, standards based table-free CSS. If they want to you design a template based "the system" to run their business, you'd be insane to use tables.
The answer is really it depends on what is in the best long term interest of your client. And the depends on their long term goals and their short term budget. If their budget is tight, tables might be better. If they plan to grow the site beyond anything but a brochure-ware site, CSS is the answer--it takes longer short term, but pays off big time as you scale. You also have to factor in that CSS based layouts are much more SEO friendly too. But again, it is a balance between their budget and their demands so it all depends.
Bottom line is that it depends. Purity has no business in business. There is no hard and fast rules. It all depends. But you really are to be loyal to your client, not some damn whiny slashdot crowd or purity trolls from the W3C.
In addition to all the good advice I've read in the replies already, here's a good list of signs to watch out for when attracting new clients: 20-signs-you-dont-want-that-web-design-project It is of course about web design and not web development, but that shouldn't really make too much difference.
But it wouldn't work with "semantic blah blah blah" or "XML validated screen readers" or some nonsense. Face it, the W3C doesn't work for web designers, it works for people who never did HTML for a paying client in their life. These people have no clue what exists in the real world. They are too hung up on doing it some academically pure, theoretically correct method that has no bearing on what is actually required. It is one of the reasons I think flash and silverlight will become more and more prevalent in the near future. Those guys have to create standards and products that meet the needs of the real market-driven world, not a academically driven standards body.
Because they have never actually had a client pay them directly for their services. Their tune would change awfully quick after a client refused to pay for a website that didn't work in the browser used by 80% of the public. Ain't it cute when these naive greens get a taste of the real world? "ahhh, you mean being such a hard ass can't pay for your rent?" Makes me laugh for some reason :-)
I love the "You can use the same core HTML for both full-bore and mobile" crowd. You guys really think you can use the *exact* same grid and *exact* same menuing for a device that can only display 5% of the text a monitor can will work? Mobile sites require a complete different information architecture that focuses on very different use cases. You have to provide different ways of logging in (for example, 4 digit numaric PIN numbers instead of 8 digit alphanumeric passwords). You have to provide only the most essintail menu options. You have to place your advertising different. You have to give Google a different set of RSS feeds and sitemaps just for mobile content.
The "follow the standards so it works on any device" is the biggest red herring in the whole web industry. You *have* to specifically target mobile phones, you can *never* just say "well, it follows the standards, so who cares how my RAZR renders it". Sure the RAZR might handle it, but nobody will use it!
Too maybe people think they understand this shit, but it is obvious the loudest of the bunch never actually *used* this shit to do real work. If they did, they wouldn't be purity trolls and they'd be bitching more about how shitty *HTML and CSS are.
Always do hourly, until you understand when a fixed bid might come out better for you. Until you understand when a fixed bid makes more sense for you (as in, makes you more money), never do it. Even then, never do it.
But the original poster is a newbie contractor and has *no* business doing a fixed price job.
You need a hell of a lot of experience (which I even don't have) to really pull off a fixed-priced and come out ahead. There is a lot of ways to win, but even more ways to loose. You need the experience to really know when you will win and be willing financially and mentally when the gamble you made comes out wrong.
In 2006, Quickbooks "real" edition came with a cute little utility that let you clock in and out then import it into Quickbooks to create invoices. Dunno if they still include that as I've been running it as a Windows XP guest under VMWare in Vista since they decided to charge full-rate to "upgrade" to 2007 which "works with Vista". Bastards :-)
The online edition is cool in theory, but honestly I think the "real" software was worth the price.
Don't bill fixed until you have the experiance under your belt to know when it is a good deal. Doing it as an novice is a sure fire way to wind up making minimum wage. Remember, always remember, you pay your own taxes, you pay your own heath insurance, and you pay a *lot* of shit that your employer used to pay that you now pay yourself. Too many newbies dont get this and consequentially bill *far* lower then they should. Do *not* fall into this trap. $100/hr isn't as "OMG that is a lot" as it might seem. $40/hr might seem like a lot as an employee, but if you do the math, that is quite literally minimum wage as a contractor. At that rate you'd very seriously be making as much as you would working at McDonalds. And by "literally" I mean literally and if you don't belive me, do the math in Excel. And if you dont own a paid copy Office running on a working copy of Microsoft Windows, stop now and work for somebody else, seriously. Software purity doesn't pay your bills and thus has no business in your life anymore. So ditch the "OMG Linux and open source only" attitue now so you can pay your rent mext month. You run a business damnit, and Excel (and a paid copy of Photoshop) are tax deductible tools you need to perform your job in a cost effective way for your clients.
PS: Do *not* underbill! Do *not* underbill. Do *not* underbill. And fixed price is a surefire way for you to underbill!!! To *not* do fixed price. You just aren't *there* yet. Trust me. Do *not* underbill and do *not* do fixed even if your client keeps trying to pressure you into it (and honestly if they do, you really dont want them as a client... part of this business is learning when to *not* take on a client)
Good luck. Just dont underbid. And always fucking withhold your taxes, which is another newbie mistake (which is a symptom of the the "dont underbill" issue, trust me! :-)
I had guests over and thus had a bit of wine. But dammit, your "ask slashdot" is too much for me to resist. Hope you can parse my nonsense :-)
And if you haven't yet, make sure you are an LLC or an INC. Personally I'd go LLC cause it is easier, but if you are unsure, seek professional advice. Always make sure you bill your clients as your business, not as yourself. You want that legal protection.
If you are geek like me and your state is cool like Washington State, you can usually file paperwork online and get your business license in a few days. No fuss, no law guys, no nothing. If your state isn't cool, well, sucks for you :-)
That the poster is making money in a bit of a different way then straight contract work. It sounds like you are doing more of a retainer then straight contract work.
$50/hour ain't much for straight design work, I'm afraid.
But to be quite frank, I lost all faith in any open source business application after I tried using Zen Cart. Those guys fucking deleted the *god damn row from the database* when you removed an order!!! Now I ain't no lawyer or professional accountant, but I do know you *never remove anything from the database unless you are planing some scheme to commit fraud!*. Hide it, yes, but you don't delete the fucking thing forever!
After that experience, I will never trust open source business apps again. I would rather pay for software that is designed by people who understand the legal and accounting requirements of running a business. I pay them to keep my ass out of jail. Zen Cart, in the worst case, could land some pour soul in a world of trouble after it nuked some assholes order. Who would you blame?
But yes, Quickbooks isn't the worlds best software. But the point really is you should be prepared to pay for software. Paying for software is a sign you've "arrived" as a professional. Be proud of the fact you pay money for something that helps you make money. It means you are professional and wise.
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.
My best friend Ryan had this problem when he started his own Web design business. He would give good rates to friends, but the problem was that his rates were so low (and he didn't charge a penalty for change orders) that they didn't mind throwing endless changes at him -- without adjusting the deadline, mind you. He ended up working round the clock for these so-called friends, literally giving up sleep so he could deliver what he promised. The shame was that most of the work was crap -- your basic logos and Web pages, nothing he'd really want to add to his portfolio.
But the real downside is that he ended up with severe, crippling Repeat Stress Injury in both arms. That's right -- he worked so long and so hard on the computer that he literally crippled himself. For a year or more he was in so much pain that he'd have to spend entire days bedridden, popping horse tranquilizers. He tried every treatment possible -- every kind of pill, massage, acupuncture, etc. -- everything short of surgery. Just to give you an idea, if he took a girl out on a date he wouldn't be able to open the car door for her because it would mean he'd lose another day due to pain. He'd have to ask her to open his door. The bottom line is that the only way he could wean himself back to health was to walk away from the computer -- probably forever. He still does some design work now but he relies heavily on assistants and he knows better than to push it.
I used to joke that he got himself into this position because he didn't charge enough. But I was only half kidding. And think about this, too -- because Ryan was self-employed at the time, he wasn't eligible for workman's compensation or state disability. You bet he moved back in with his mom. Not everybody will be so lucky.
Breakfast served all day!
Excellent site for all freelancers, but web developers especially: frelanceswitch.com.
It helps when you're working on your own to discuss issues with people in the same position as you.
lots of good advice here: http://www.workalone.co.uk/wiki
Unless you're a basic web monkey and not doing any programming, never ever ever ever do fixed price. Basic perl,python, php, ruby web site programming you can probably get away with doing fixed priced maybe. Otherwise though you will get burned on hours. Clients never give you complete requirements up front, ever, making any estimates you do erroneous. Always at least double the hours of what you expect for any estimate. In the end you'll be better off working full-time instead if you go fixed price.
At least in the case of Zencart you could see the source to verify the behavior and i'd bet with a little work prevent that from happening.
But could I bill a client to not only make that database-affecting patch, but bill them to play open source politics to get that fix pushed into the mainline ZenCart codebase?. And trust me, I can fully expect a *lot* of politics involved to get them to accept a patch which changes makes a change to the DB schema and affects how orders are removed.
So since my client won't pay for that, can I get them to pay for the continual application of a database-affecting patch every time ZenCart releases an update? Hmm... I doubt it, and quite honestly I really dont want to do it even if I get paid for it. What a pain in the ass!
So basically, your solution is a non-starter. I dont play open source politics unless it is worth my non-billable time. FreeBSD is worth my non-billable time and I've contributed many ports and patches to them, but ZenCart just doesn't make the cut I'm afraid. I'm certainly not inclined to play open source politics for quickbooks-like accounting packages, that is for sure. The last thing I want to do with my non-billable time is accounting!!
(and yes, again, nice diner party + wine + 12:40am + fun thread = messy writing, sorry)..
Never thought about how you'd bill for freelance writing. I guess that might be easier to estimate, am I right? I mean, they dont ask you to change the entire plot mid-stream do they?
Hmm... I majored in tech. communication (i.e. technical writing). Never thought how you'd bill for that kind of work :-)
Go ahead, walterbyrd, hire a whole nerdery of offshore developers for $2 an hour and see where it gets you. They may even speak English, though the ones that do, usually in India, generally start at $25/hr.
Since you know so many 15 yr old very talented web developers why don't you start a firm, you can skim off the top and spend your day calling their cell and leaving messages while they are in gym class. Then when they are 18 and start having to pay rent and charge a living rate, you can fire them.
You get what you pay for, professional freelance web development rates in US and Canada start at $30/hr for complete beginners that intend to stay in business and top out around $85/hr in my experience. I guess it's a living, as it has supported myself, my wife and two kids for five years now. I regularly pass work along that does not fit my schedule. Right now, in this time of economic troubles, I am turning new work away. My clients are good people who work hard and know the value of their time, as am I. I could make more $/hr in software engineering, but this way I don't work in a cubicle and don't do deadline death marches.
I think you'll find that Google's search engine doesn't run on Python...
Code, Hardware, stuff like that.
Most of your customers will be reasonable, but some will not. About 20 percent of them will try to get everything and get it for free; you can either let them run you over or take precautions beforehand. Consider a simple example of a spec: "A drop down list containing up to 20 items will be provided". What this means for you as the coder is that you have to supply that drop down list, and it has to be able to contain up to 20 items. Get that right and you get paid for doing what you promised. When the customer says "but I really need 48 items in that list" then you can point to the spec and let them know that if they need 48 items it'll require an additional payment.
There are some who will suggest that a handshake and a promise is all you really need. I'm very happy for those people that their lives are sunshine and puppies and it never rains. But those who develop in the real world will find that you can never really complete a project because the customer is revising their needs as you code. No matter what you do it won't be right and when you recode to the latest need it'll be wrong, too. It's great if you want full time employment but good luck getting paid for all the time you spent.
Now if you want to spend 40 or 80 hours coding and get paid $100 for your time - and don't mind being stiffed 1 out of 5 times - then just ignore that spec and code to their whim. You might even make a little bit of money.
But if you are serious about developing to make a living then you need to take care of business. The hour or two you spend on that design spec up front that you and your client sign is nothing compared to the hours of free labor you won't be giving away afterward. And your client will appreciate knowing up front just exactly what they'll be getting and how much it's going to cost them. And when those inevitable questions arise afterward - there will be a clear measure of what constitutes a completed project and how much the client is obligated to pay for that completed project.
You don't have to have a tightly-puckered contract for them to sign - but you do need to specify clearly what they get and what they pay for it and get them to sign it before you do one bit of work. If they object to signing then wish them a good day and send them on their way.
I didn't say that, I said a lot of their sites uses python and get a lot of traffic, one example is code.google.com.
You can read some of it here if you like:
http://panela.blog-city.com/python_at_google_greg_stein__sdforum.htm
If you're in the US, don't forget to file quarterly income tax estimates. Your employer used to do this for you on every paycheck (that's why you file a W-4) but now it's your responsibility. There are penalties if you are late, and the later you are the greater the penalty. gobootstrap.com is a free site that makes this relatively painless.
In my experience the most important thing is to document what you are going to do in detail and make sure the client understands.
Produce mockups of the finished site and any backend admin interfaces. Specify what functionality the site has and be clear about any functionality that is being omitted.
For example, if you develop a CMS that requires the user to process story images offline in an editor like Photoshop, then make sure the cleint understands. If you don't many clueless clients will assume that the CMS will handle it for them and get upset whent they learn otherwise. If you don't adequately document the deliverables the client will most likely demand changes during the development process.
Keep contracts simple, specify what you are going to deliver and when and also touch on rights and who will own the resulting IP on the site/code. Do insert something to say that the client cannot withold payment if you are late becuase of something you need from the client. E.g. the code is complete and you need images from the client to let the site go live and they will not supply them. This can be done without scary legalese. The law provides a certain amount of legal protection that you do not need to repeat in a contract. You do not need to mention that you will sue your client if they don't pay, you have that legal right to begin with.
Accept that you will be learning as you go along. You will encounter bad clients, but you will learn from that and know what sort of clients to avoid in future.
Also, be very careful about tax! Be honest and keep money aside to pay it when due.
But you'll also find that Google makes extensive use of Python for various projects and lists it as one of their 3 'official languages'.
PHP certainly has its place but so do a lot of other languages. Use the best tool for the job and don't be afraid of mixing technologies.
Silly rabbit
I've never had to fuck around with (open source) Gnucash to cut an invoice.
Invoice,
Post,
Print to PDF.
Technology -- No Place For Wimps! Grateful Dead and Jerry Garcia Chatroom -- http://www.wemissjerry.org
When I first started out (supported by a working spouse, and I now have an unrelated full-time job,) I started with ridiculously low hourly fees. There are two reasons to charge more than you may think you should at first:
- A fairly high rate implies quality (think about it...if you were a big company making a corporate web store, would you hire somebody charging $10 an hour?)
- You have expenses that your employer used to pay: taxes, insurance, overhead, etc.
Here's my recommendation: pick an annual salary you think you are worth, in thousands. Then divide by two, and that is your approximate hourly wage. For example, if you think you are worth $80k per year, then divide 80 by 2 and get $40 per hour that you will pay yourself. NOW, double that amount (minimum...maybe 2.5 or 3 times if the numbers make sense for your case,) and that's what you charge the client. This pays for all your expenses, and also helps account for the fact that you almost certainly will not be filling your days with paid work.
Last thing: actually pay yourself that $40 per hour. Everything else should go for growing your business and paying taxes (not in that order, of course!)
Evil is the money of root.
...even if it is with people you know/trust and even if the work will be sporadic and/or periodic.
(1)INCORPORATE - this is easy to do and is inexpensive, fast, and can be done online - pick the structure you want, LLC, corporation, et cetera.
(2)GENERAL LIABILITY INSURANCE or 'Errors and Omissions' Insurance - I cannot stress this enough - if you accept a contract from a company who in any way has the ability to hire a lawyer to bring suit against you for any reason - GET THIS INSURANCE. Many corporate contracts require you to have this insurance in any case.
Use a service like LegalZoom (there are several that I'm aware of) to incorporate. This separates your personal assets from your 'corporate' assets. This can cost less than $200.
Obtain general liability insurance. There are two primary reasons to obtain this - First, many companies who deal with contractors in a professional and reliable manner will require you to have it (unless they know you in which case they may waive this in your 'master services agreement' or whatever contract you establish with them (if there's no MSA, often you'll have a per-project contract but that's a real pain in the a** if you're going to be drinking from the same cow over and over...)) The second reason is that, quite often, for the rate of less than $200/month (and possibly much lower depending upon what you elect), the insurance will potentially offer legal services for you to partake of free of charge should you be sued.
Now, as for being sued. It doesn't, in my experience, usually happen to an individual in a project/contractor environment unless you actually deserve it; however, if you contract for someone who are themselves subcontracting to a company - you're in the land of the blame game. Be covered.
These are two simple things that will let you sleep at night.
Good luck!
Loading...
Who in god's green earth would hire you? "STFU", "Hippie Charity"? You sir, have the tact and business sense of a rabid weasel, and you should probably consider a career in after hours cemetery landscaping. That is the career that best suits your unique people skills.
Lots of practical advice in this article
I much rather be like Scotty on Star Trek who always complains it will take a while to fix the problem and comes back sooner than expected with the fix. In many projects, especially shorter ones, the overhead of negotiating the contract, determining the design, installation, fixing bugs, training customers, etc. can be as long or longer than writing the software.
What a load of rubbish - have you ever seen just how slow Ruby sites run with any sort of significant load?
Only if you don't know how to scale horizontally. Have you seen just how fast Ruby sites run with an appropriate amount of load?
Yes, I have used all 3 in commercial projects - have you?
Appeal to authority -- yes, I have, but that's irrelevant.
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 not doing what I suggested.
how many sites do you actually "tweak" after it matches the visuals?
All of them. Especially during development. When have you had a customer stick to the same design through the entire development of a given site?
Tables have their place in the real world. Stop being elitist about it.
If we stop, this problem will never go away.
Don't thank God, thank a doctor!
FYI: Less Accounting bills itself as a simpler alternative to Quickbooks for people who hate Quickbooks. I haven't used it, but I would take a look if I were in the market for accounting software.
What about sites like elance or guru? Anyone using them for their freelancing work?
I have to disagree with much of your post, as you're conflating a number of (yes, related) issues - such as how to live frugally versus how to be a freelance web developer.
More importantly, right off the bat on your first remark, you've told the person that, in all likelihood, they've earned an 'F' because they don't know their market, and that is that. I mean, that line (and most in this post) read as though they were taken straight out of a 'how to' book on business - and not the freelance Web work they're looking at. If the poster wanted that, there are plenty of places to go.
To my mind, the most important adage is "Don't train, do." You can spend a lot of time on the various points suggested - market research, for instance, or cold calling businesses, or making business cards. But there is a core to the business - doing web development. Figure out what the bare minimum is for that, and get going. Every moment wasted on anything else is moments you're not getting paid. Why sit around trying to think of ten good reasons someone shouldn't hire you? And what to say? The best reasons someone won't hire you will come up when they don't, and the best rejoinders will come with practice.
The point is that no one, out of the gate, has really any of this. You can go from zero to a successful business, but you're asking them to plan on plenty - when in all likelihood they should plan on nothing, keep an eye out for why they fail the first ten times, and learn to adapt. That is the learning curve that is needed - not how many business cards they need, or how to see fifty clients a week (which, by the way, good luck - that's ten clients a day, which is highly unlikely even if you can find them). If the person in question wants to be a salesman, then by all means, go that route. If they're going to be a developer, then they need to develop.
To my mind, there are three important pieces that all else are subordinate to:
1) Be capable. Know what you're trying to sell. You may fail to sell it, but that will get you farther than if you sell something you fail to be able to deliver.
2) Have something to show. Suits and business cards are all well and good, but if you cannot demonstrate the product they want, they'll see right through you.
3) Document everything, and review it. People get shafted by not having documentation that proves they did the work. They also lose track of where a project started to fail and why. By documenting (and showing the clients) everything, you not only keep them honest, protect yourself for the future, but you also are able to trace where it is you went wrong, and adapt.
But all of that aside, if you want to do it, you're ready. Ignore anyone who says otherwise. You may fail - but you'll get over that. Not starting is a far worse fate.
[Ego]out
Hello, I have been through this thingy, I dont see contract is a practical idea for online driven outsourcing. I used to work on sites specialized in Freelancing like www.getafreelancer.com and many others. If you are Europe or USA you will not have a problem in getting your money , as you are able to acquire a PayPal account. for price thingy, it works on bidding system, so ...
so my recommendations is , check those online freelancing sites and good luck
Samer
Look, you are not a freelancer, you are a full-time employee out of a job.
I can't tell you how many half-assed, half finished projects that I've seen come my way that were created by people like you. Typically, it's some mid to junior level code monkey kicked out of his cubicle that takes some project and then up and leaves for a full-time job offer.
The client and the project are left in a lurch and typically, the code itself is crap because it was made by a person who is used to being part of a large team and being told what to do and who typically focuses on small portions of larger code. So building a large scale application quickly becomes a cluster fuck for these types.
Are you a qualified and seasoned software architect? Can you deploy a complete webservice singlehandedly with all parts coded with the same level of skill? Are you willing to pass up a full-time job offer in order to work your project to completion?
If not, I would say everyone would be better off if you just went to some staffing service and worked as a temporary IT worker. You'll get paid similar to what you were paid before, have benefits and be given the same limited scope of responsibility. Best of all, if you decide to leave for a better opportunity, the staffing service can put another cubicle monkey in your place.
So please, think of the actual harm you will cause to both your prospective client and their product by taking freelance work when you are really just an unemployed cube monkey looking for a new cube.
And say that unix (FreeBSD myself) is a good platform to *target* for contract web stuff. Windows, currently, isn't as cheap or easy for freelance web stuff as *unix. However, call me weird, but I prefer to do the actual writing of code under windows using a windows-based text editor (Eclipse, UltraEdit, or heaven forbid Dreamweaver depending). Depending on whatever, I'll either just use SMB to mount the disk or FTP most of my work. That doesn't mean you can slack though, you will will have to do minor edits via Nano or VI. And depending, I'll be doing version control either via TortiseSVN or through a shell (I wouldn't ever trust SVN over a network mounted filesystem).
Interestingly, I wonder what it would be like to do development work on something a bit more unixy like OSX. Dunno, bottom line is:
And I'll add "But make sure you can work on any OS, cause you'll have to eventually". All OS's suck, just in different ways ;-)
Sorry if I hurt your feelings. I wasn't aware that Slashdot was for grandmothers chatting quietly about the latest developments in the knitting industry. Perhaps you could guide me to a place better suited to boisterous, passionate and foul-mouthed postings like mine would be better suited.
Again, sorry if I hurt your feelings or offended you. I hope my non-apology will help you carry on with your life in a somewhat dignified fashion. Cheers.
What are you, some old-school bricks and mortar business designed by the dinosaurs. Us young kids with our new economy are leveraging paradigm shifting software such as QuickBooks that integrates SMTP based technology that enables us to seamlessly *email* our clients PDF invoices from within our software.
While your snail mail slow-voices arrive at your client in days, our internet-speed invoices use push technology to instantly bill our clients.
Have a nice life, gramps. PS: DrKoop is going IPO and I hear it will be huge!
But only if you were the first guy to work on the website. The second you have to touch somebody elses 4 table deep, FONT laced goo, it is usually much cheaper to bite your lip and deal with it.... but even then it depends.
I think the moral is really, it all depends. Just dont have a heart attack if you find yourself using a table for layout every now and then.
Drupal has you covered.
Anything you need to know about Drupal itself can be found in the links on that page. I recommend their beginner's cookbook as a starting place.
I find myself using conditional comments more and more these days. Wish I had done so long ago. Makes your codebase much cleaner and your life a bit more sane. The only drawback is you have to always remember to touch that pesky ie.css file when you make any kind of breaking change.
OK here you go:
First, remember your goals.
1. Make customer happy.
2. Make a product the customer wants.
3. Get paid.
Goal 3 is hardest. So here's what I did:
1. Define a plan of action; i.e. "First we create a logo and define colors. Next we do consultation. Then we do a mock-up of the site. Finally we break the site out into a working model and upload to the server."
2. Define rates for different things. I suck at logo creation but kick ass with scripting. So, I define my rates differently. I also define a minimum rate. For example, web pages are $80/hr, minimum 1 hour per page.
3. If it is a large project, break it up in phases with pay period.
Phase 0 starts with just talking and an estimate price. I never charge for consultation.
Phase 1 starts with a mock-up of the site (just drawing it on paper or usually in Photoshop). I keep track of time, but I do the mock-up as many times until the customer is happy. When they are, and this is what we agree on, they pay the first 1/3 of my estimate.
Phase 2 is when I break the mock-up into a functional web site. As I work, I post it onto a developmental server so the customer can see it. Once it works as agreed on, they pay the 2nd 1/3.
Phase 3 is publishing, testing, and setting up the host, burning CD's of dev files, etc. Finalizing the project. By now you should know what is owed to you, and bill for the remainder.
I have found that this model will keep serious customers serious and casual askers away. At most, you'll only ever get screwed out of a 1/3 of the work this way.
Also, I do keep track of time... but remember - you're the boss. You decide how much it really took, either way. I often give heavy discounts of time due to my own incompetence. :-)
"They said I probly shouldn't fly with just one eye," "I am Bender. Please insert girder."
For the proposal, develop essential proposal terms to submit to qualified parties at the conclusion of initial meeting or shortly thereafter. Terms at a minimum should include:
Why are these terms in a proposal, because this is where you: appear more professional and as a result can command higher amounts; provide an avenue to upsell additional services (maintenance, copy {content} development services, optimization, web site submission, online ad buying, etc.); reduce confusion by educating the client about the amount of work to be performed; and set realistic timeframes that all parties can agree with.
The final contract should detail the process even further and in greater detail but these terms must be specific to each individual developer's requirements.
Don't rely on what you find on the internet for your contracts. You'll only get what you paid for. The cost of a competent attorney is negligible compared to a potential reduction in liability and the maximization of your earning potential. I've developed different versions of both the proposals and final contracts (both from developer to client and from developer to subcontractors) in the past.
Anyone interested in learning more please feel free to drop me an e-mail or contact me at my office if you like to inquire about engaging my legal services.
And now a disclaimer: The content of this comment is only an opinion and not to be construed as legal advice. You should not act nor forgo to act on the basis of the material contained herein without seeking advice from a lawyer licensed in your jurisdiction.
I am by no means an expert, in fact I bet I am still doing a lot of things wrong, but here's a few things I've learned so far from a web developer centric point of view: 1. Get clients technical details (hosting provider, php version, mysql version). 2. Take the amount of time you think the project will take and add 50% of that time to it. So instead of quoting them at 80 hours, quote them at 120 hours cause you will most likely go over that 80 hours. 3. Get some business cards (yeah I learned this most recently and felt like an idiot for not having any). I have more on my blog if you checks the profile.
i'm building a web site for a friend's crafting business and plan to use ZenCart - why is it a problem (from a stay-out-of-jail perspective) that it deletes the row (assuming that there isn't an option to keep it)? from what i can see, ZenCart is an order fulfillment system, not an accounting system, and thus does not provide any payment system - you have to attach something like PayPal. as soon as you're done servicing the order, i would think that the part that's in Paypal (or Google Payments, or whatever) is all you need (for the IRS) = what they ordered and what they paid.
CSS is terrible at sharing horizontal space
Worse at sharing vertical. AFAIK, there's still no cross-browser way to vertically center in or proportionally apportion vertical space in a non-td container that's height dependent on the height of the viewport and/or page.
Things will get better in the far future where IE8 supports display: table-cell and IE 6 and 7 drop out of the market... so, about 4-5 years from now...
Furthermore, there are layout problems that CSS is suited for that are still a bigger pain than an equivalent table layout. CSS positioning is a great tool, I'm glad we have it, but it's less useful as a religion. Nothing wrong with keeping tables in your layout toolbox as long as they're used wisely.
Tweet, tweet.
You never delete shit. Ever. Then you loose the records of it happening. Fraudsters delete shit. You always hide it. What if the customer or your merchant account comes back several months later and contests the order? How can you prove you canceled an order that is now deleted from the database?
What if they want to re-instate the order? Who knows what you might want to do with that information! If you delete it, you'll never get it back. If you hide it, you can always pull it up later.
Paypal or your merchant might have the order totals and stuff, but they won't have the exact line-item invoice sent to the customer--only the shopping cart application will. I've yet to find a cheap shopping cart application that sends the full shopping cart to the payment system. They usually send over the mimimum set of fields required to get an approval or decline and then they are done.
If the ZenCart developers think deleting an order is a good idea, it makes me question their understanding of the problem domain. What else are they doing that is sketchy?
Besides, there are other free shopping cart applications out there that work for folks like you or me who only want to sell a couple products. ViaCart is the one I finally settled on. Much easier to use too. It is free for a limited number of products.
Honestly though, all of them suck in various ways. You just need to pick the one that doesn't suck for the parts you use.
Of doing freelance work.
I've been reading what everyone else mentions or offers, but the one missing item from all the advice is to ask for a deposit. While this may not seem like a very good business move, it does show intent and makes sure that you don't put in a ton of time to only have a client back out later, The deposit can cover expenses for client meetings and research into their project. But you need to ask for a deposit, even more so on the big ticket large scale projects of more than a thousand.
I've had several projects in the last year go belly up. On was a calendar project we were hired to do by a local school. We made the mistake of not having a contract, (Our bad), and not getting a deposit, (again out bad). We figured, "what could go wrong?" the district calendar was a project funded for the last 8years by a local bank. We shopped the project around to several different places and brought the budget in at $12,000, a $6,000 reduction from the year before. We got the go ahead from the school to do the work, and when we were ready to go to print, the bank bailed out of the project. They're now having money problems of their own. The school didn't have the money in the budget, so the project died. And we were out all of the time we spent on the project, plus the money we were going to get paid.
While we can't hold the school responsible for the bank failing to fund the project, a deposit would have kept us from loosing money. After that point, I started asking for deposits and I haven't had a client bail on a project since. By simply asking for a show of earnest money in the project I can safeguard myself from spending my time on a project that goes nowhere.
-Goran
Carpe Scrotum - The only way to deal with your competition.
How's inline-block doing these days? I learned about it five years ago, but *Mozilla* didn't correctly support it as of last year. And of course, IE support was, well, limited (only on elements that are inline to start with, doesn't work in quirks mode)....
Tweet, tweet.
not sure if this has been posted yet but here are a bunch of useful tools... http://www.cogniview.com/convert-pdf-to-excel/post/the-freelancers-toolset-100-web-apps-for-everything-you-will-possibly-need/
Would be to just play around with all of them. Dunno if you will be the guy who is adding products and stuff, but if you aren't make sure to pay attention to the backend side of things. All of them handle things like inventory and "t-shirt sizes" or "widget colors" different and you want to make sure your client can manage that stuff on their own. For example, the main reason I choose viacart was that it would track the inventory separately for each product option... several of them (including X-Cart, I think) would track inventory based on the product. So if you had only 2 medium shirts and zero large shirts, the customer could order a large shirt anyway because the system would go "you have two shirts in stock" regardless of the size.
As I said, they all suck, honestly. Just in different ways :-) Play with them and try to set up a mini version of what you are doing to be doing on production to see if they meet your needs.
I'm sure you are being paid handsomely for it by Quickbooks.
try http://www.openworkbench.org/index.php/ to help you out. I think that is a comparable open-source application to MS Project!
Somewhere in a dark place you will find:
www.m1
Outside of drupal.org, the guys at Lullabot have some awesome resources (articles, videos, podcast).
The Wumpus clan shall rise again.
Ontopic
I've gotten several contracts from people who supported my projects at regular jobs.
There is no better way to build business relationships then building projects that work and get done on time and budget.
If you can do that you won't really need to market yourself (after you get several steady customers).
You do need one RPC (real paying customer) to start, starting is key.
To land the RPC you could cold call 50 businesses.
Or you can call everybody you've worked with (assuming you left a positive impression), even if you don't socialize and aren't particular friends. Let them know you are looking for contracts. Make sure you personal network is aware you are available and looking. Again that assumes you are not an oxygen thief (who are never self aware).
Don't assume you are going to be delivering turn-key web sights to small business.
You might wind up subcontracting some particular task for a former coworker who knows you can deliver and is sick of dealing with competent marketers/incompetent developers (the norm).
You will never land anything but small business with cold calling. Bigger business' has layers in place to keep you from bothering decision makers outside normal procurement procedures. You network is key to getting you access to larger business. Most people have niche industry experience that counts almost as much as developer skill, again your network gets you access.
The upside of bigger business is more repeat business. Long term business relationships pay mortgages.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
Ever think of attaching the pdf to an email message? Vtiger does stuff like that, but it's got a customization requirement which I thought excluded it from consideration in this instance.
Technology -- No Place For Wimps! Grateful Dead and Jerry Garcia Chatroom -- http://www.wemissjerry.org
>>professional freelance web development rates in US and Canada start at $30/hr for complete beginners
Now I know you're lying. I live in Denver, and I can assure you that I can hire a "complete beginner" for *way* less than $30 a hour, any day of the week.
I can't believe I'm seeing this argument again. Here. Now. In 2008.
Well, as long as we're adopting insulting tones...
It's becoming clearer to me that disbelief at any expression of support for tables as a layout tool may be a sign of inexperience and incomplete knowledge rather than real expertise, and I don't know that I'd ever hire anybody who was dogmatic about this issue. Certainly not at an hourly rate.
I've coded layouts using pure CSS positioning on literally hundreds of sites from 2004 through this year. I can take nearly any arbitrary design and transform it into table-free markup, images, and a stylesheet. And while I think the tools CSS positioning yields are invaluable, it's also unquestionable that for certain designs and tasks, straightjacketing yourself into using *only* those tools often results in extra time/resources spent. Whether or not the benefits are worth it is a cost-benefit analysis problem, not a hard-and-fast rule with a foregone conclusion.
Maybe I'll fire up IE6 to really complete the feeling I'm getting.
If you're not firing up IE6 regularly, you're either blessed to work only on sites that have a skewed audience, or you're falling down on the job. Most general browser share stats I've seen show IE6 as still having over 20% market share, writing them off is premature. Even trying to apply the "bad browsers get gracefully degraded designs" philosophy can be a bit tricky with IE6.
Tweet, tweet.
I'm a recent freelance web developer myself, and have found that time management is a big challenge. Not only is the spreadsheet method cumbersome, but it doesn't allow for much transparency with clients.
My solution? Write my own time keeping software.
I've been developing a web-based application that works much like a punch clock. I choose the project I'm working on and click a start button. When I'm done with that project, I can click the stop button and enter some brief work notes. In addition to this basic stuff, it has back end reporting so I can see who owes me money, view an overview of how much I've been working on a monthly basis, and more.
I've also created a client front-end where my clients can login and see what I've been working on, and can see how much time I've spent on various tasks. Additionally, they can see what they owe me for the work and can login and pay me via credit card (through paypal for now, but that may change depending on pricing).
So far, it's working great for me and my clients. I'm still finishing some of the coding of some new features, but figured I should get some beta testers in soon...so if you (or anybody else, really) would like to give it a go, shoot me an email at noyler@gmail.com and I'll demo it for you. After I feel it's a solid product, I figured I could offer it as a service for any freelancer on the web and charge something small for its use...like $5/month or $50/year.
Best of luck to you!
This comment is more directed at the original poster, but I absolutely agree. I will add that working for agencies can be fun and profitable if you live near a few. There's a handful of them here in Chicago and it's very good work. The pay is typically pretty good once you get a reputation and enough people know you. That's key: knowing people.
I get most of my work by calling people at agencies where I've worked and letting them know I'm available. Usually within a couple of weeks I hear back from someone that there's a project coming up. Agencies are a good bet because they're accustomed to having freelancers and contractors working for them, and if you're good they will keep you around and if you're especially unlucky put you in their payroll system.
Get to know other web contractors in your area. They're typically good people and they'll have good advice on which places are good to work at and might have some leads too. Knowing a full-time employee at an agency is nearly a guaranteed way to hustle up some work there.
Make no mistake of it though: working for agencies is very difficult. The timelines are always shorter, the hours longer. Also, agencies typically demand absolute perfection for the deliverables that will eventually reach their clients. Every page must look pixel for pixel the same as the layout you get from their designers, in every web browser known to man. Seriously I once had to kludge my super pretty, modern layout into working on IE5 in Windows 2000 once because that's what a client's european division used. This is probably territory well covered by the "not another dreamweaver developer" posts, but it bears repeating: web development is a specialty and like any other specialty requires a lot of special knowledge. It's a skill like any other. Make sure you're up to the challenge before you start seriously working in the business.
My advice is pretty useless if you're looking to avoid working places on-site and if you're only looking for a between real jobs kind of situation. Hopefully it helps someone though.
I agree by billing by the hour, and I used to as a freelance, but where my company is it's just not possible. I am in China where there is a severe lack of trust in any work anyone does. There are loads of scammers and 'freelancers' who will undercut you by 90%. Sure the client learns the hard way, but by that stage the damage is done; They still don't trust anyone.
Being a foreigner helps, but there are loads of dodgy foreigners here too.
I bill for vertical solutions and have a process outlined with a scope document and technical specifications that is agreed upon. This works against the agile methodology I'd like to think we follow.
There is also the client expectation on receiving a set price. They all expect a one off cost.
It's not as if we have not tried to bill by the hour or in minimum time slots, but for a set lot of work and to remain competitive, we have to have highly efficient pipelines of work to which the specifications help. I am dealing with English as a second language with my Chinese developers where the eye is trained in English better than the ear. Micromanagement is key and adds a huge overhead to a project that may or may not be billed.
We make more profit off hosting and support maintenance than the contract itself. Everything, and I mean everything, is written down. We use activeCollab to receive support tickets and use the time billing feature where we do work based on a pre-purchased set of hours. This might seem like overkill, but it shows a great sense of organisation on our part, and responsibility for the client to use the proper channels. This means you are in charge, you run the show. If it's written down, it's traceable even if it is your own fault.
Needless to say, a lot of these decisions were forged over time and experience in this seemingly odd industry in China.
Customers pay for quality, and they pay for referrals. New customers whine about cost until they hear horror stories of simple things gone wrong. I can count into the hundreds of the times we spent salvaging projects which amount to a cost the client cannot manage and ends up being burnt by their experience of misplaced trust of just wanting a website.
In the opposite side of things, some clients expect rock bottom prices for being in a 3rd world country. Somewhere along the lines they have read an article on outsourcing from places like rent-a-coder. We don't bother with them. They will learn the hard way or maybe they will be pleased; Good luck to them and their risks ;)
Another point, which is bidding for work on those freelancer sites. I find it devalues the profession - Don't do it. The companies who do this might be starting out and need some cost cutting, and there are arguments for global economy etc, but you do not want their work. You are competing with people who are more desperate than you, with lower costs and more corners to cut. This means the client always wins and you lose.
Sorry for coming in late.
I feel that the discussion has gone a little off topic, with comments about CSS best practices while we should be answering to the OP with small business best practices.
I'll shamelessly plug an article I wrote inspired by this conversation:
http://www.bukisa.com/articles/11949_how-much-should-i-ask-a-guide-to-pricing-for-freelancers
If the OP is still around, I hope this gives him a little insight.
3 simple (technical) steps:
- have a server pre-configured for development (VPS, home brew etc) w/ virtual hosts configured for the project: beta.whatever.com, dev.whatever.com
- setup an SVN for the code
- setup TRAC, tied into SVN
Doing this provides most of the basic technical framework you will need to maintain the project and communicate its status w/ the client (i.e.: wiki (good for end-user documentation), timeline, roadmap, bug tracker).
Also setup a workflow for invoicing. i invoice every month through google apps spreadsheets using the SHARE functionality, noting the status of payment in the spreadsheet itself as the cheques arrive - or u can export as PDF and email directly.
Decide on the schema for assigning versions to your releases ahead of time.
There are plenty of hosted time tracking options as well. Here are just a few:
http://www.myintervals.com/
http://www.freshbooks.com/
http://www.basecamphq.com/
Shut up. Shut the fuck up. "You shouldn't have a photo in PNG anymore than a logo should be in JPEG", really?
Nothing should be in JPEG unless you want it with lossy compression artifacts.
Everything should be in PNG, as it offers the best high-colour lossless compression that is supported by most browsers.
Hey asshole, why don't you learn about the technology you use, rather than parroting some stupid, baseless rules that some moron told you? Stop making MY Internet ugly.
Don't try to get every last dollar out of them that you might be able to.
Try to make your pricing, estimates and the work you do work well for *both* you and the client.
And if you take too long on something they need, hopefully for unavoidable reasons, give them a discount on that part of the work.
Remember that customer satisfaction is the best thing you can prioritize to make sure you keep those customers and get any new ones. (it'll help you avoid some of the issue of unhappy clients not wanting to pay your bills too)
jw
P.S. I'd suggest this way of thinking for ANY business... and a lot of large ones could definitely use the lesson.
Hi Scott! I've been trying to contact you about a Galaxian clone you wrote some years ago. I've managed to port it to modern web browsers and I'd like to chat with you a bit about it. Unfortunately, all your contact info appears to be horribly out of date. If you get a chance, can you shoot me an email at akaimbatman@gmail.com ASAP?
Thanks!
Javascript + Nintendo DSi = DSiCade