Despite the constant complaints by people with delusions of their own skill level, matchmaking tends to do a pretty good job matching you with people close to your own ability. The problem is people tend to look at their own mistakes from an explanatory perspective, where the failing can be attributed to some external causes like bad teammates, strong opponents, lag, and so on. Conversely the mistakes of others are looked at from a dispositional perspective--you gave up first blood because you are an idiot or horrible at the game. Granted there are moments where a person might accept their own failings or understand the failings of others, but unless you are aware of your own natural biases, it will seem like the great majority of times you are losing simply because of the immutable characteristics of the people you are playing with.
The fact that dota is an extremely complex game simply compounds these biases, because it lets you latch onto "hard proof" that the other person is just a shit player. Even if, in the aggregate, your ability to win games is even with that of another player's, there will always be skill differences in the individual attributes that lead to wins. Maybe you watch a lot of pro games and know all of the best item builds and meta game strategies. If you encounter a player who doesn't know that information, and makes sub-standard builds or makes choices you wouldn't in terms of overall strategy, you might immediately brand him a retarded noob who definitely shouldn't be matched with you and blame volvo's horrible match making system for your inevitable loss. What you don't consider is the fact that he may be getting matched with you because he has very strong mechanics. Better than you, in fact. All his poor item and strategy choices are overcome by the fact that he can brute force out of a disadvantage by farming above par for yours and his MMR range.
On top of it all, you have the fact that you are but one of five players on your team. Everyone has shit games. If you claim you don't, you're lying to yourself and everyone else. But guess what, if everyone has a roughly similar shit-games-to-good-games ratio, that means that the chances of any particular game going to shit because of you is only 20%. 4/5ths of the time, it will be someone else's fault! It may be attractive to latch onto that as proof positive of bad matchmaking, but its really just proof of your own lack of perspective.
TL/DR - If you're matched with shit players, you are shit yourself.