군산상업고등학교 졸업 후 연고 팀 쌍방울 레이더스에 신고선수로 입단하려했으나 쌍방울 레이더스 해체 이후 선수단을 승계한 팀에서 신고선수들을 받아들이지 않았다. 그러다가 당시 타격코치였던 이건열의 눈에 띠어 2001년에 신고선수로 입단하였다. 2002년부터 1군으로 올라와 주로 내야수로 활동했고 2006년부터 주전 유격수가 됐다.[2] 이후 정근우의 등장으로 주전에서 밀렸고 2007년에는 스프링캠프 도중 당시 감독이었던 김성근과 불화가 있기도 했다. 이 때 손시헌의 입대로 유격수가 필요했던 두산 베어스에서 트레이드를 추진해 2007년 4월 29일에 나주환을 상대로 트레이드됐다.[3]
트레이드 후 주전 유격수로 활동했고, 이때부터 본격적으로 진가를 발휘하기 시작했다. 2006년 시즌 후 입대한 손시헌의 공백을 메우며 수비력을 인정받았고, 2007년에는 한국시리즈에 출전했다. 그러나 2009년에 손시헌의 제대로 인해 또 다시 주전에서 밀려 손시헌이 잠시 부상으로 쉬었을 때를 빼면 시즌 대부분을 2군에서 지냈다.[4]
2007년 한국시리즈 3차전에서 김강민의 타구가 자신 앞으로 굴러가는 땅볼이 됐으나 실책을 기록했다. 다시 최정이 친 타구가 땅볼이 됐으나 2루 주자 김강민의 실책 유도로 인해 또 다시 실책을 범했고 평범한 플라이마저 놓치며 한 이닝에만 3실책을 해 한국시리즈 한 이닝 최다 실책을 기록했다.[5] 결국 경기에서 패해 팬들에게 순식간에 역적이 되며 '그의 난'이라며 질타를 받았다.
2009년에 내야진의 실책이 많았고, 2009년 시즌 후 김민재의 은퇴 등으로 내야진 보강을 원했던 당시 감독이었던 한대화가 그에게 눈독을 들였고 2009년 11월 16일 당시 한화 이글스 소속이었던 투수 조규수, 김창훈을 상대로 트레이드됐다.[6] 트레이드 후 김민재의 번호를 받았고, 주전으로 활동했다. 2011년 안정된 수비를 바탕으로 3할대 타율, 8홈런, 50타점을 기록해 그 해 골든 글러브 유격수 부문을 수상해 새로운 연습생 신화를 썼다.[7] 그 해 그는 유격수 중 김선빈 다음으로 실책이 적었다.[8] 팀은 빙그레 이글스 시절인 1990년 장종훈 이후 21년 만에 골든 글러브 유격수 부문을 수상했고, 신고선수 출신 골든 글러브는 역대 4번째였다. 2013년에는 시즌 중 소집 해제돼 1군에 복귀한 송광민에게 유격수 자리를 내주고 3루수로 출장하는 경기가 많아졌다.[9] 2013년 시즌 후 FA를 선언해 4년간 총액 20억원(계약금 4억원, 연봉 3억 5,000만원, 옵션 2억원)의 조건으로 잔류했다.[10]
2017년4월 28일삼성전에서 몸 쪽으로 오는 공에 맞았는데 이와 동시에 배트가 돌아갔다. 이 때 사사구로 판단한 그는 1루로 출루하려고 했으나 삼진 아웃 판정이 내려지자 분노하며 심판에게 항의했고, 결국 퇴장을 당했다. 이전까지 그는 선수 생활을 하면서 단 한 번도 퇴장을 당한 기록이 없었으나 이 사건으로 인해 개인 첫 퇴장을 당했다. KBO는 그에게 2경기 출장 정지와 유소년 봉사 40시간 징계를 내렸다.[13]