서울 출신으로 서울청구초등학교와 충암중학교를 거쳐 충암고등학교에 입학했다. 충암고등학교 3학년 때인 1995년 제 25회 봉황대기 전국고교야구대회에서 총 6경기에 등판해 42.2이닝 동안 4자책점, 50탈삼진, 평균자책점 0.84를 기록하면서 팀을 우승으로 이끌고 최우수 선수상도 수상했다. 이 대회에서 호투하면서 서울지역 고교 최대어로 부상하게 되었고,[1] 당초 고려대학교에 진학하려던 계획을 수정하여 OB 베어스에 입단하게 되었다.
1996년 신인 드래프트에서 고졸 우선 지명을 받고 입단했다. 시속 150km가 넘는 빠른 공과 위력적인 슬라이더를 구사하는 파워 피처[2]였지만, 프로 데뷔 초창기만 해도 변화구의 컨트롤에 문제가 있었다. 이는 1996년부터 3년 동안 연속으로 폭투 1위를 한 기록이 증명했다. 많은 때는 한 시즌에 21개나 하기도 했다.[2]등번호는 27번을 사용했다.
2006년 시즌 후 일본 진출을 노렸으나 무산되었고, FA를 선언하여 4년 40억원의 조건으로 LG 트윈스에 이적했다. 이 때 두산 베어스는 보상 선수로 투수신재웅을 지명했다.
2007년 이적 첫 해에는 10승 6패를 기록하여 자리잡는 듯했으나, 2008년부터 내리막길을 급격히 걷기 시작했다. 2008년4월 24일한화전에 선발 투수로 등판하여 4.1이닝 동안 7피안타 5실점을 기록하면서 패전 투수가 되었다. 그 경기 후 어깨 통증을 호소하였고 2군에 내려가게 되었다.[3]2008년6월 11일, 미국캘리포니아주로스앤젤레스에 위치한 조브 클리닉에서 관절경 검사와 어깨 수술을 받았다.[4]2009년5월 17일넥센 히어로즈와의 경기에서 389일만에 1군으로 등판해서, 4이닝 3피안타 2실점을 기록하였다.[5] 그러나 이후 허벅지 통증으로 다시 2군으로 내려가면서 2009년에는 단 4경기만 나오고 1패만 기록하여 또다시 시즌을 접었다.
2010년4월 24일한화 이글스전에서 역대 22번째로 통산 100승을 거두었다.[6] 그러나 이후 어깨 부상 재발 등으로 부진하여 중간에 시즌을 마감했고 4승 6패, 6점대 평균자책점으로 부진한 성적을 거뒀다. 게다가 LG 트윈스의 새로운 연봉제 방식이 도입되면서 무려 90%나 삭감된 5,000만원에 계약하였다. 이는 역대 KBO 리그 최대 연봉 삭감이다. 2011년에는 재활로 1군에 올라오지 못했고, 결국 2012년에 방출되었다.
2006년WBC 도중 국제 야구 연맹(IBAF)이 주관해 실시한 도핑 테스트에서 금지 약물 중 하나인 노르안드로스텐디아올이 검출됐다. 그래서 엔트리에서 제외된 것은 물론, 2년 간 국제 대회에 참가할 수 없게 됐다.[13] 당시 그는 오랫동안 계속되었던 어깨 통증 때문에 약물을 복용하고 있었고, 그것이 결국 그의 발목을 잡게 되었다.