He attended Pettis County Northwest High school in Hughesville, Missouri where he earned numerous All-State, All-Conference and All-District honors.
He played college football at Missouri. He was selected to the 2007 2nd-Team Academic All-Big 12. He was named 2009 Team Underclassmen Leadership Award. He was a key part of the Missouri Tigers offense that was ranked eighth nationally in total offense (averaging 484.14 yards per game), sixth in the NCAA in scoring offense (42.21 ppg), and fourth in the nation in passing offense (330.36 ypg). The Missouri Tigers offensive line was ranked 16th nationally in fewest quarterback sacks allowed (1.21 per game).
Barnes was projected to be a seventh round selection in the 2011 NFL Draft or high priority undrafted free agent by many analysts. He was ranked the seventh best center out of the 49 centers available by NFLDraftScout.com. He wasn't invited to the NFL Scouting Combine but did participate at Missouri's Pro Day.
On July 26, 2011, He signed with the Baltimore Ravens as an undrafted free agent. On September 3, 2011, He was released.
On September 13, 2011, Barnes signed with the St. Louis Rams to join the practice squad. On January 2, 2012, he re-signed with the team. On August 31, 2012, he was released. On September 2, 2012, He was signed to the practice squad. On September 14, 2012, He was promoted to the active roster from the practice squad. During his first season with the Rams, he was the third center on their depth chart behind Scott Wells and Rob Turner. On September 16, 2012, he made his professional debut in a 31-28 victory over the Washington Redskins. He played in 12 games during his first season with the Rams.
On March 9, 2013, the Rams re-signed him to a one-year, $480,000 contract. Barnes started the 2013 season as the St. Louis Rams backup center to Scott Wells and ahead of rookie Barrett Jones. On December 8, 2013, he made his first career start, in place of an injured Wells, during a 30-10 win over the Arizona Cardinals. He started the last four games.
The St. Louis Rams re-signed Barnes on March 5, 2014, to a one-year, $570,000 contract. He returned in 2014 as the backup center to Wells. He appeared in 14 games during the season.
On March 30, 2015, the St. Louis Rams signed Barnes to a one-year, $710,017 contract with $50,017 guaranteed. Throughout OTA's and training camp, he competed with Barrett Jones and Demetrius Rhaney for the starting center position. After winning the job, he started the season opener and all 16 regular season games.
On March 9, 2016, Barnes re-signed with the Rams on a two-year, $5.60 million contract with $3.25 million guaranteed. He was named the starting center to start the season.
On March 9, 2017, Barnes was released by the Rams.
On May 2, 2017, Barnes was signed by the San Francisco 49ers. He was released on September 1, 2017.