Holland attended Fordham Prep where he averaged 16 points, eight rebounds, eight assists and three steals, earning a McDonald's All-American nomination, a CHSAA All-Division naming and All-County honors from the Journal News. He also played for Saint Benedict's Prep where he averaged 10 points, six rebounds, six assists, three steals and two blocks per game.
Holland went undrafted in the 2011 NBA draft. On July 5, 2011, he signed with Chorale Roanne Basket of France for the 2011–12 season. In 28 games, he averaged 14.3 points, 4.7 rebounds and 1.8 assists per game. In July 2012, Holland joined the Oklahoma City Thunder for the Orlando Summer League and the Miami Heat for the Las Vegas Summer League. On August 5, 2012, he signed with Cajasol Sevilla of Spain for the 2012–13 season. In 33 Liga ACB games, he averaged 10.4 points, 2.8 rebounds, 1.4 assists and 0.7 steals per game and in 12 Eurocup games, he averaged 10.1 points, 1.9 rebounds, 2.5 assists and 1.0 steals. In July 2013, Holland joined the Minnesota Timberwolves for the 2013 NBA Summer League. On October 29, 2013, he signed with BCM Gravelines of France for the 2013–14 season. He played in 23 Pro A games averaging 10.9 points, 3.2 rebounds and 1.3 assists in 26.3 minutes and also appeared in 13 Eurocup games, averaging 9.9 points, 3.7 rebounds and 1.5 assists in 29.5 minutes. On September 26, 2014, Holland signed with the San Antonio Spurs. However, he was later waived by the Spurs on October 13. The next day, he signed with Beşiktaş of Turkey for the 2014–15 season. In 15 Eurocup games, he averaged 8.7 points, 2.8 rebounds, 1.3 assists and 0.6 steals.
On December 23, 2015, Holland was acquired by the Canton Charge of the NBA Development League. He made his debut for the Charge later that night against the Grand Rapids Drive, recording 11 points, 3 rebounds, 5 assists and 2 steals in a 113–111 loss. In 37 games with the Charge, he averaged 16.0 points, 3.1 rebounds, 2.0 assists and 1.2 steals in 30.2 minutes per game.
On April 11, 2016, Holland signed with the Boston Celtics. On April 19, he made his debut for the Celtics in an 89–72 playoff loss to the Atlanta Hawks, playing one minute off the bench. On August 31, 2016, he was waived by the Celtics. On September 26, 2016, Holland signed with the Cleveland Cavaliers, but was waived on October 22 after appearing in three preseason games.
On September 8, 2017, Holland was signed to a two-way contract by the Cleveland Cavaliers of the NBA. Under the terms of the deal, he will split time between the Cavs and their G-League affiliate, the Canton Charge. Holland is the first player the Cavaliers have signed on such a deal. He would also play his first NBA regular season games during this contract after previously only playing in one playoff game for Boston. Holland was waived by the Cavs on November 9, 2018.
On November 19, 2018, the Austin Spurs announced that they had acquired the returning right to Holland and a 2019 second-round pick from the Canton Charge in exchange for Jaron Blossomgame.
On December 26, 2019, Holland signed with Hapoel Jerusalem of the Israeli Premier League as a replacement for Trent Lockett. He re-signed with the team on May 18, 2020, after averaging 13 points per game.
UNICS Kazan (2020–present)
On July 27, 2020, Holland signed with UNICS Kazan of the VTB United League.