현재 (주)하제소프트 대표이사를 맡고 있다. 1998년부터 지금까지 삼성첨단기술센터, 삼성21세기아카데미, LG러닝센터, MDS테크놀로지 등에서 디바이스 드라이버 교육을 수행해 왔다. 윈도와 임베디드 운영체제가 관심 분야이며, 특히 버스인터페이스(USB, PCIexpress, 1394등)와 보안 시스템에 관심이 많다.
현재 에어클래스, 유튜브("이봉석")에서 디바이스 드라이버와 USB, 보안 시스템 등에 대한 강좌를 진행하고 있다.
주요 저서로는 『실전 윈도 디바이스 드라이버 2/e』(에이콘, 2019), 『Windows CE 실전 가이드』(에이콘, 2006)을 비롯해 『디바이스 드라이버 구조와 원리 그리고 제작 노하우』(가남사, 2004), 『윈도 디바이스 드라이버』(한빛미디어, 2009)가 있다.
우선 이 책을 통해서 처음 저자의 이름을 듣게 되는 독자들을 위해서 간단히 내 소개를 먼저 하는 것이 맞는 순서인 듯하다.
나는 1990년 3월, Microsoft DOS(MS-DOS)부터 사용해왔다. 지금의 내 상황이 과거에 예상했던 미래는 분명 아니다. 미래의 나는 '로보트 태권브이'를 만드는 일을 하고 있을 줄 알았다. 그런 생각을 하면서 학부 시절을 보냈기 때문에, 당시 '전자계산학과'라는 학과에서는 전혀 가르쳐주지 않는 내용들에 대한 해답을 항상 찾아 다니면서 공부했던 기억이 난다.
전산과 조교보다는 전자과 조교를 찾아 다니면서 공부했으며, 어셈블리어, 마이크로 프로세서, 컴퓨터 아키텍처, 전자공학 등을 거의 미친듯이 공부했던 기억이 난다. 내가 왜 전자계산학과를 갔을까 하는 의구심까지 들 정도로 말이다.
엄밀하게 말해서 지금 하고 있는 일이 내가 정말로 원했던 일은 아니지만, 비슷한 일을 하고 있다고는 말할 수 있다. 하드웨어(로봇)를 구동하는 데 필요한 소프트웨어, 그것도 비교적 로우 레벨(Low Level) 수준으로 작성된 소프트웨어를 작성하고 있기 때문이다.
지금 생각해보면, 나는 로봇을 만드는 일이 아니라, 하드웨어를 구동하는 방법 그 자체에 매력을 느꼈던 것이 분명하다.
'어떻게 하면 저 하드웨어의 효율을 최대한 살리면서 구동할 수 있을까?'
이것이 지금 내가 하고 있는 대부분의 일의 목표가 됐다.
서론이 조금 장황했던 것 같다. 세 가지 이야기만 하고 싶다.
우선 이 책의 신뢰성에 대한 이야기를 해야겠다.
나는 28년 가까이 디바이스 드라이버라고 부르는 분야에서 소위 전문가라는 이야기를 들으면서 수많은 강의를 해왔으며, 지금도 코딩과 설계, 디버깅을 하고 있는 개발자다.
회사를 운영하는 입장에서 아무래도 마이크로소프트가 가장 많은 수입원을 제공해 왔기 때문에 가장 많은 기술을 보유하고 있는 분야도 역시 마이크로소프트와 따로 떼어내어 생각할 수 없다. 자연스럽게 윈도우 쪽 기술에 의존하고 있는 셈이다. 물론 최근 안드로이드나 리눅스 쪽의 시장이 요구되면서부터 조금씩 해당 운영체제의 지식을 습득하는 과정 중에 있지만, 이 기술이 언제 회사 수입에 도움이 될지는 모르겠다.
다음은 나의 전문 분야다.
윈도우 디바이스 드라이버, USB 하드웨어 설계 및 프로토콜, PCI, PCI Express 트랜잭션, 리눅스 커널포팅 및 디바이스 드라이버, VxWorks 플랫폼 포팅, 안드로이드 플랫폼 포팅, 윈도우 CE 포팅
이런 분야에서는 지금까지도 개발을 하고 있는 입장이니, 이 책에 기술하는 내용들을 충분히 신뢰해도 좋다는 이야기를 하고 싶다.
서문을 쓰고 있는 지금도, 내 책상의 한편에는 WinDBG(윈디버거)로 연결된 타겟 컴퓨터, Cypress FX3 개발보드, Trace32 JTAG 디버거, USB 시리얼 포트, 제조사 카메라 장치, 별도 전원 공급을 위한 파워서플라이 등이 올려져 있다. 서문을 작성하고 나면 또 일을 해야 한다.
난 개발자다. 이 책은 개발자를 위한 책이다.
두 번째로 꼭 이야기해주고 싶은 말은 항상 강의 때마다 학생들에게 해줬던 이야기다.
"시간이 아무리 없더라도 꼭 한번쯤은 내려갈 때까지 내려갔다가 올라오기를 바란다."
"자신이 할 수 있는 한 가장 아래까지 내려가본 개발자는 새로운 분야의 기술을 습득하는 데 있어, 도약하는 속도가 훨씬 빠르다."
이런 이야기를 하면, 조금 생각이 있는 학생들의 대답은 늘 "그럴 시간이 없어요."였다.
맞다! 그럴 시간이 없다. 최소한 일하는 시간 동안에는 말이다.
개인 여가 시간까지 소비하면서 공부를 해야 한다는 이야기를 할 수밖에 없는데, 현대 사회에서는 50대에도 공부를 해야 하는 것이 당연하다고 생각한다면, 개인 여가 시간을 공부하는 데 사용하라는 이야기를 할 수밖에 없다. 직장인들은 회사에서 일하고, 자기 시간을 조금이라도 가져보려고 하지만 여의치 않을 것이다. 그래도 시간을 만들어서라도 공부해야 한다.
최소한 이런 종류의 책을 찾아보려는 독자들이라면, 제발 한 번만이라도 깊이 내려갔다가 올라오는 공부를 해보면 좋겠다. 도약 속도가 정말 빠를 것이다.
마지막으로 이 책을 활용하는 방법에 대해서 이야기를 해주고 싶다.
이 책은 다음과 같은 생각을 바탕으로 서술했다는 점을 기억해주길 바란다.
1. 무엇을 개발해야 하는지 정한다.
2. 그것을 개발하기 위해서 무엇을 준비해야 하는지 확인한다.
3. 어떤 자료들을 참고할 수 있는지 확인한다.
4. 샘플 코드를 꼭 빌드해서 먼저 동작시켜 본 후, 코드를 한 줄 한 줄 내 것으로 만들어본다.
이 책을 다 읽은 독자들은 새로운 분야의 디바이스 드라이버를 개발해야 할 때, 어떤 방법으로 접근해야 하는지 알 수 있기를 희망한다.
그리고 꼭 샘플 소스를 읽어봐야 한다. 가능하면 실시간 디버거를 사용하던지, 디버그 메시지를 활용해서라도 코드의 동작을 확인해야 한다.
이 책이 정말도 필요한 독자들에게 도움이 됐으면 좋겠다.
시간이 허락되는 한, 유튜브를 통해서 다양한 드라이버와 관련된 동영상을 올릴 예정이니, 꼭 확인해 보기 바란다.