He first joined Swindon Town's academy at the age of 6 in 2007 and signed his first contract aged 8,[5][6] before signing his first professional contract with the club in May 2019.[7][5][4] He joined National League South side Chippenham Town on loan in July 2019,[6] and made his debut for the club in a 0–0 draw away to St Albans City on 3 August 2019, their opening game of the season.[8] He won Chippenham Town's man of the match award for his performance.[8] Haines scored his first goal for the club on 28 September 2020 with the opening goal of a 2–2 draw at home to Dulwich Hamlet.[2][9] He returned to Swindon Town in December 2019,[10] having made 20 league appearances, scoring once, for Chippenham.[2]
He rejoined Chippenham Town on loan until the end of the season in February 2020.[11] His first appearance back at Chippenham came on 8 February 2020 in a 1–0 victory away to Hemel Hempstead Town,[2] before scoring his second goal for Chippenham in their following match with the only goal of a 1–0 victory at home to Maidstone United.[12][2] He made 5 appearances over this spell, scoring once,[2] prior to the early suspension of the season in March 2020 due to the COVID-19 pandemic.[13]
Haines was subsequently signed on a permanent basis by Hereford on 17 May 2021.[20] He was released by the club at the end of the 2022-23 season.[21] In May 2023, he returned to Chippenham Town having had two previous loan spells with the club.[22]