Why English pronunciation differs so much from written language, compared to German?

Solution 1:

There's two things that account for most of the trouble:

The Great Vowel Shift.

The Great Vowel Shift caused the pronunciation of English long vowels to change, and many of them to become diphthongs. This is discussed in great detail in the Wikipedia article, including some nice charts. As a result, many English written vowels are not pronounced as you might expect--although the pronunciation of vowels affected by the shift is actually very regular, so long as you don't judge them by the standards of other European orthographies.

The Norman invasion

The Normans occupied England for several centuries and introduced thousands of French words into English vocabulary. The problem is that these words tended to be spelled according to French spelling conventions, which were very different from Germanic spelling conventions. This created two different, inconsistent spelling systems within the same language.

To these two big factors, we add two more which afflict the language to this day:

Extreme conservativism

English standards tend to maintain old spellings that represent the original pronunciation of a word, even if the pronunciation has changed. This is why we have a gh in cough, through, bought, etc. Even worse, sometimes English words are spelled in a way that's supposed to reflect etymology, even if the etymology is wrong. This is why we have a b in debt.

Foreign spellings

Words borrowed from other languages into English tend to keep their spelling from the source language, even if the pronunciation goes against English rules. This is why we have rendezvous pronounced, roughly, "ronday-voo", which is from French and follows the French spelling.

Solution 2:

The problem is actually closer to the opposite of your pet theory.

Until the advent of the printing press, English spelling was quite free, with many different spellings being used for words; sometimes multiple spellings were used for the same word in a single sentence!

However, at the same time that the spread of the printing press and published dictionaries was fixing the spellings of English words, English was undergoing a dramatic change in the way it was pronounced: the Great Vowel Shift. This, combined with the fact that English spelling has never been beholden to the kind of authoritative control that other European languages have been subject to, such as Spanish, French, and German, resulted in English spellings being somewhat fixed by the spellings used in the 16th century, regardless of the pronunciation changes that ensued. There are a number of other things that resulted in idiosyncrasies of English spelling, such as the influence of Norman spelling restrictions due the confusability of letters written with minims. The Wikipedia article on English spelling has a more complete discussion under the “History” heading.

Solution 3:

The other answers explain why English is spelled so badly, but why is German spelled so well?

There was a German spelling reform in 1901, so the standard spelling is only slightly over a century old, and corresponds to the language fairly well. In fact, there was also a later German spelling reform in 1996; although many of the changes it made have been widely adapted, some of them are still controversial.

And to summarize why English is spelled so badly: The spelling was relatively free before the 17th century; for example, Shakespeare spelled the same word murdrous and murtherous to indicate either a 2-syllable or a 3-syllable pronunciation (so his lines would scan). What is worse, the way the spelling became fixed was a very chaotic one involving printers and writers of dictionaries, who never sat down together and came up with a rational way to spell English words, but used as inputs both the lexicographic roots of words and the common way they were spelled in Middle English, neither of which reflect pronunciation that well. So our current spelling doesn't even correspond to 17th-century pronunciation (the 'b' in debt hasn't been pronounced since Latin, and the 's' in island was never pronounced).

So the lesson from this is that to keep the spelling close to the actual pronunciation requires regular spelling reforms, which are instituted in many languages, but are probably never going to happen in English.