Shami is originally from Srinagar (Jammu & Kashmir)
His father Tousif Ali was a farmer, who was also a fast bowler in his younger days. Shami has a sister and three brothers, all three of whom wanted to be fast bowlers. In 2005, Tousif recognised Shami's bowling abilities and took him to Badruddin Siddique, a cricket coach in Moradabad which was 22 km from their village.
"When I first saw him [Shami] bowling at the nets as a 15-year-old kid, I knew this boy is not ordinary. So I decided to train him. For one year I prepared him for the UP trials, as we don’t have club cricket over here. He was very co-operative, very regular and very hard working. He never took a day off from training. During the under 19 trials he bowled really well, but due to politics, he missed out on selection. They asked me to bring him next year, but at that moment I didn’t want Shami to miss one year. So I advised his parents to send him to Kolkata."
After Shami missed out on getting picked for the Uttar Pradesh Under-19 team, Badruddin sent him to Kolkata later in 2005. Shami started playing for the Dalhousie Athletic Club. While he was playing for this club, he was noticed by Debabrata Das, a former assistant secretary of the Cricket Association of Bengal, who was impressed with Shami's bowling and drafted him into his team, Town Club, with a contract of Rs 75,000. Das took Shami, who had no place to stay in Kolkata, to his own residence. Shami bowled well for Town Club, but could not get selected for the Bengal Under-22 team. Das went to one of the selectors, Samarban Banerjee, and asked him to watch Shami's bowling. Banerjee was impressed with his bowling and selected him for the Bengal Under-22 team.
"Shami never wanted money. His goal was the stumps, the sound that comes from hitting the stumps. Ever since I saw him, most of his wickets were bowled. He bowls with an upright seam, on or just outside off stump, and gets it to cut back in."
In order to get selected for the Bengal team, Das sent Shami to Mohun Bagan Club, which is one of the top clubs in Bengal. After joining the club, Shami could bowl to Sourav Ganguly at the Eden Gardens nets. Ganguly saw Shami's bowling skills and asked the selectors to "take special care of him". Soon after, Shami was picked in the Bengal Ranji squad in 2010.
Shami made his first-class debut in 2010 against Assam, picking up three wickets.
In the aftermath of his good performance in the domestic season, he was selected for the West Indies-bound India A squad in 2012. He shared a match-winning partnership of 73 runs for the 10th wicket with Cheteshwar Pujara during India A's unofficial Test match against the West Indies A in June 2012.
During Ranji Trophy 2012–13, in a match against Hyderabad on a green at Eden Gardens, he took 4/36 and 6/71, and scored 15* from 6 balls in the second innings to help his side win the match by 4 wickets, along with Wriddhiman Saha. He also took 7/79 and 4/72 against Madhya Pradesh at the Holkar Cricket Stadium in Indore, but in spite of that his side lost the match by 138 runs. It included a hat-trick in the first innings to wipe out the tail.
Shami was signed by Kolkata Knight Riders (KKR) for the 2011 season of the Indian Premier League, which was then coached by Wasim Akram. However, Shami played only a few matches in that season. He was retained by the franchise in the next two seasons and was a part of the team that won the title in 2012.
After his impressive Test debut in 2013, Delhi Daredevils bought him for ₹4.25 crore in 2014, in which edition he played a few matches. However his team had a bad season. He was retained by the franchise in the 2015 edition of the IPL. He got good pace and bowled at 140 km/h and above regularly with his fastest being 147.9 km/h.
As a result of his good performances in the domestic matches, Shami Ahmed was selected for India's ODI series against Pakistan, replacing his Bengal teammate Ashok Dinda and subsequently made his debut in the third ODI at Delhi on 6 January 2013. He returned tidy figures of 1/23 from 9 overs in a low-scoring game that India won by 10 runs. He was selected for the Australian tour of India in October 2013. After sitting on the bench for the first 3 matches, he was given a chance in the fourth match in which he took 3 wickets.
In the India tour of New Zealand in 2014, Shami picked 11 wickets in ODIs at an average of 28.72.
On 5 March 2014, in an Asia cup match against Afghanistan, Shami became the third fastest Indian to 50 ODI wickets. He end the tournament with 9 wickets at 23.59.
After losing the Test series by 3-1 against England India won the ODI series by 3-1 in which Shami took 8 wickets at 24.16. In 5th ODI he bowled a good spell in death overs with tight line and lengh & Midlle stump Yorkers. After that cricket pundits call him Indian bowling future.
Shami picked 10 wickets at 17.40 against West Indies in October 2014. In the 2nd ODI of the Series he got his best bowling figure in ODIs as he picked up 4 wickets for 36 runs in his 9.3 overs.
He was in 15 man Squad for 5 Odis against Sri Lanka in November 2014 but he was replaced by Dhawal Kulkarni due to a toe injury he suffer during the West Indies Series.
Shami was a part of the 15 man-squad named for the 2015 World Cup and was eventually included in the playing XI. He picked 4 wickets for 35 runs from his 9 overs in India's first match against Pakistan, helping India win the match. In the second match against South Africa, he finished with 2/30 from 8 overs. In the third game against West Indies, he was awarded the Man of the Match after finishing with figures 8–2–35–3. He had a good game in the next as well, against Ireland, finishing with 3/41 from 9 overs. In the last of the league games, against Zimbabwe, he took another 3-wicket haul giving away 48 runs from his 9 overs which included 2 maidens. India went on to win all the league games. In the quarterfinal against Bangladesh, he picked 2 wickets for 37 runs off 8 overs. He had a poor game against Australia in the semifinal, which India lost, where he gave away 68 runs off 10 overs without picking a wicket, thus finishing the tournament with 17 wickets at 17.29 and an economy rate of 4.81. In June 2015, after the conclusion of the tournament, Shami revealed that he bowled through pain in his left knee which kept recurring, following which he underwent a surgery.
Shami made his Test debut against West Indies in November 2013 in front of his home crowd at Eden Gardens, Kolkata. There, he took his maiden Test wicket – that of Kieran Powell – finishing with figures of 17–2–71–4 in the first innings of the Test match. In the second innings, his figures were 13.1–0–47–5. He had a dream debut, taking 9 wickets for 118 runs – the most by an Indian pacer on debut – surpassing Munaf Patel's 7 wickets for 97 runs in Mohali in 2006.
He played Tests against South Africa and New Zealand and picked 6 and 10 wickets respectively. He had a poor series at the 2014 tour of England with 5 wickets in 3 matches at an average of 73.20. He was involved in a 111-run partnership for the 10th wicket, with Bhuvneshwar Kumar in the first Test at Trent Bridge, and scored his maiden half-century in the process, and helped India post 457 in the 1st innings when India were struggling on 346-9. He was a part of 19-member squad for 2014–15 Border Gavaskar Trophy in Australia where he played 3 matches and had a good series picking up 15 wickets at an average of 35.80.
Shami made his debut in Twenty20 Internationals on 21 March 2014 against Pakistan in the opening match of the World T20 and took the wicket of Umar Akmal. He was played for only three matches in the tournament and dropped from the rest. He was included in the side in 2014 tour of England, following the Test series, in July. He played in the lone match of the series and finished with 3 wickets conceding 38 runs.