But I think even now, after all these years, Bitcoin mainnet wallets are still far from perfect and many people, especially newcomers still choose to keep their coins on exchange, which sometimes leads to loss.
There are a lot of (almost) perfect wallets available.
There are advanced wallets with intuitive UI (e.g. electrum) and very straight-forward wallets (e.g. andoid: mycelium).
But even
secure wallets can be easy to use. Take ledgers application for example. It is very easy to use. Thats really not a proper reason to leave coins on an exchange.
If you are buying because you believe in bitcoin or want to use bitcoin, you should also be able to understand a simple wallet application.
If you are buying BTC because of getting rich over night.. well.. Those people WILL lose their coins sometime in the future.
So, all clients need to keep improving to make Bitcoin user experience better, developers need to put themselves in place of users to understand their needs. And if you as a user have some problems with software, you should provide your feedback to developers to help them see what can be improved.
A developer is not responsible for the stupidity of a user.
There are enough wallets which are easily understandable. If one can not figure out how to use a simple wallet, he should maybe not own cryptos at all.