Names like Smith, Baker, Carpenter are common, but a slightly less common surname is Coward. Considering the obvious connotations of the word, is there a historical explanation as to why we have a surname like this? Why wouldn't people just change their surname?!
You are correct in saying that many English surnames derive from professions, and in this case it is also so.
Coward, the surname, means 'cow-herd', similar to a shepherd being a 'sheep-herd'. In this context, Coward, the surname, derives from Old English cuhyrde- cu meaning cow, and hyrde or hierde meaning herd.
Coward, the adjective, means 'the one with the tail', insofar as 'tail' is used in such idioms as 'running with his tail between his legs' or 'turning tail', that is to say, to flee or fearfully run away. Coward, the adjective, derives from Anglo-French couart or couard, which derives from Old French coart, itself deriving from Latin coe meaning 'tail' and the -ard suffix meaning one who possesses something or has the trait of something, usually in a negative context.
The spelling of couart and it's evolution to the spelling coward no doubt was influenced by the spelling of *cow-*derived terms.