Welcome back to our 3-part freelance software developer series!
In the first part of the series, we outlined some benefits and drawbacks of becoming a freelance software developer so you could decide if it was for you.
In this second part of the series, we explained how to become a freelance software developer.
In the this third and final part of the series, we’ll share some tips and tricks we’ve learned being successful freelance software developers over the years.
We have three sets of tips to share: communicating with your client, protecting your reputation, and solving common freelancing problems. Let’s get started!
Communicating With Your Clients
The first set of tips we’d like to share involves communicating with your client. As a freelancer, this one of the most important things to get right! I find clients appreciate the following practices:
-
Be reliable: Be a reliable communicator, and answer emails and questions promptly. Also, avoid letting your clients wonder what you’ve been up to by sending regular status reports and/or when you achieve a goal.
-
Be polite: Be polite and professional, but just as importantly, be friendly. We are human, after all!
-
Be honest: Don’t lie, and always keep your word. Don’t make promises if you know you aren’t going to fulfil them. For example, don’t promise to implement a certain feature at the end of the project, if you already know that you will have troubles completing the project within the estimated deadlines, without that feature.
-
Don’t hide problems: Notify your clients of any problems as soon as possible, if the problem is serious and/or is going to emerge anyway, sooner or later.
-
Keep track of your time: Keep track of your time, and share it regularly with your clients, if you’re paid by the hour. If you work on a flat rate per project instead, it can help you figuring out the difference between estimation and actual effort.
-
Offer technical advice: If you notice clients making a wrong technical decision, be sure to point that out to them rather than letting them flounder. Debate the decision, but remember that, in the end, the client always has the final word.
-
Ask questions: Don’t be afraid to ask questions; this can save you and your clients much headache down the road. In case of doubt, always ask, and avoid solving ambigities basing on what you think the client wants. When a requirement is not properly defined, or is missing important details, ask her to provide more details, or give her your version, so she can immediately spot any mistake.
-
Deliver what your clients expect, rather than what you think they expect: In software development, there’s often an expectation gap—the difference between what clients expect and what they really get. Eliminating ambiguities and avoiding assumptions when something has gone unspecified are good ways to minimize that gap.
For example, if a requirement states that a user shall be able to register by providing an email address and a password, and another instead says that a user shall be able to sign in by entering a username and password, you may notice that there’s an incongruence: registration requires an email (but not a username), whereas login expects a username. Should you use email during login, or should you also ask for a username during registration? Nobody but the client can answer to that question.
-
Solve problems: When there’s a problem, focus on solving it rather than on complaining about it.
Protecting Your Reputation
The second set of tips we’d like to share is how to protect your reputation.
As a freelancer, this is your most important asset! As the saying goes, good things are written in sand, bad things in stone.
I know—it should be the opposite, but that’s the way of the world. If you have a bad reputation, it can be quite difficult to find projects, especially in online freelancing networks, where your reputation is public.
A few years ago, I hired a developer on Upwork to help me on a JEE project, even though he didn’t have specific experience with JEE. I offered to pay him to learn what he needed, and I assigned him a simple non-development task, technical writing.
About one week later, he changed his mind, saying that JEE was too complicated. Even worse, he disparaged the architectural choices my client and I had made, using very offensive words to do so. Nevertheless, he wanted me to pay him for all the time he spent on the project, blaming me for making him work on technologies he realized he didn’t want to deal with.
In the end, I paid him for just a fraction of the time he spent, and I left him long, negative feedback on Upwork, which I’m pretty sure disrupted his reputation on that platform. This was intentional. Don’t misunderstand me; I wasn’t retaliating. I simply felt I had to warn potential future clients what level of service and professionalism they should expect from that person.
The best way to protect and enhance your reputation is to make sure your clients are happy!
How to do that? A possible way is by temporarily turning yourself into a client. I hired developers a few times from platforms like Freelancer and Upwork, and thanks to that I experienced myself a few things, such as:
- how to choose candidates among several applicants
- what to expect while work is in progress
- how frustrating it is when developers don’t send updates, and don’t respond to emails
- how good it is when developers keep you in the loop, anticipating your questions and providing updates
Of course you don’t have to hire developers with the only purpose of behaving like a client. It can be very expensive. :]
But it can help if you, from time to time, think about how you would feel if you were in the client’s shoes. Especially when you are deliberately doing something to hide a problem, lying, etc. My favorite motto in life is: what you do not want done to yourself, do not do to others (Confucius quote).
Solving Common Freelancing Problems
The final set of tips we’d like to share is how to solve common freelancing problems.
Like any career, freelancing has its hazard zones. Here’s how to anticipate and prevent the most common problems.
Solve All Ambiguities Upfront
Above, I mentioned that a key way to keep your clients happy is to seek out and eliminate ambiguities in the client’s expectations. The beginning of a project can also be rife with ambiguities about rates, payments, payment terms and deadlines. Address these right away!
Avoid Signing an Unknown NDA
I’ve been asked several times to sign an NDA before being shown any details about the project. And I always refuse, at the risk of losing the project.
Why? The problem is, how can I sign a non-disclosure agreement, binding myself to confidentiality, non-competition and so forth, when I don’t know what it is I’d be protecting? What if I’ve already worked on projects that conflict with the NDA?
If this happens to you, ask if the client can give you an idea of what the project is about, without disclosing too much—just enough to let you assess whether you can responsibly sign an NDA.
What is the project about? A social dating app? Hmmm, ok I think I should tell you a couple of potentially similar projects I’ve worked on recently.
What is the project about? An app to calculate the trajectory and fuel consumption of a space rocket? Ok, I can sign the NDA, I’m pretty sure I haven’t worked on anything even remotely similar.
Read and Understand Contracts
It sounds obvious, but this is a topic to handle with extreme care. A contract is a legally binding agreement between you and your client, and since it’s usually the client requiring you to sign, the contract is mostly focused on protecting her and her project, rather than you.
It’s difficult to give advice, because no two contracts are the same, and most importantly, I’m not a lawyer. But here are a few general pointers:
- Read the contract carefully.
- Read it carefully again, and then again!
- Don’t hesitate to contact an experienced attorney to review the contract for you, especially if anything is confusing, unclear or worrisome. True, it’s expensive to get legal advice, but the cost is a small fraction of what the advice could save you in the end.
- Don’t hesitate to propose changes to the contract if you notice any errors, ambiguities or unfavorable terms.
- If the client refuses to make the changes you require, step back and go look for other projects.
Prepare for a Sudden Lack of Work
It’s part of the nature of freelancing that a project may come to a stop with no prior notice. My countermeasure to protect myself is to work on at least two part-time projects at once, rather than on a single full-time project.
Each project acts as a backup for the other: If one is aborted, I still have work. After all, half an income is better than none at all.
When that happens, you might feel frustrated – at least, this sometimes happens to me. But I know it’s just a normal reaction, and when I feel ready I start looking for other challenges.
Sometimes I let one or two days pass, if I am still not motivated enough. I enjoy some more time with family, and maybe do something I usually couldn’t, because of too much work, such as some leisure time (which, recently, is playing drums :]), learning new things or reading books.
Lastly, I cannot tell if it’s just luck, coincidence, or something else. When a project ends, either suddenly or because of its “natural” expiration, I often receive unsolicited and unexpected offers. Last time, for example, the day after a project was suddenly frozen, I received a proposal via Stack Overflow, and a couple days later another one via LinkedIn. In both cases from new contacts, and not friends of friends.
I’d love to hear if the same happens to you.
However, unsolicited offers or not, I keep searching, applying to projects, asking my contacts, etc., until I have a new project to work on. Sometimes it takes a few days, sometimes even a couple months.
Where To Go From Here?
And that concludes our three part series on freelance software development! I hope it was useful whether you are considering becoming a freelancer, or an existing freelancer looking for tips and tricks.
If you want to learn more, here are some interesting readings:
- Staying motivated as a work-from-home developer
- Interview to Piero Toffanin, a former digital nomad
- Why you shouldn’t be scared of going freelance, by Ignacio Nieto
- Do’s and Don’ts of a Freelance Developer, by Ignacio Nieto
- Fixed quotes, by Mariano Abdala
- Busting the Top 5 Myths About Remote Workers, by Scott Ritter
- How to Travel While Working: The Traveling Engineer’s Survival Guide, by Breanden Beneschott
- Don’t Be Fooled: Calculate the Real Cost of Employees and Consultants, by Hyam Singer
I’ve been recommended Serial Winner, a book not specific to freelancers but a great read for anyone wanting to succeed at just about anything. However I haven’t read it, although I’ve added to my TO-READ list.
Another book I personally recommend, not related to freelancing at all, but inspiring in several ways when it’s about managing your finances, is The Richest Man in Babylon.
If you have any questions or tips you’d like to share, please join the forum discussion below!
The post Freelance Software Development Tips appeared first on Ray Wenderlich.