You mention you get to learn new skills and technologies; but if they only want to hire people who can immediately do what they need, how does that happen?
Does it involve a bit of stretching your experience?
Clients often just ask if you can do X in Y time and Y is often more than large enough to learn X because often the estimates are set by full timers who really want to make sure they are not burdened by it.
I have said yes to being able to deliver projects in languages I'd never even seen before, because the timeline was long enough that I was (rightfully) confident I could figure it out within the estimated time.
Often they just want to outsource uncertainty. Of course you then do need to take on the risk and make sure you deliver, or you won't get hired back and if it's a referral it can get ugly, but in the years I did contracting that was never an issue.
I'm a UK contractor and I'd say I've learnt lots of new skills and tech in my periphery while on Ruby on Rails and database contracts.
In the last few years I've been exposed to enough Kubernetes, Terraform, Docker, Azure, Google Cloud, Dataform and BigQuery to feel comfortable putting them on CV.
Microsoft Dynamics and SharePoint too but I don't think I could face any more.
I have said yes to being able to deliver projects in languages I'd never even seen before, because the timeline was long enough that I was (rightfully) confident I could figure it out within the estimated time.
Often they just want to outsource uncertainty. Of course you then do need to take on the risk and make sure you deliver, or you won't get hired back and if it's a referral it can get ugly, but in the years I did contracting that was never an issue.
Knowing your limits is important, of course.