W latach 2001–2007 grał jako młodzik w TSV Rot-Weiß Wenholthausen. W latach 2007–2009 grał w SC Neheim. Natomiast w latach 2009–2011 FC Schalke 04[1]. W tym ostatnim zespole zagrał w drużynie U17 24 mecze i strzelił 17 goli[2]. Został mistrzem kraju w tej kategorii wiekowej[2].
Kariera klubowa
Wypożyczenie do SC Paderborn (2012–2013)
30 lipca 2012 roku został wypożyczony z Schalke do SC Paderborn 07 za 200 tys. euro[1]. W tym zespole zadebiutował 11 sierpnia 2012 roku w meczu przeciwko VfL Bochum, wygranym 4:0[3], grając ostatnie 5 minut[4]. Pierwszego gola strzelił 16 września 2012 roku w meczu przeciwko Erzgebirge Aue, wygranym 0:1[3]. Do siatki trafił w 51. minucie[5]. Pierwszą asystę zaliczył 21 października w meczu przeciwko FC St. Pauli, zremisowanym 1:1[3]. Asystował przy golu w 71. minucie[6]. Łącznie w Paderborn zagrał 31 ligowych meczów, strzelił 7 goli i raz asystował[7].
Wypożyczenie do FC Ingolstadt (2013–2014)
14 lipca 2013 roku został wypożyczony do FC Ingolstadt 04[1]. W tym zespole zadebiutował 10 sierpnia 2013 roku w meczu przeciwko Karlsruher SC[8], grając 28 minut[9]. Pierwszego gola strzelił 23 sierpnia w meczu przeciwko Arminii Bielefeld, wygranym 3:2[8]. Do siatki trafił w 31. minucie[10]. Pierwszą asystę zaliczył 1 listopada w meczu przeciwko SC Paderborn 07 zremisowanym 1:1[8]. Asystował przy golu w 27. minucie[11]. Łącznie w Ingolstadt zagrał w 31 spotkaniach, strzelił 8 goli i zaliczył 2 asysty[12].
A w Schalke nie zagrał żadnego spotkania na poziomie seniorskim[13].
1. FC Kaiserslautern (2014–2015)
1 lipca 2014 roku trafił za milion euro do 1. FC Kaiserslautern[1]. W tym zespole zadebiutował 4 sierpnia 2014 roku w meczu przeciwko TSV 1860 München, wygranym 3:2[14]. Strzelił gola w debiucie, do siatki trafił w 80. minucie[15]. Pierwszą asystę zaliczył 17 grudnia w meczu przeciwko temu samemu zespołowi, zremisowanym 1:1[16]. Asystował przy golu w 85. minucie[16]. Łącznie w tym zespole zagrał 30 spotkań, strzelił 6 goli i zanotował asystę[14].
Brentford F.C. (2015–2017)
25 lipca 2015 roku trafił za 2 mln euro do Brentford F.C.[1] Zadebiutował tam 8 sierpnia w meczu przeciwko Ipswich Town, zremisowanym 2:2[17], grając cały mecz[18]. Pierwszego gola strzelił tydzień później w meczu przeciwko Bristol City F.C., wygranym 2:4[18]. Do siatki trafił w 71. minucie[19]. Łącznie w Anglii zagrał 31 ligowych spotkań, strzelił 4 gole[20].
Greuther Fürth (2017–2018)
1 lipca 2017 roku trafił za 250 tys. euro do Greuther Fürth[1]. Ponownie w Niemczech zadebiutował 20 sierpnia w meczu przeciwko Holsteinowi Kilonia, przegranym 3:1[21], grając cały mecz[22]. Pierwszego gola strzelił 8 września w meczu przeciwko Dynamowi Drezno, zremisowanym 1:1[21]. Do siatki trafił w 82. minucie[23]. Pierwszą asystę zaliczył 24 września w meczu przeciwko 1.FC Nürnberg, przegranym 1:3[21]. Asystował przy golu w 79. minucie[24]. Łącznie w tym zespole zagrał 9 ligowych spotkań, strzelił gola i zaliczył asystę[25].
Eintracht Brunszwik (2018–2019)
23 stycznia 2018 roku trafił za 700 tys. euro do Eintrachtu Brunszwik[1]. Zadebiutował tam 5 dni później w meczu przeciwko Erzgebirge Aue, wygranym 1:3[26]. W debiucie asystował przy golu w 35. minucie[27]. Pierwszego gola strzelił 8 kwietnia w meczu przeciwko Dynamowi Drezno, zremisowanym 1:1[26]. Do siatki trafił w 23. minucie[28]. Łącznie w Brunszwiku zagrał 50 meczów, strzelił 12 goli i zanotował 6 asyst[29].
Karlsruher SC (2019–2022)
1 lipca 2019 roku przeszedł za darmo do Karlsruher SC[1]. Zadebiutował tam 28 dni później w meczu przeciwko Wehen Wiesbaden, wygranym 1:2[30]. Do siatki trafił w 61. minucie[31]. Pierwszą asystę zaliczył 6 dni później w meczu przeciwko Dynamowi Drezno, wygranym 4:2[30]. Hofman strzelił gole w 48. i 67. minucie, w dodatku asystował przy golu w 60. minucie[32]. Łącznie do 3 stycznia 2022 roku zagrał w tym zespole 81 spotkań, strzelił 39 goli i zanotował 18 asyst[33].