Born in Chorley, Lancashire, Barnes was spotted playing for Conference North side Lancaster City in the FA Youth Cup and, after a successful trial in November 2005, the young winger joined Manchester United's youth academy that December. In his first season with the club, he made 16 appearances, including five for the Reserves. The 2006–07 season saw Barnes make his breakthrough into the Reserves, making 25 appearances and scoring four goals. On 25 October 2006, he made his debut for the first team, coming on as a half-time substitute for Phil Marsh. However, he himself was substituted just before half-time in extra time, being replaced by Ryan Shawcross. Barnes played in the final of the 2006–07 Manchester Senior Cup, scoring United's only goal in a 3–1 loss to Manchester City. In August 2007, he gave several impressive performances for United in the 2007 Champions Youth Cup in Malaysia, which United went on to win. Despite being an ever-present in the reserve team in the first half of the 2007–08 season, it was announced on 3 January 2008 that Barnes had joined Chesterfieldon loan for the remainder of the season, to gain first team experience. However, due to a lack of opportunities in the Chesterfield first team, Barnes' loan contract was terminated prematurely and he returned to Manchester United after just three appearances for the Derbyshire club. On 27 February 2008, Barnes went on a week-long trial at Inverness Caledonian Thistle, with a view to securing a permanent contract. In an article reporting Barnes' loan move to Shrewsbury Town in March 2008, BBC Sport reported the likelihood that Barnes was to be released by Manchester United in the summer. He made two first team appearances for Shrewsbury, before his loan was ended on 29 April 2008. On 27 June 2008, the BBC's speculation over Barnes' future was confirmed, when Manchester United announced that he would be one of seven young players not to have their contracts renewed at the end of the season. He was given a free transfer and allowed to leave the club as of 30 June 2008. Barnes was linked with a move to Inverness Caledonian Thistle after he seemingly impressed while being on trial in February. In July 2008, Barnes went on trial with Bristol City, and featured in their first pre-season friendly against Forest Green Rovers. However, he was not offered a contract with the club. Barnes joined Northwich Victoria on non-contract terms in August 2008, making his debut as a substitute against Burton at the Pirelli Stadium on 12 August, but was released without playing in any further matches in early September 2008 after failing to agree terms on a new contract. He signed for Conference North side Southport in October 2008, but was released after 11 appearances. He later joined F.C. Halifax Town, and made his debut for the club against Radcliffe Borough on 10 January 2009. In the summer of 2009, Barnes signed for AFC Fylde in the Northern Premier League Division One North. Six years later, Barnes decided to leave Fylde directly after the play-off semi-final and informed the club on 8 June 2015 when the manager contacted him to negotiate terms for the 2015–16 season.