From the Johnson blog at The Economist.
it once bugged me that in British and American officer ranks, a lieutenant general outranked a major general, while by contrast a major outranks a lieutenant. (Plain “general” outranks both.) Only later did I learn: major general is shortened from sergeant-major-general. So just as ranks proceed upwards as sergeant-major, lieutenant, captain, so do (sergeant-)major-general, lieutenant-general and (captain-)general.
Never thought about it, but it is interesting.