This is a series of posts on lessons I've learned while freelancing for the past four years. You can find Part 1 here.
Focusing on "profits only"
I've alluded to this in my previous post, but, now that you're a business, you may start to make decisions that optimise being a business, not a person. It becomes easier to start making decisions that might lead to say personal burnout for the sake of professional business health. Taking holidays was a big one for me, while contracting I never once took as many holidays as my partners mandatory holidays in her full time roles. Knowing your invoices were about to take a big hit next month by taking say, two weeks off will always be hanging over your head. Even if you've calculated that you would get paid a whole lot more over an annual period if you took a bunch of holidays while contacting when decision time comes for that month, it can be tough to make the call to take that time off.
Another "effective business decision" might be to jump on clearly bad idea projects for a higher day rate. You become less important in relation to "the business". It takes effective higher level, long term thinking to ensure that profits are not the only metric to measure success against.
Dealing with money really sucks
While I've never been completely burned over invoicing issues(though many others have), late payments of invoices were shockingly regular. Perhaps there's a better way to punish/promote better payment schedules, but I found trying to propose such things with clients difficult and awkward, often you need to be flexible to make it worth the effort to onboard you in the first place and offering punishing late payment terms seemed to get in the way, I regret that decision looking back. Had I known how often late payments would occur, I would have used a late payment penalty fee as a metric to determine whether a future client would cause issues. As I said before, I always had more work than time, and should have refused more contracts. There were several occasions where I wanted to keep a client happy several months after officially finishing work with them as they still had outstanding invoices to be paid, this is not a good way to work. One advantage to multiple clients is though is that you can hedge your bets and perhaps live from the income of one client while waiting for late payments from another.
The other burden with money is obviously having to submit your own tax returns, even with an accountant I found the whole process particularly stressful each year. Being a developer, you often want to know the ins and outs of things before proceeding, however tax law is often non-obvious and confusing, leading you down paths where you don't know how to proceed. Even with my accountant, we ran into complications where the answers should have been straightforward but aren't. Being a remote developer often working for several companies in different countries it was perhaps not a well trodden path and both HMRC and the accountants I worked with could do a better job understanding/sharing the information required. A lot of contractors in the UK create their own company as a way of reducing their tax burden, this can be complicated and cause issues with IR35 legislation if you are working for the same client for a long period of time. Despite being almost certain I was legally fine doing this, I decided instead to remain self employed as, frankly, I wanted to pay taxes(crazy I know) as it felt like the most honest approach. Part of me wishes I've gone down the company route, simply as it probably would have been more straightforward and liabilities would be tied up in the company not myself as an individual, but perhaps it was for the best as leaving/shutting down such a setup can be quite complicated.
Not stagnating on tech
One thing to bear in mind in terms of the technologies you work with, there often is excellent money in working with niche technologies, I can personally attest to that. The issue might come up however that the demand for such skills might dry up or (what happened with myself), you grow tired of working with a particular niche technology and simply want to move on. Ensure you maintain a broader set of skills so you can hop out of that niche into a variety of roles if the market/your interests change.
The cost of seeking work
This was never really an issue for me, finding work through contacts from previous roles meant that there has been always more work than time for me and I often had to turn potential offers down, but if you're not in such a position having to regularly seek work and the stress involved in role changing can become an issue. Be wary of this and perhaps have a system in place for when it's time to hunt for that new contract(or ideally several weeks or months before your current contract is due to end), in the end this will alleviate a lot of the stress and burden of finding new contracts.
Up next is the final post in this series, Part 3.