1967년 경남 고성 출생으로 진주에서 초·중·고등학교를 다녔다. 서울대에 진학한 뒤 학생운동 과정에서 세 번 구속되었고, 졸업 후 1년가량 신생 월간지의 기자 생활을 거쳐 1994년 국회의원 정책비서로 정치권에 첫발을 들여놓았다.
2002년 대선 당시 노무현 후보 선거대책위원회를 시작으로 노무현 당선자 비서실, 대통령직인수위원회를 거쳐 청와대 국정상황실 행정관, 연설기획비서관을 지냈다. 2008년 2월 노무현 대통령 퇴임과 함께 봉하마을로 내려가 마지막까지 그분의 곁을 지켰다. 대통령 서거 후에는 봉하재단 사무국장, 노무현재단 봉하사업본부장으로 고인의 못다 한 꿈을 이어가는 일을 맡았다.
이후 정계에 입문해 두 차례에 걸친 선거 패배를 딛고 2016년 제20대 국회의원 선거 때 경남 김해시 을 선거구에서 62.4%의 득표율로 당선돼 대한민국 제20대 국회의원이 됐다. 이는 당시 더불어민주당에서 전국 최다 득표율이었다. 그리고 2018년 제7회 전국동시지방선거 때 경상남도지사 선거에 도전장을 내밀어 52.8%의 득표율로 당선돼 경상남도지사가 되었다. 펴낸 책으로는 《대통령보고서》 《봉하일기, 그곳에 가면 노무현이 있다》 《힘의 역전》(공저) 등이 있다.