Prior to playing professionally, he attended Yucaipa High School and then Brigham Young University (BYU).
At BYU, he majored in mechanical engineering and was named to the Mountain West Conference All-Tournament Team in his freshman season, also the event's inaugural year.
Carson was drafted by the New York Yankees in the fifth round of the 2002 Major League Baseball Draft. He began his minor league career in with the Staten Island Yankees, hitting .203 in 48 games. He spent the next season with the Battle Creek Yankees, hitting .259 with 11 home runs and 100 strikeouts in 119 games. In 2004, he played for the Battle Creek Yankees and Tampa Yankees, hitting a combined .271 with 15 home runs and 111 strikeouts in 132.
Carson split the 2005 season between Tampa and the Trenton Thunder, batting .238 with nine home runs in 112 games. In 2006, he played for those two teams again, hitting .248 with ten home runs in 69 games. He spent all of 2007 with Trenton, hitting .248 with 16 home runs, and in 2008 he played for Trenton and the Scranton/Wilkes-Barre Yankees, hitting .285 with 15 home runs in 111 games.
Carson signed as a minor league free agent with the Oakland Athletics on December 1, 2008 and played with the Sacramento RiverCats. He had a career year, hitting .264 with 25 home runs and 77 RBI, and was subsequently called up to the major leagues.
Carson made his major league debut on September 18, 2009, against the Cleveland Indians. In his first game, he struck out twice in three at-bats. His first hit was a single to right field off of Tomo Ohka of the Indians the following day.
Three days later, he hit his first major league home run in the 9th inning off of the Texas Rangers' Eddie Guardado. Carson was outrighted to the minors after the 2010 season. In 46 games over two seasons, he hit .200 with five homers and 14 RBI.
He was purchased by the Tampa Bay Rays from the Athletics on August 1, 2011 and briefly played with the Durham Bulls, where he hit .250 in 22 games. After the 2011 season, he elected free agency.
He signed a minor league contract with the Minnesota Twins on November 17, 2011. He spent most of the season in AAA with the Rochester Red Wings, hitting .282 with 14 homers and 53 RBI. He also appeared in 26 games for the Twins, hitting .227.
After signing with the Cleveland Indians on November 19, 2012, Carson went on to appear in 20 games for Cleveland, collecting seven hits, including one homer, in 11 at-bats. After the season, Carson was non-tendered by the Indians, making him a free agent. He was re-signed to a minor league deal on December 13, 2013.
In January 2015, he signed a minor league contract with the Los Angeles Dodgers, that included an invitation to major league spring training. He was assigned to the AAA Oklahoma City Dodgers.
The Dodgers traded him back to the Athletics on May 8, 2015. Carson was assigned to the Triple-A Nashville Sounds. He was released on June 20.