Był zawodowo związany z Filią Uniwersytetu Warszawskiego w Białymstoku, przekształconą w 1997 w Uniwersytet w Białymstoku. W latach 1991–1996 pełnił funkcję prodziekana Wydziału Prawa, a od 1991 do 2002 był kierownikiem Zakładu Prawa Karnego.
Od 2001 związany zawodowo z Uniwersytetem Jagiellońskim, gdzie w 2003 został kierownikiem Katedry Postępowania Karnego na Wydziale Prawa i Administracji. W latach 1996–2015 orzekał jako sędzia Sądu Najwyższego w Izbie Karnej, w 1999 objął funkcję rzecznika prasowego Sądu Najwyższego. Został też członkiem, następnie wiceprzewodniczącym, a w latach 2013–2015 przewodniczącym Komisji Kodyfikacyjnej Prawa Karnego, jak również ekspertem Rady Europy i członkiem Rady Naukowej Instytutu Nauk Prawnych Polskiej Akademii Nauk.
Pod jego kierunkiem stopień naukowy doktora uzyskali m.in. Adam Górski (2003) i Andrzej Sakowicz (2004). Był kierownikiem grantu naukowego z Narodowego Centrum Nauki z programu Harmonia 4 pt. Pozaprocesowe pozyskiwanie dowodów i ich wykorzystywanie w procesie karnym.
Jego zainteresowania badawcze dotyczą sprawności postępowania karnego, ochrony praw jednostki w procesie karnym, a także stosowania środków przymusu.