1938년 전라북도 김제군에서 태어났다. 중앙대학교 법과대학을 나온 후 반공연맹 김제지부장을 역임하였다. 이는 아버지의 좌익 사상을 못마땅하게 여긴 할아버지의 영향이었다고 한다. 이후 민주공화당 장경순 국회의원의 비서관을 역임하였다. 1978년 제10대 국회의원 선거에서 무소속으로 전라북도 김제군·정읍군 선거구에 출마하였으나 민주공화당장경순 후보와 신민당 김원기 후보에 밀려 낙선하였다. 1979년 서해방송(현 KBS전주방송총국) 보도국장 등을 역임하였다. 1981년 제11대 국회의원 선거에서 민권당 후보로 전라북도 김제군·부안군 선거구에 출마하였으나 민주정의당 조상래 후보와 민주한국당 김진배 후보에 밀려 낙선하였다. 두 번의 낙선으로 가산을 탕진하는 바람에 플라스틱 그릇 행상을 하였다. 1984년 신한민주당에 입당하였다. 1985년 제12대 국회의원 선거에서 신한민주당 후보로 같은 선거구에 출마하여 민주정의당 조상래 후보와 동반 당선되었다. 이후 이철승계에 속하면서도 친 동교동계 행보를 보여서 계보를 동교동계로 옮겼다. 1987년 신한민주당을 탈당하여 통일민주당에 입당하였다가 다시 통일민주당을 탈당하여 평화민주당에 입당하였다. 1988년 제13대 국회의원 선거에서 평화민주당 후보로 전라북도 김제군 선거구에 출마하여 당선되었다. 1992년 제14대 국회의원 선거에서 민주당 후보로 전라북도 김제시·김제군 선거구에 출마하여 당선되었다. 1993년 민주당 당기위원장에 임명되었다. 1994년 민주당 사무총장에 임명되었다. 1995년 새정치국민회의 창당에 합류하였으며 장경우의 뒤를 이어 대한민국 국회 통신과학기술위원장에 선출되었다. 그러나 수뢰 혐의로 1996년 제15대 국회의원 선거에서 공천을 받지 못하였다. 이후 2006년 1월부터 2006년 2월까지 열린우리당 특임위원을 지내다가 사퇴 및 탈당하여 다시 무소속 전향 이후 2006년 5·31 지방선거 김제시장 선거 후보 경선 결과 발표를 앞두고 공천헌금 명목으로 현금 4억원을 건낸 혐의(정치자금법 위반)로 당시 민주당 사무총장 조재환 전 의원과 함께 구속수감 되었고 징역 10월이 선고되었다. 2010년 8·15 광복절을 기념하여 특별사면 복권되었다. 2014년 제6회 지방 선거 김제시장에 무소속으로 출마하나 낙선하였다.