W 1983 złożył kolokwium habilitacyjne po przedłożeniu rozprawy habilitacyjnej pt. „Zasada domniemania niewinności w polskim procesie karnym”. Postanowieniem prezydenta RP z 4 stycznia 1995 otrzymał tytuł naukowy profesora w głównej mierze za monografię pt. „Stanowisko prawne obrońcy w procesie karnym”, wydanej w 1991 r. Został profesorem zwyczajnym UW. Był dyrektorem Instytutu Prawa Karnego. W 1990 utworzył własną kancelarię prawną.

Od 1982 do 1995 był ponadto wykładowcą w białostockiej filii Uniwersytetu Warszawskiego. Pod jego kierunkiem stopień naukowy doktora uzyskał m.in. Marcin Warchoł, Szymon Pawelec czy Sławomir Żółtek.

Jako adwokat reprezentował m.in. Zytę Gilowską w postępowaniu lustracyjnym, Sławomira Sikorę w postępowaniach ułaskawieniowych, Ryszarda Forbricha w procesie o korupcję w środowisku piłkarskim czy Edwarda Mazura w postępowaniu ekstradycyjnym. W 2008 przewodniczył zespołowi, który prowadził prace nad projektem wprowadzenia do polskiego systemu prawnego instytucji sędziego śledczego. W marcu 2015 został przewodniczącym Komisji Kodyfikacyjnej Prawa Karnego przy Ministerstwie Sprawiedliwości i pełnił tę funkcję do 11 stycznia 2016, kiedy to komisja została odwołana.