Half the problem is that two parties have screwed up the nation, and no one lets third parties get a say. Remember they wouldn't even let Gary Johnson (libertarian candidate) debate back in 2016, even after he was polling widely at double digits? https://www.cato.org/publications/commentary/let-gary-johnso...
Yea, that's a good explanation on the "what" cause - but I think it's more an issue of political corruption leading the two parties to mutually that everything is best if there are just two parties.
FPTP single candidate voting districts are just broken.