Barnes was born on May 28, 1831, in southwest Nansemond County, the youngest of three or four sons and as many as five children of James Barnes, a farmer, and Elizabeth Barnes. He attended the University of Virginia from 1849 to 1852 and graduated from the Medical College of Virginia in 1853. Barnes then returned to Nansemond County and practiced medicine there until he retired about 1888. He frequently attended local fox hunts and was a popular figure known for his long, full beard and for his height, which earned him the nickname “Tall Sycamore of Nansemond.” He did not serve in the military during the Civil War and never married.