First, literacy isn't completely related to the writing system. Look at Spanish speaking countries, where the alphabet is more phonetic than the English alphabet.
Second, Chinese characters that are more complex, i.e. consists of more than one radical, are usually composed with a semantic component, giving indication to the character's meaning, and a phonetic component, which gives an indication to the sound of the character. Although this isn't a rule, it helps a lot, and it's not like English doesn't have crazy non-phonetic spellings as well (how tf is "through" supposed to be pronounced for a English learner?)
Last, the Chinese language consists of MANY homophones. This isn't necessarily a bad thing, and not one out of design, but something that is the result of being one of the oldest language families in the world. It allows for the concise expression of many things using only single syllables. You might say, but what about the crazy amount of ambiguity if the language has a lot of homophones? Well, ambiguity is a huge problem in all languages and our brains seem to manage. Now, even though homophones aren't a big problem in spoken language, because of intonation and prosody giving a clue to how to analyze sentences, written language is a different story, and it would be very hard to make an easier system to handle it. For all you engineers, the fact that Chinese has characters is essentially a performance trade off. More information density for more ambiguity.