Barnes started his senior career with Cape Town-based during the 2006 Vodacom Cup. He made his debut against the in Port Elizabeth, coming on as a late substitute. He was promoted to the starting line-up for their next match against the in Cape Town the following week and eventually made a total of thirteen appearances for Western Province during the competition.
Falcons
In 2007, he moved north to East Rand-based side the. He appeared in all six of the Falcons' matches in the 2007 Vodacom Cup and scored his first senior try on his Falcons debut, a 17–13 victory over the in Welkom in the opening match of the season, following this up with his second senior try a week later against in Nigel. He made his debut in the Currie Cup in 2007, coming on as a substitute in the Falcons' match against in Brakpan. He played in ten of the Falcons matches during the 2007 Currie Cup Premier Division – scoring one try against the – but couldn't prevent them finishing bottom of the log. He established himself as the first choice hooker at the Falcons in 2008, starting all seven of their matches during the 2008 Vodacom Cup and appearing in all fourteen of their matches during the 2008 Currie Cup Premier Division, where the Falcons once again finished bottom of the log, this time losing their Premier Division status in a two-legged play-off against the.
Griquas / Royal XV / Cheetahs
Barnes, however, continued to play at Premier Division level as he made the move to Kimberley-based side for the 2009 season. After making eight starts during the 2009 Vodacom Cup to help Griquas lift the trophy for the fourth time, he was also called up to a Highveld XV that played against the British and Irish Lions during their 2009 tour to South Africa. Barnes scored a first-half try in his side's spirited 25–37 loss to the touring side. He played in all fourteen of ' matches in the 2009 Currie Cup Premier Division, starting twelve of those and scoring two tries – one in their match against the and another against the. His performances for the Peacock Blues in also led to him being included in the Super Rugby team for the 2010 Super 14 season. After being an unused substitute the first three times he was named on the bench for the Cheetahs, he eventually came on just after the hour mark in their match against the in Bloemfontein. He started a Super Rugby match for the first time in April 2010 when he was included in the run-on side for their match against the in Hamilton, eventually making a total of eight appearances. He played in all fourteen of ' matches during the 2010 Currie Cup Premier Division, scoring two tries to help them finish in sixth position in the competition. 2011 saw Barnes once again be a key player for the during the 2011 Super Rugby season, making thirteen appearances including a spell during which he started eight consecutive matches for the side. His record during the 2011 Currie Cup Premier Division was similar to that of 2010, with Barnes making fourteen appearances – starting all of those – and scoring two tries, against the and respectively, as Griquas once again finished in sixth position. During the 2012 Super Rugby season, Barnes' involvement was limited to just one substitute appearance in their match against the in Bloemfontein. Hercú Liebenberg was the preferred back-up choice to Cheetahs first-choice hooker Adriaan Strauss, which led to Barnes being involved more in ' 2012 Vodacom Cup campaign. He started in seven of their eight matches during the competition as they reached the final of the competition, where they lost 20–18 to on home soil. He made nine appearances for Griquas during the 2012 Currie Cup Premier Division as they finished fifth in a now-reduced six-team league to avoid playing in a relegation play-off match. The 2013 Super Rugby season saw Barnes return to the Cheetahs squad as backup to Adriaan Strauss. He was named on the bench for all 17 of their matches, but only played off the bench on eight occasions. He made nine starts for during the 2013 Currie Cup Premier Division; this time, the team failed to avoid finishing bottom of the log and they had to play in a two-legged relegation play-off against the. Barnes started both the 21–19 victory in Kimberley and the 33–15 defeat in Nelspruit as Griquas lost their Premier Division status. Once again used as the main understudy to Strauss during the 2014 Super Rugby season, Barnes made four appearances for the Cheetahs and scored one try in their match against the in Melbourne – Barnes' first try in Super Rugby in his 31st appearance for the side – before being released to to aid their attempt to return to the 2014 Currie Cup Premier Division by virtue of winning the 2014 Currie Cup qualification tournament. He played in all six matches in the tournament and scored his first ever two-try haul in their match against the in George to help his side top the log and return to the Premier Division. He played in all ten matches in the competition as Griquas finished seventh in the competition. Coincidentally, Barnes' final game for Griquas also turned out to be his 100th match for the side. He came on as a late substitute in the match against the in Pretoria, but marred the occasion as he was sent off just four minutes later for swearing at referee Pro Legoete, as Griquas crashed to a 46–12 defeat.