Hey readers! For those of you who don't know me, I was previously the co-founder and CTO of a startup called Autocode. We built and scaled a fantastic product that reached over 600,000 developers, but after six years, I felt it was time for a change of scenery and a new adventure. I've decided to do some writing to document my post-Autocode journey - if you're interested in reading more, follow me here!
So why did I decide to become a freelance developer? After making the decision to leave Autocode and looking back at my time there, I realized I was quite interested in seeing how other organizations function - how they're structured and managed, the problems they're solving (both technical and non-technical!), and how they overcome adversity. I also wanted to explore different product areas and meet interesting, passionate people. Freelancing ticked those boxes, and had the added benefit of flexibility and control over my schedule after years of constant late-night product launches and long on-call stretches.
It sounded great in theory, but I quickly found that getting started was more complex than just finding a client, writing some code, and cashing a check.
My first thought was to simply Google
how to start consulting. Here's what I saw:
The results included pages of clickbait-y, generic content marketing articles published by companies looking for SEO, as well as an intimidating dropdown that said I should expect getting started to cost $10k-50k (it's much, much less!). The actual details of getting started as a freelancer - like how to incorporate, tax implications, how to set up a contract - proved scarce. And that's really too bad, since freelancing opens up opportunities for both full-time work and side-hustles.
Here's how I cut through all the noise, incorporated my business, and onboarded my first paying client!
Sidebar: I am not a lawyer or an accountant - don't take my experience as gospel and do your own research!
Deciding on a Corporate Structure
Confused by all the information online, I asked my cousin, who had done some freelancing in the past, for some advice on corporate structure. She replied, "Oh, you can just start out by using your Social Security Number!"
Wait, really? Sure, otherwise every part-time Uber and Lyft driver would need to incorporate! This seemed like the easiest approach, but I decided on an LLC for a few reasons (in no specific order of importance):
The corporation is treated as a separate entity from me. In an unlikely scenario where a client sues, my liability is limited in most cases (as the name Limited Liability Corporation implies!). I probably won't lose my house.
It gives the impression of professionalism to clients.
I thought it'd be cool.
There are more complicated structures as well, but since the business would just be me an LLC seemed like a good balance between ease of management and legal protection in the worst case. Single-member LLCs can also report income on the owner's tax return, so I still only need to file one tax return.
Incorporating an LLC
Note that your experience may vary depending on the state - I filed in California.
After deciding on an LLC, my next step was legally incorporating. As a California resident, I was unsure of the tax implications if I incorporated in a different state, so I chose to incorporate in California. The downside to this is that California has a very expensive Annual Tax on LLCs - $800 even if you make no money, and an additional tax if you make more than $250,000 a year!
The good news is that the $800 component of the first year tax is being waived for businesses that incorporate before January 1st, 2024.
Side note: I probably made a mistake here - I forgot about Stripe Atlas! They charge $500 to incorporate a business in Delaware (which has the most business-friendly laws for some reason), and $100 a year for management after. It's a bargain compared to fees in California, especially since they give Stripe credits that you can use to avoid payment processing fees when invoicing clients! There's a good chance I'll spin down my current LLC before the $800 tax kicks in and redo things in Delaware.
This process is run by the California Secretary of State's office. They have a surprisingly decent website, and all the filing can be done online.
There's a section where it'll asked if I was a professional service provider, but this only applies to professions that require a license, and writing software does not (yay?). The process required information like my Social Security Number, a business name, and a business address (like most freelancers, I don't have an office, so I used my current home address) and pay a small fee. A few days later my application was accepted, I had my Articles of Incorporation, and Remora Software, LLC was born!
After incorporation, I had to file a "Statement of Information" within 90 days of incorporation. You can do this from the Secretary of State's website, and it's required every two years afterward.
Opening a Business Checking Account
In software, there's a very important design concept called separation of concerns. it turns out, the same applies to LLCs. It becomes much easier to maintain a company's separate personhood and liability protection if all business income and expenses are separated from personal ones, so this is a must.
Plus, you'll feel like a boss when the bank sends a card with your company name on it.
Opening a business bank account requires an EIN (employer identification number). The IRS assigns EINs, and again, I was pleasantly surprised with how easy the process was. Everything is online, and I had an EIN a few minutes after applying using information from my LLC's Articles of Incorporation.
You can then transfer money from your business account to your personal account via owner's draw as often as you'd like - your checking account will act as a record of how much revenue your business is making for tax purposes.
I opened an account with Chase as I had used them in the past and they were running a $700 promotion for new accounts that meet certain requirements, but there are plenty of good options out there.
Setting Up a Contract
I was fortunate enough to be referred to a small startup interested in hiring someone with my skills. In retrospect, I could have negotiated a much higher rate, but I was eager to get my first client and get a win on the board.
The next step was putting together a contract and figuring out how to get paid. I looked around for solutions and eventually found Honeybook, a client management platform. The week-long free trial and $1/month introductory rate drew me in, and I found it well-suited for my needs.
I used Honeybook's provided standard contract template, which I trusted because they've raised almost half a billion dollars. It conveniently included an invoicing page, payment processing, and automatic reminders. They charge a 1.5% fee for ACH transfers, so I may explore using Stripe, a wire transfer, or Zelle in the future, but all in all, it was a convenient and client-friendly way to get paid, though there was some difficulty verifying my payout account because I had only incorporated a few days before.
The initial contract was for two weeks, and I structured payment so that half of the value was due up front and half at the end of the contract. The client signed and sent the money, I got to work, and it was a great feeling to have my first freelance contract in the books!
If you've made it this far, thanks for reading! I'm not sure I'll remain a full-time freelancer forever, but incorporating was an extremely rewarding experience and opens up the potential to do part-time consulting on the side. I'd encourage more developers to give it a shot! And please let me know in the comments if anything in the article looks amiss.
If you're interested in hiring me, you can read more about me on my personal website - I specialize in cloud architecture/systems design, devops, and backend development, but started my career as a frontend engineer on Google Photos and can contribute to any part of a stack.
To stay up to date with my journey, follow me here or on Twitter @Hacubu. Happy hacking!