Donc and alors can be both used as a translation for so in most of the case. You
must can (see my comment) use donc instead of alors when you can replace so by therefore (http://www.linguee.fr/anglais-francais/traduction/therefore.html).
You read my message so you must understand why donc is more used
Becomes in french
Tu as lu mon message donc tu dois comprendre pourquoi donc est plus
I used donc because the so of the original sentence can become a therefore.
The best way to translate so to French is with using alors.
In most cases it’s best to translate so (the one that starts a proposition1) with donc used as an adverb2, not as a conjunction. It suggests a light natural follow-up.
Il avait froid, je lui ai donc donné ma veste.
If the meaning of so is close to “hence” or “from this observation” (like in your example), then you may use alors.
Il avait froid, alors je lui ai donné ma veste.
But this has a strong flavor of oral communication3. This alors may conveniently be added while the sentence is being spoken, but alors should normally only be used as a “then” (temporal or conditional). So4… you may want to reformulate. In the following sentence, “comme” should be understood somewhat like “given that”5, and this is the preferred form in writing.
Comme il avait froid, je lui ai donné ma veste.
Last, if so is meant as a logical conclusion you may want to use donc, in this case, as a (coordinating) conjunction.
Il avait froid, donc je lui ai donné ma veste.
1. But not the one in “so be it” or “so to say”, which is an “ainsi”!
2. Place it where you would place pas in a negative sentence.
3. Just like using so in English, you may say, but English’s oral phrasings certainly pervade much more into writing than French’s.
4. I’ll let you guess 😉
5. But given that best translates as “étant donné que”.