Pracował w redakcjach „Współczesności”, „Kultury”, w radiu oraz telewizji. Nakręcił ponad 70 filmów dokumentalnych. W Telewizji Polskiej był współautorem programów publicystycznych, tj. Telewizja nocą i Rozmowy o cierpieniu.

Był członkiem Stowarzyszenia Pisarzy Polskich.

Działalność polityczna W 1980 wstąpił do NSZZ „Solidarność”, uczestniczył w I Krajowym Zjeździe Delegatów w Gdańsku Oliwie. W stanie wojennym został internowany na okres około roku, później był aresztowany pod zarzutem działalności konspiracyjnej. W 1989 po raz pierwszy uzyskał mandat poselski na Sejm kontraktowy z ramienia Komitetu Obywatelskiego, w trakcie kadencji zakładał Solidarność Pracy, z ramienia której w 1991 wszedł do Sejmu I kadencji. Od 1992 należał do Unii Pracy. Z listy tego ugrupowania po raz trzeci sprawował mandat poselski w latach 1993–1997, pełniąc funkcję wicemarszałka Sejmu.

Po przegranych przez UP wyborach w 1997 krótko pełnił też funkcję przewodniczącego, zastąpiony na tym stanowisku przez Marka Pola. W wyborach samorządowych w 1998 bezskutecznie ubiegał się o mandat radnego sejmiku mazowieckiego z listy koalicji Przymierze Społeczne.