1980년 제23회 사법고시에 합격하여 사법연수원을 수료하고 변호사 사무실을 개업했다. 이후 박종철 고문치사 사건, 부천서 성고문 사건(1986년), 임수경 방북 사건(1989년), 노동자 시인 박노해 사건 등의 시국사건을 변호하였으며 특히 박노해 사건에서 국가안전기획부장을 상대로 항고해 '안기부가 피의자의 변호인 접견을 제한하는 것은 법률에 위배된다'는 대법원 결정을 이끌어냈다.[2][3]진보 성향의 법조인 단체인 민변의 발기인으로 참여하며 인권 변호사로 활동했다.
재야출신들로 구성된 '통일시대 민주주의 국민회의'를 통해 1994년 정계에 입문하여 1995년 새정치국민회의군포시 지구당위원장으로 맡아 이듬해 4월의 15대 총선에서 당선됐지만, 2000년 16대 총선에서는 한나라당김부겸 의원에게 재검표까지 가는 승부 끝에 254표 차로 석패했다.
낙선 이후에 경기도 정무부지사(2001년 6월 ~ 9월), 청와대 정무수석(2001년 9월 ~ 2003년 2월)을 지낸 뒤, 열린우리당 창당 발기인으로 참여했다. 그러나 17대 총선을 앞두고 중앙당 측에서 김부겸[4] 과의 경선 요구를 묵살하고, 신생 선거구 안산시 단원구 을에 공천하자 탈당 후 무소속 출마를 시도했다.
하지만 2004년 3월 12일 노무현 대통령 탄핵 소추안이 국회를 통과하면서 사표 우려가 제기되자 열린우리당에 복당했다. 그 후 고향인 장흥군·영암군에 전략 공천되어 재선에 성공했고, 2008년 3선 국회의원으로 대한민국 국회 제18대 국회 전반기 법제사법위원회 위원장으로 활동하다가 18대 국회 후반기 국토해양위원회 의원으로 재직했다.