1007년(목종 10) 문과에 장원으로 급제하였다. 1010년 (현종 1)에 거란의 성종(聖宗)이 침입하여 서경을 공격할 때 동북계도순검사 탁사정(卓思政)이 싸우다가 도주하고, 장군 대도수(大道秀)가 적에게 항복함으로써 성중이 크게 동요하였다.
이 때 통군녹사(統軍錄事)로서 진장(鎭將) 강민첨(姜民瞻), 낭장 홍협(洪叶)·방휴(方休) 등과 함께 어찌할 바를 모르다가 신사(神祠)에 빌고 점쳐 길조를 얻게 되자, 여러 사람들의 추대로 병마사(兵馬使)가 되어 흩어진 병사를 모아 성을 굳게 지킴으로써 서경의 함락을 모면하였다.
1018년 거란의 소배압(蕭排押)이 침입할 때 시랑(侍郞)으로 출정하여 서경 근처 마탄(馬灘)에서 1만여 명의 적을 베었는데, 이때 강감찬(姜邯贊)은 흥화진(興化鎭: 지금의 평안북도 의주 근처)에서 적을 대파하였고, 강민첨은 자주(慈州: 평안남도 순천군 자산면) 내구산(來口山)에서 적을 크게 무찔렀다.