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”.