Olson was drafted by the Baltimore Orioles as a sandwich pick between the first and second rounds of the 2005 MLB Draft. During the 2005 season, he played mostly with the Aberdeen IronBirds, moving to the Frederick Keys in August. He advanced to the AA Bowie Baysox, and was named the Baltimore Orioles Minor League Player of the Year. Olson was invited to the All-Star Futures Game. He was called up by the Orioles organization to be a starting pitcher again after July 4 start in Chicago. He was mentioned, but did not participate in the All-Star Futures Game, representing the United States team. Through 2007, in his minor league career he was 21-17 with a 2.95 ERA, and had averaged 7.37 hits and 8.82 strikeouts per nine innings. Olson was promoted from the Triple-A Norfolk Tides to take the place of injured Orioles starter Steve Trachsel, and he made his major league debut on Independence Day of 2007 against the Chicago White Sox. He would have earned the win in his debut, but he only pitched 4⅓ innings, falling two outs shy of the five innings required to qualify for a win. He earned his first career win in his next start, also against the White Sox, on July 14. He gave up two runs in 5⅓ innings, both on solo home runs by Jermaine Dye, and the Orioles went on to win 5-3. Olson committed his first career error in his debut on July 4. After allowing the first batter he faced in his career, left fielderAndy González, to reach base via a walk, he made a throwing error on a pickoff attempt, allowing Gonzalez to reach second base. His first career strikeout came three batters later, as Paul Konerko was called out on a 2–2 pitch. On September 1, 2007, Olson made a start at Fenway park against the Boston Red Sox, He was the opposing pitcher in the Clay Buchholz no-hitter. On June 28, 2008, Olson earned his first career hit vs. the Washington Nationals against Jesús Colomé in the sixth inning. He went to 3-0 on 8% of all batters he faced in 2008, the highest percentage in the majors.
Seattle Mariners
On January 18,, Olson was traded to the Chicago Cubs with a minor-leaguer for Félix Pie. Just 10 days later, he was traded along with Ronny Cedeño to the Seattle Mariners for Aaron Heilman. On April 1, 2009, Olson was optioned to Triple-A Tacoma to begin the season. He was called up on May 6 because of an injury to relief pitcher Shawn Kelley. Olson soon took the rotation spot from teammate Chris Jakubauskas. He compiled a 3.72 ERA in 12 relief appearances covering 19 innings. In 11 starts, he is 3-5 with a 6.49 ERA through August 10. This is why he was sent to the bull pen to become a reliever. Olson stated he felt comfortable in both roles. Olson was again optioned to Triple-A Tacoma on August 20 to clear roster space for Infielder Bill Hall. On September 13 Olson was called up again to the Mariners. This is his third stint with the team in 2009. With Tacoma, Olson went 2-3 with a 4.94 ERA and notched the Rainiers' only playoff win against the Sacramento River Cats.
Pittsburgh Pirates
On March 18, 2011, the Mariners placed Olson on waivers. He was later claimed off waivers by the Pittsburgh Pirates. He was designated for assignment on April 17.
Olson signed a minor league contract with the New York Mets on December 12, 2011. Olson began the year with Triple-A Buffalo. On August 7, 2012, Olson was called up from Triple-A to replace the injured Tim Byrdak. Olson made his Mets debut on August 8, pitching one third of an inning, giving up three runs against the Miami Marlins. Olson was designated for assignment on August 11 to create room on the roster for Johan Santana. In October 2012, Olson elected minor league free agency.
In November 2012, Olson signed with the Oakland Athletics.
Doosan Bears
On March 16, 2013, Olson was released by the Athletics to allow him to sign a contract with the Doosan Bears in the Korea Baseball Organization. He was released from Doosan on July 2013.
Personal life
He currently resides in Clovis, California. He majored in mechanical engineering in college.