*Note: This writing is based on my experience, might be subjective.
I have been working full time and sometimes I got a freelance job, mostly from my friend. The clients are various, from personal project to a company's project.
I remember my first freelance job is when I'm in a university. The client wanted me to build an animation to learn Arabic language. I used Macromedia Flash (yes, Flash, and yes, Macromedia. Man I'm old). I had a 4-person team to work on that job and we got 1M rupiah (around $100 at that time). So each person got 250K rupiah (around $25). Even though it's small, I was really happy because I it's my first project.
One other memorable freelance project is when I created a ticket management system with my friend (you can check her blog here). The client is an EO that will hold a famous group singer event in Bali. It's quite fun and challenging because not only you have to build an app, you have to be in the event to set up the networking, testing the app and everything.
When you get a freelance project, you won't be getting a good client everytime like in above stories. Sometimes you get an annoying client, that doesn't explain details what they truly want (and blame you in the end), or you get a client when she/he delays the payment with various reason. Remember, your client is also a human, which mean they have a good and bad side.
Ok I think I got distracted and it's time to create tips to work with your clients:
- Always, and always, create a list of tasks with each work hour you need to complete it. And based on that, you can create a proposal and the bill
- Create an agreement with your client about when you need to finish your job, and also what happer when they are late to pay you. <- Super important
- Also when your client needs to pay the job. It can be when you get 50% progress and you get 50% payment, or 100% payment in the end, up to you. Sometimes I got a problem about this because I'm an asian and we're a bit shy to talk about money. <- Super duper important
- Pay attention on the stack. I got a problem when the client specifies the project has to be in .Net and I did it using C#, turns out the client wanted it to be in VB.Net. Yes, both of them are in .Net family
- Pay attention to your client's server. If your client is using their own private server, always ask what OS they have, which version, and everything. It happened when I developed a web app using .Net 4.5 and turns out the server still using .Net 3.5.