W latach 1984–1989 studiował na Wydziale Prawa i Administracji Uniwersytetu Gdańskiego. Podczas studiów, w okresie 1985–1987, był współwydawcą i drukarzem podziemnego pisma studentów „ABC”. W maju 1988 był współorganizatorem strajku okupacyjnego na swojej uczelni oraz przewodniczącym studenckiego komitetu strajkowego. Współtworzył pierwsze jawne stowarzyszenia opozycyjne wobec władz (Klub Myśli Politycznej „Dziekania” w Warszawie, Gdański Klub Polityczny im. Lecha Bądkowskiego, Stowarzyszenie „Kongres Liberałów” i Gdańskie Stowarzyszenie Akademickie). Był współorganizatorem I i II Zjazdu Kongresu Liberałów.
W trakcie studiów dorywczo pracował w Stoczni Gdańskiej, Stoczni Remontowej i Stoczni Północnej oraz jako stróż nocny w Gdańskim Towarzystwie Naukowym.
Tytuł magistra uzyskał w 1989 i rozpoczął pracę naukową na Uniwersytecie Gdańskim jako asystent w Katedrze Historii Państwa i Prawa Polski. Od 1990 do 1993 pełnił stanowisko prorektora ds. studenckich tej uczelni. Naukowo zajmował się problematyką samorządu terytorialnego w II Rzeczypospolitej. W latach 1991–1998 był członkiem komisji zakładowej NSZZ „Solidarność” na Uniwersytecie Gdańskim.