Barnes started out in the academies of Bristol City, Swindon Town and Southampton before joining Western League Premier Division side Bitton in February 2010.
In July 2012, Barnes made the step up to Southern League Premier Division side Chippenham Town and made 15 appearances, scoring two goals and getting three assists while being an unused substitute five times.
In November 2012, the forward joined Southern League Division One South & West side Paulton Rovers on loan for a month, where he made three appearances, scored three goals and got one assist.
After returning to Chippenham after the loan deal extended, he made four appearances and was an unused substitute four times, getting one assist for the Bluebirds.
In February 2013, Barnes returned to Southern League Division One South & West side Paulton Rovers permanently, where he helped them win the Somerset Premier Cup in 2013 and gain promotion to the Southern League Premier Division through the Playoffs in 2013-2014. During his permanent spell with Paulton, Barnes made 106 appearances, scoring 46 goals, getting 52 assists and being an unused substitute twice.
In March 2015, Barnes chose to make the move abroad, moving to New Zealand and subsequently joining Northern Premier League side Eastern Suburbs AFC, where he won the league, earning promotion to the top tier of New Zealand football, the New Zealand Football Championship, as well as winning the 2015 Chatham Cup.
In November 2015, Barnes joined New Zealand Football Championship side Waitakere United where he made nine appearances, scoring two goals and was an unused substitute once.
In February 2016, Barnes moved across to Melbourne in Australia and signed for National Premier Leagues Victoria 2 East (third tier) side Dandenong Thunder FC. While with Dandenong, he helped them earn promotion to the National Premier Leagues Victoria division (second tier), as well as finishing as the league’s top scorer in 2016, 2017, 2018 and third in 2019. Barnes then made the decision to move back home after scoring 119 goals in 116 appearances for Dandenong, as well as being named player of the year three times and being named players’ player of the year three times.