How to start a successful freelance business as a software developer (2017)
nickjanetakis.com
nickjanetakis.com
Between subcontracting from established freelancer friends and reaching out to my network I was able to get a few projects, and things were progressing nicely but then my biggest single client had some internal issues and basically didn't pay me for 6 months.
My financial situation going into freelancing was not good - I had some debt going in, and then put some incidental expenses like visiting a customer's city and staying in a (cheap and amazingly nasty) hotel for a few weeks on a credit card. The gap between invoicing the work and getting paid was too much and I realised I needed reliable cash flow.
They say the main reason businesses fail is lack of capital. Turns out starting a business with negative capital is hard. Too hard for me.
In most places, no lawyers are allowed, and no discovery. Filing is cheap typically.
Discovery is vital to keep nonsense costs down.
If anyone is thinking of going into consulting:
- simple, plainly worded contracts with pay schedules are important
- check your local small claims court, focus on if lawyers are allowed, if discovery is allowed
- find out what your local demand letter laws are like. A demand letter may be required prior to small claims court.
IN RETROSPECT... I could possibly have taken them to small claims twice, over two unpaid invoices - each around $4k. That would have kept me under the limit, and possibly sped everything up a lot.
Also, if it is a larger corp, even 50 people, small claims court means you are expending far less energy, and funds, than they do.
A corp of even 50 will probably hire a lawyer for advice, and to prep the case, even though the lawyer cannot be in court. The lawyer may try to hound you, trying to pretend they can compel discovery (again check local small claims laws here!)
Many small claims courts don't even allow recovery costs. Meaning, they just spent $20k, and pulled half a dozen employees into repeated discussions, you spent $100 on filing, and some of your time.
I have so little sympathy for miscreants who have no valid reason to pay, other than the one cited above. Pfft. Need to test it, will take half a year.
Come on! Their incompetence is not a valid reason to place an account in arrears.
I work, you pay, that's that.
(No anger here at all!)
So drag them into small claims, and watch them waste multiples of what they would have originally paid.
He has an example where the same thing happened, an entire department got laid off.
But I rely a lot on recruiters finding me on LinkedIn. I hate LinkedIn with its dark patterns, but it's where 90% of my work comes from, so I don't complain too hard.
This also means that you must invoice regularly.
Learned that the hard way.
If funds aren't in my account on the scheduled date (it's printed clearly on invoices), all work (even a tiny commit or Slack message) is suspended for the client. Thankfully this doesn't happen often, and when it does, the client almost always gets with the program thereafter. After two late payments (it's in my contract), I can terminate the engagement as-is, that's to say no wrap-up work of any kind.
This all helps to keep me paid, and just as importantly, improves the quality of my clients.
If I ever start again, I hope to be more diligent.
Always worth watching: https://vimeo.com/22053820 featured on Reddit's /u/freelancing, poetic symbolic title F*ck You, Pay Me.
If you are freelancing, watch it once a week.
Most likely it is even a valid excuse. The problem is that the bill runs up over time and you end up deeper and deeper.
These customers tend to be super nice. I still don't hate the customer that teached me how this works, but I did have to engage a lawyer and that's one thing I never want to go through again.
I was naive and just starting out then. Today I would never put up with something like that.
Be reasonable and communicate. I've had clients tell me in advance they'd be late and had mega corps tell me they are holding all payments until next quarter. . This is really where you have to live with your client being slow pay. When things go sideways, sometimes the right call is to get your work in per the deadline so that when you do end up in court, the whole amount of the bill can be collected, not just the part you turned in.
The big thing is communicate and be reasonable. I've also had clients where I've been able to ask for an advance (and got it) or ask for them to pay earlier. Being flexible set that up (i.e. you were slow last quarter... any chance we can speed up the next milestone payment?)
>This also means that you must invoice regularly.
#1 mistake that most freelancers make is not billing or waiting until "it's worth doing". Have a great system for tracking your hours and deliverables and billing them, as that is all you'll usually need to win any billing dispute.
They pre-approve the bill / contract and pay you (minus a fee) and deal with your client themselves.
Anything you do that does not directly lead to getting a new client, or getting an existing client to sign up for more work, is wasted effort. Obviously you need to fulfill your obligations to clients (falls under the latter).
I always joke when I am freelancing that actually doing the job is 50% of my time, and the other 90% of my time is sales, marketing, and business development.
Now that almost all dev work is going to be remote friendly, The only advantage to freelancing that I can see is the flexibility to work less than 40 hour weeks, or take more time off than vacation time you're allotted.
That freedom is purchased with a lot of stress and uncertainty, and may not actually result in that much freedom if you're semi-actively always looking for leads.
Ultimately I found the type of work companies go to freelancers for is terribly uninteresting most of the time.
Oh, there's a few more reasons: taxes (paid in arrears, after expenses), carry your own insurance/benefits (can work really well if you are young & healthy), business can own property, corporate veil, separate business finance from personal, have more than one client, etc...
> Ultimately I found the type of work companies go to freelancers for is terribly uninteresting most of the time.
Sometimes. Other times it can be better.
Most employers aren't passing through the whole premium. With my current company, we're covering 85% of the premium for our employees, so they see some token amount out of their paychecks, but the actual premium is a lot bigger than $50/month.
It's hard to beat HC insurance from a big employer. When you have to buy your own, it can work out as you usually can get a higher hourly rate than an employee by 25-30%. You also avoid double deductibles when your employer changes the plan changes mid-year. You also avoid COBRA if you quit or are fired.
Being a developer is too cushy a job full-time.
I’ve given up on ever pursuing freelancing because I realized I actually didn’t want to be self-employed, I just wanted to work from home and be in control of my time.
Where are these low stress remote jobs making six figures? Asking for a friend.
Most folks I know in FAANG/equivalent are not that stressed once you give up the race for promotions and accolades.
When you want more income, pick up a second job that is also similar. You should easily clear a quarter million dollars or more a year this way, and all you’re doing is writing code and going to some meetings. Easy.
Good for you. I spend a lot of time on /r/freelance and I've identified this as the main reason most freelancers have trouble and just flat out don't like it. They really just don't like running a small business. It's essentially impossible to thrive as a freelancer unless you accept (actually embrace!) this.
I've been doing contract work exclusively for the past 9 years now and this is exactly why I continue with contract arrangements. If I could find a "permanent" position with flexibility like this I would likely consider transitioning away from contract work.
Yeah, Upwork will "mandate that you keep an app running that randomly takes screenshots of your desktop" but for me, an East European freelancer, was the only way to find clients from US/Canada with which I developed long term relationship.
Perhaps instead of fully vilifying platforms with "Beware of Freelance Platforms, They Are Evil", the author might want to walk a mile in our, less fortunate ones from shitty countries, shoes. My 2 cents.
> Upwork will "mandate that you keep an app running that randomly takes screenshots of your desktop"
Of course, this feels really intrusive and back in the day i negotiated fixed price contracts on Upwork with clients, though finding good projects on the platform (and not just ones that ask you to fix neglected WordPress installs) also took a lot of effort.
Nonetheless, when studying in University and before having a proper long term job (in this case in a local company due to the stability of it and academic requirements to work in a credentialed company), it was a nice way to help me get some income!
If anyone has any questions about anything let me know. The post is meant to be a getting started guide. Beyond answering questions here I'd be happy to follow up with additional posts about specific topics if there's interest.
I never really payed attention to quantifying these types of stats because I think as an individual your sample size is going to be too small to get meaningful data out of it. In my mind it's always a numbers game where the only thing that matters is if I land a gig or not.
I tweak things based on individual calls and kind of use my gut to guide me. It's not the most scientific thing but I don't think personal sales with a small'ish sample size is going to be purely scientific. So much of it is dependent on reading the other person in real-time and adjusting as you go.
When in doubt honesty and less "hard sale" tactics have worked well.
Anywhere from $100 to $200 an hour generally but I don't always stick to that.
There's a lot of things to think about. For example having a relationship with a high value trades person (plumber, doctor, lawyer, etc.) has an immense amount of long term value. That doesn't mean you need to drastically cut your rates, but it's something to think about when evaluating how much to charge.
For smaller more common local businesses where it's mostly trading time for money (as opposed to raw materials), I don't mind cutting rates by a lot because it's mutually beneficial for both of us. For example, if a haircutter wants a basic site, instead of charging them $500 to throw up a WP site in a day I might offer to do the site for something substantially less (let's say $150).
I won't bring it up directly that I'm cutting them a massive deal but if you word it around how you want to help a local business and you generally like the person they'll often offer you a deal on their end like free haircuts for life. To me that's more beneficial than a few hundred bucks up front. Not just from a greedy position of expecting something better later, but I've found having a wider network of friends or contacts proves to be useful time and time again.
Because I have to pick up a phone. Phones are scary.
Suddenly you have someone telling you what you told them and starts wondering: did I really promise that?
(Written doesn't prevent people from trying that trick, as one particulariy brilliant but not very pleasant guy tried to tell me: "yes, <my name> that is what you wrote [in the mail] but not what you meant." However, in these cases I have a written record and I am confindent with myselves and that nasty person can bugger off.)
Not saying one should never talk to people on the phone but when one are stressed out and stretched out thin it is not high on my wishlist.
1. Take pen and paper
2. Write a brief script how to start the call. Just sufficient amount of notes that you have a clear and concise agenda
3. During call take notes
4. If you don't understand something, repeat for the other party what they've said. Not in a way that it can be understood you agree with them as this can become a really problem with business dicussions, but using phrasing as "Can I repeat what you said so I am clear on this. According to you..."
5. At the end of the call, if there are topics that should be handled by you or the other party, review what was agreed topic by topic.
I generally find people appreciate this structured approach in calls. At least it reduces most of the anxiety from my part to minimum.
Kinda like how snakes are protected in Australia and it’s illegal to kill them unless you or your family or such are in immediate danger from a snake, which basically means if you see a snake you can kill it.
"Hey XYZ, it was such a pleasure speaking with you today. I'm going to shoot ya an email in a bit just to follow-up with everything we discussed. Have a great day!"
Or - if that scares you still - just shoot them an email anyway to follow-up and recap without preluding. It gives them the opportunity to change/add/whatever in-text, and they can't say you said something differently because you can point to the email and say - no, we said this (And you didn't correct me).
That way you still have a written record to refer to.
I want to drop my car off for a service in Ballarat when I head down to Melbourne later this week, but that takes ringing them to make a booking. I should have done this in the middle of last week, when I planned to go down. All it takes is ringing their number, saying “can I book my car in for a service, drop off on the 13ᵗʰ or 14ᵗʰ, collection on the 15ᵗʰ”. For some reason that I can’t express, I haven’t made that phone call, and it’s probably too late now. I guess that DPF light will just continue flashing for a while longer.
I could go on and on. It’s quite ridiculous how much trouble I have caused myself (and others, sometimes) just because I don’t like making phone calls. I’ve delayed things that would benefit me for years in a couple of cases. Receiving phone calls isn’t my favourite, either. I’m not crash hot with email or letters either, but phones and text messages are significantly worse.
Phone call quality used to be fairly terrible, and I think that helped make it more of an ordeal too. That excuse is mostly gone now.
If you don’t mind, or like, phones, you might be surprised just how many people are quite averse to making phone calls, some to the point of hating it with the passion of perhaps not a thousand suns, but at least a brown dwarf or two. Five or six of my seven siblings are in much the same boat as me, and my parents don’t like phones either. A couple of my siblings, and multiple other people I’ve talked with, find they more or less forget what they were going to talk about as soon as the call connects, and so it becomes an ordeal where they have to write a detailed list of what they want to talk about before dialing, or else their mind is just blank.
But there is yet hope for me: I’m setting myself up as the local IT guy in my rural area, in significant part to force myself to deal with people more. Computers are easy, they do what I tell them to do, and I’m even pretty good at telling them the right thing to do; but people are what actually matter in life. I’m waiting for the return of Jesus and the establishment of God’s kingdom on earth, and I don’t think we’ll need software then. Well, a bloke rang me yesterday, I answered, and today I did my first job, and even got paid straight away.
You also need to handle administration of the business or outsource those tasks.
Regardless of who is putting in this effort, your business needs to pay for it (your time or the time someone else puts into it.)
Add to that, self-employment taxes, insurance, sick leave, vacation leave, equipment, office, utilities, etc. Anything you aren't charging for, you're subsidizing.
That's ABC stuff.
I don't like the word freelancing, because people take the label with a bunch of assumptions, which may not be correct. The language "the most important thing" is also troublesome because it may put you in the wrong frame.
The reality is that running a business is a common complex thing. It's like relationships, many people are in them, but being such a common part of life doesn't make them easier to figure out. Society gives you basic scaffolding, which you need to use or not use as basic building blocks. Come to the problem with an empty cup and start building from scratch. And then it still isn't easy, as many people get caught up in details which isn't necessarily giving back the same return on the end result. My heuristic is to start with the envisioned end-result, work backwards and then build a plan going forwards again. The entire time, you have an eye on that end-result and asking if what you are doing is serving that end-point. And then, as Tyson said, "everyone has a plan until they get punched in the mouth." But a plan is better than no plan.
There's no "the most important thing." It's more complex than that. You have to approach a complex problem with agility to shift frames. Be creative. Be curious. Ask questions. Do research. Answer the questions. Every article about "this is how you do <insert complex thing> is missing massive amounts of detail.
Also note, there is a goldmine of articles on making money on building software in HN. Do a search. If you stop at this thread, you're seriously missing out.
And further reading on detail in life...
http://johnsalvatier.org/blog/2017/reality-has-a-surprising-...
ETA: This is more about the mindset than the nuts and bolts. There are tons of golden posts here on the nuts and bolts. Do a search and see what pops up with the most votes and comments.
I started at Upwork and was constantly writing proposals and struggling with the search to find relevant jobs.
But on Toptal, even after an abrupt end of the contract I get something else in less than a week and it's zero effort from me and all effort from the Toptal team.
Even if I get bored and want a change, announcing the end of contract turns on the avalanche of offers from the Toptal team.
It's just insanely smooth and I had no idea I'd find something like that, initially.
And for me the scheduling was super difficult: the whole process took weeks, with the only times available at odd hours West Coast US time, and my recruiter flaking and rescheduling once.
Beyond some basic level of coding, it's more a test of patience and time.
I was fortunate enough to pass everything without additional attempts and had no job at that time. Some of my friends got in after 1 year (after you fail at some step, 2nd attempt is delayed), some never managed to complete the whole process.
Having a serious side project in your CV helps. For me its https://www.monsterwriter.app/
I've heard of people not having contracts after succeeding everything.
To me there is no way I will work for one useless algorithm exam, one interview with a Toptal engineer and then one week long project.
Sounds like I might as well be doing regular interviews....
1. Unlike smaller sites and job boards, they have lots of work available. Every couple of days something is posted that aligns perfectly with my skills.
2. Unlike odesk/fiverr/elance they pay market rates. Not FAANG or CTO or IPO rates, but I charge more on Toptal than I ever earned working for Bay Area startups. Plus you get paid net 20; they're on the hook for getting paid from the client.
Everything else about Toptal is frustrating: the byzantine interview process that's irrelevant to the actual work you perform, constant pressure to decrease your rates, the big cut they take, legal restrictions on forming relationships with clients outside Toptal, staff who won't leave you alone during the application process but vanish the second the contract is signed.
I wouldn't want to rely solely on them for freelancing. But they're great when I have a gap in my schedule: I can fill out minimal online applications on Monday, start work by the end of the week, money in the bank by the end of the month.
Even better is to have direct clients but that's then a lot more time consuming.
If you are a product person, i recommend slowing down, think about stuff and dedicate yourself to the parts of your work and the relationships you find meaningful. It pays less, at least in the short term, but it is quite nice to feel true to yourself.
Having got agreement at the executive level, it often gets tried on anyway, but the very first day it's late I start letting people know, and consuming their time, and reiterating reasons why its setup to pay. I follow the chain of people to get actual contact to the accounts paying person and build a personal relationship with them, as an individual they have a commitment to paying rather than just another bill on the stack. An individual who will ring them for a person plea, plus consume their time, if they don't pay as agreed.
This reminds them it's an issue and that my work continuing relies on them paying, as they agreed. I do this politely, but clearly, and conscientiously. I find this significantly increases my chances of getting paid properly.
The critical time for this is when the first, and perhaps second bills are paid. Once they are trained that yours is a bill to to pay without games, it tends to become smooth sailing.
Also, in the case where it is delayed - stop working. This is critical. If you work when they are not paying as agreed you're undermining your main leverage and will possibly have big problems.
Be polite, always, yet clear and firm about the agreements made, and be ready to walk away and find new work if necessary. Usually late payments will be resolved in days to a week and if it's taking longer then put your effort to finding new work.
- Passive marketing just won't work early on. That means spending time on your website, buying Google Ads etc will likely only be dead-ends until you've established yourself. (The exception might be writing niche content about some industry if you happen to know one well).
- I've used all of the freelancing platforms- Toptal, Upwork etc. You can make good money but you probably won't grow your business. Your objective if you're trying to grow a business is to scale up, and these platforms mandate that you're the one who has to do the work. I know there are Upwork firms, but I think they're worthless. Oh and Thumbtack is a scam.
- The Meetup angle didn't necessarily work for me, but I've learned that going to non-developer meetups are more fruitful, if you're willing to learn about an industry.
- The low hanging fruit in 2022 for finding clients is probably investing 15 minutes a day into building a Linkedin network (trivial and you don't need to pick up a phone :)). That means growing your connections, and learning to search for people looking for a developer for X, Y, Z, filtering out full-time hires etc.
- Actually the lowest hanging fruit is referral business, so when you get your first clients do a great job and send them emails every few months reminding them to put you in touch with anyone they know.
- When a client asks you to do something extra always say no. Always. If they're a great client, do something extra that they didn't ask for. This sounds insane, but the second you do submit to doing an extra request, a client will subconsciously discount your work and time and take it for granted. It almost never wins kudos, almost always wins more requests. I've seen this happen 35+ times. When you do something they didn't ask for, they tend to be more appreciative and touched.
- The following are essential business processes you should set up if you want to grow: task management (Github issues for me, make sure to adopt a task format with predictable attributes whatever you use), communication (Slack, invite my clients to a dedicated channel), CRM (I use Hubspot which is free for just CRM), and a project cycle.
- By project cycle I mean a contract where you're cash-flow positive, i.e. charge hourly deposits up front as much as possible, as well as defined expectations. What happens when the project finishes? How do you prevent scope creep?
- PayPal invoices are nice but they were my biggest expense, 3% of my revenue! Do ACH if possible, or Wire Transfer if the fixed fee is less than the PayPal cost. I even set up a consulting business for invoicing just because this is such a big issue [1]. But don't optimize this until it's worthwhile.
Feel free to get in touch if anyone needs any help getting established. My email is my HN username +3@gmail.com