I've been doing full-stack Dev (mostly Django though I foolishly had a brief moment where I kinda thought Flask was okay then fell for the same dumb thing briefly with FastAPI) for 20+ years and don't feel marketable.
I went from jQuery to a brief dalliance with Angular to HTMX+_HyperScript. Everyone wants full stack Devs to use react and struggle eternally with insane dependency trees and challenging client side state management.
I like to build things that can be maintained in perpetuity by small teams.
I'm full stack for 19 years and I love React, and I've been laid off for 1.5 years now. This is a terrible job market right now.
That doesn't mean you don't have good skills, it just means that too many people have them. It happens from time to time in every industrial, for all skills.
Obviously, I don't have any good advice about how to deal with it.
I've been an AppSec engineer for about 12 years, but it wasn't until about 5 years ago I started working somewhere that actually paid a market rate. I wasn't living paycheck to paycheck for the first 7 years, but certainly wasn't putting much away.
Now, I've got nearly a full year of after-tax paychecks in savings. I could easily go ~18 months without pay without a change in lifestyle. I could stretch it out to 3 years with some belt tightening.
In about 6 more years, the house will be paid off and any savings I have could last even longer.
That's not rare for a SWE in NA. Difficult is another matter. Plenty of SWE's in NA are now staring down the barrel of not being able to afford their own home for much longer (or to afford their first home).
If you've been working for three years as a junior and just put down a big down payment on a house you can barely afford, yes, you're going to have problems.
If in 19 years as a SWE, you haven't saved up a lot of money, you are one or more of:
1. Incredibly unfortunate in the jobs you've been taking.
2. Have made some incredibly bad investments.
3. Are spending like a sailor, burning every dollar as it comes in.
4. Have gone through one or more absolute life catastrophes.
... Then yes, you are also likely to have financial problems if you're out of work for two years.
I don't mean to say that these are incredibly uncommon. They aren't, especially in people chasing the startup carrot and ending up with nothing but the brown, sticky bit.
But I think it's fair to say that a large number of people in the profession should have managed to avoid all four. (With #3 being the main 'avoidable' culprit, and with #4 being largely unavoidable.)
Consider that somehow, people making less than a quarter of our prevailing wages manage to live... Fairly comfortably.
The parent comment mentioned North America. This is huge. Tech salaries in Europe are half what they are in NA. In India, they're like 1/4 to 1/3.
Saving is absolutely important, especially in such a layoff-ridden industry. You should really strive to get at least 6 months of living expenses into savings.
I don't know; I am not sure I'm marketable in THIS particular market.
As for FastAPI bring a mistake - that's an overgeneralisation to be sure. It has it's uses.
My first issue is that it falls into the same kind of small footprint as Flask. Every Flask project I work on slowly reinvents Django via a combination of plugins of varied quality and custom code/plugins. Get some Auth plugins, build step for manifest static files, add in Jinja2, grab an ORM like SQLAlchemy (or hopefully PeeWee), a migration system, test runners with fixtures/dB integration and rollback and on and on and on.
FastAPI is operating more at that level but also adds the often unnecessary complexity of async. In Python this is a cooperative setup meaning you have to yield to the event loop yourself (otherwise despite being "async" it blocks). Plus with a webapp all async often does is let you hammer your services (i.e. dispatch more queries to your poor DB) harder. The actual performance improvements don't manifest so much at scale as people often think. Plus you end up with a whole second set of ways to call functions and... makes me pine for gevent.
There are absolutely cases for this kind of async, even in webapps, but it's often not actually that helpful in places that it's used (and doesn't actually need to be everywhere). Good development imo means picking the right tool for the job rather than jumping on hype trains.
Thank you for this answer, it saved me hours of experimenting.
And bonus points for bashing MongoDB, of course. Every single project that I worked on where MongoDB was used, also had MongoDB as the single largest constraint and operations time sink.
I went from jQuery to a brief dalliance with Angular to HTMX+_HyperScript. Everyone wants full stack Devs to use react and struggle eternally with insane dependency trees and challenging client side state management.
I like to build things that can be maintained in perpetuity by small teams.
So I'm not very marketable.