He was educated at Fettes College before joining the Royal Marines Light Infantry as a second lieutenant on 1 January 1900.
As a Royal Marines officer he held various posts in the Royal Naval Air Service during World War I. From 1918 onwards, he was a senior officer in the Royal Air Force. He notably commanded the Royal Air Force"s Z Force in British Somaliland in 1920 as part of the Somaliland campaign. In 1912, Gordon was among the first group of aviators to be taught at Eastchurch.
He later became a flying officer in the Royal Flying Corps" Naval Wing when it was formed.
At the start of the first world war, Gordon commanded the naval air station at Dundee. In 1915, he moved to East Africa for operations to destroy the German cruiser Königsberg.
Following promotion to wing commander, Gordon served in Mesopotamia and Italy and then moved to the Eastern Mediterranean, where he commanded Number. 2 Wing of the Royal Naval Air Service in the Aegean.
He transferred to the Royal Air Force when it was formed in 1918 and after service in south Russia he was awarded a permanent commission in the Royal Air Force. Following promotion to group captain, Gordon was to command the Royal Air Force in Egypt and British Somaliland.
After his time in the latter protectorate, he was Officer Commanding Number. 3 Group before taking up command of Royal Air Force Transport-Jordania. After some time as a supernumerary in 1923, Gordon attended the Senior Officers" Course at the Royal Naval College, Greenwich.
The following year, he was appointed Officer Commanding Number.
1 Group and 1925 saw Gordon promoted to air commodore and made Air Officer Commanding Number. 3 Group in what was a return to his old command.
Gordon retired at his own request only seven months later. During World World War II, Gordon returned to duty as the Scottish Deputy Area Commandant of the Observer Corps.
He died on 25 September 1954.