Finances are quite tight overall - for the upper middle class that might mean living in an expensive area. For the middle class that might mean holding onto house and childcare payments. Those are choices sometimes, and others not.
What is also very common is to want a different job but not have the skillset people need, and no way to sacrifice the time it’d take to gain that skillset. Also age, if you wanted to be a programmer at 40 you could go to school for 4 years only to find there’s almost nobody willing to hire you at that age. This leads to people basically being stuck, unable to change their situation and certainly not able to have the runway to try to build out a business without an old fashioned bank loan.
Software engineers have a completely different set of problems than people who don’t work in tech.