I've been a freelance programmer, web developer and system administrator for three years. Not that much, you'd probably say, you may be right. You may be wrong either. Anyway, when you're 21, three years don't seem to be a little time.
I started when I was 18. I had a part-time job in dental clinic (I'm terribly afraid of dentists since then, though I wasn't afraid of them before) and my salary could just cover my Internet bills (in a small town ISPs have very high prices while students can't get much money for work) and leave a little spare money to later spend them on my friends' and parents' birthdays and New Year. I'll tell you the full story some day, now I just want to note that I started from barely nothing and today I only get money from freelance. No full-time office work.
1. Work regularly. Don't depend on you mood. You should choose time for you to work, and you must work every day from, eg. 6 pm to midnight, and you mustn't do anything but work during this time. Yes, it's very tempting to have a break, read forums, chat, play quake, make love, go skating, etc, and finish the work next morning. That's completely wrong attitude. You work at home, it gives you more freedom and more flexibility, but it's still work.
Of course, if you feel tired, you should rest. Make coffee, smoke a cigarette, clean your cat's toilet, but do not start doing anything time-consuming and interesting – you'll lose a working day.
If you don't want to do anything right now, force yourself to do. You want money? You want to finish this project? So work, you bastard! Start from simple things, do some routine stuff you didn't want to do the day before.
Also, it is very important to make your family understand, that this is work, too, and they should try to not to disturb you when you're working.
It's hard at the beginning, but soon you'll get used to working on schedule, and become as productive as never before.
2. Don't lie to your clients. “Of course, I do not!” – you'd say. Lie! Terrible lie. There are three kinds of lie to client I know:
1. When you weren't working or didn't yet do something, but you say you were or you did.
Sure, you don't want to look lazy. But you aren't, are you? So what are you afraid of? Tell you client honestly, that you lost a couple days, tell him, why is it so. Don't make him distrust you. Tell him, what are you going to do to outweigh lost time.
2. When you have problems with some part of work, but you say that everything's okay or that there were some difficulties, but you overcame them.
Are you afraid to look not good enough? You aren't then. I'll tell you more about that a bit later. Remember, noone can know everything, no one can overcome each and every difficulty. You understand it, right? So why do you think, your client doesn't? Don't let him think you're a lier. Tell him, that you are not very familiar with 'XXX', but you can work it out, and say how much time do you need to do that.
3. When it was easy to do something, but you say it was a great achievement and you had to go through terrible difficulties to implement that feature.
Are you afraid to get less money than you could? If you want higher prices, take harder work. Any work should cost what it is worth. And do you really want to look that bad, so you are hard to do even simple things? Clients are not coders, but in most cases they realize what is easy and what is not.
3. Don't think you're smarter than your customer. If you're that smart, where's you money then? You not smarter, and neither he is. You now how to code, he know to make money. Everyone is an expert in his own sphere, so cooperate. Ask him, why he needs the features he needs. Understand what are priorities. Tell him, why is 'XXX' bad in your opinion, and how could it be improved. Extreme programming adepts call it 'planning game'. Work together. You'll see the resuls.
4. Communicate. Yes, it's obvious, but many people underestimate the importance of communication. At first, people like when you're open and communicative. Be a nice guy. Let them like working with you. Of course, you met to work, not to chat, but a couple lines in IM isn't a big deal. Just let client know what are you working at right now. Be alive. It is okay to say “Be right back, gonna make some coffee”, you're a coder, coders are known to drink litres of coffee every day. That's thought to be funny, use it. Be a geek and be a normal person at the same time. But do not chat too much, you should be working. And your client surely have things to do, too. Remember (or write somewhere) clients' names. Let them feel you remember them.
And the second, not that obvious, benefit of communication is that it helps you track the progress. When you tell someone what are you doing, you know better where you are now and what are you going to do. IM is optional, but weekly email reports are the must, even if client doesn't require them. It would be very good if it's your idea to file the reports. They are not only to let client know how much he has to pay you. they are for you, too. Without them you may have lost the feel of progress and start working slow and inefficiently. I recently made that mistake, and right now I'm finishing the project I would finish two months ago, if I had reported regularly.
5. Do what you can do and a little above it. If you're afraid you aren't good enough, you aren't. We are programmers. We can do anything. If we don't know how to do something, we read manuals, look at the examples, and do it. But, from the other side, you must clearly know, what you aren't good at. Never take the work you're sure you can't do. But don't be afraid if you have to deal with something new. Ask for more. Get experience. You can't get experience in any other way but working.
6. Love your work. Obvious. Never deal with what you don't like. Be good at what you are interested in. Find your niche, but ensure it's not too narrow. Discover new areas of expertise for yourself, but always keep yourself interested. Enjoy your work, programming is almost like sex, didn't you know? If you don't get any pleasure from your work itself, maybe you should try to find someting more suitable and joyful for you?
7. No step back. Never ask for less bucks/hour than on previous project. No, I don't mean asking more and more and more. You'll lose all your client then. But the work should be paid what it is worth. So don't take the work that is too cheap'n'nasty for you. Be professional.
Maybe not all the mentioned rules are the must, but I did follow them and it brought me to success. My freelance experience is not limited to these rules, check my blog at http://www.miheev.info for updates of this article, my other experience, including reviews of freelance sites and general freelance and programming tips and tricks.
Article Source: http://EzineArticles.com/?expert=Aleksei_Miheev