[글 쓰는 엔지니어] 아무도 몰라주는 프로그램 개발자로서의 삶, 3부 리습 (LISP)과 불합리한 설계 시스템 개선
다음날부터 마음을 다잡고, 누군가가 만든 종횡단 프로그램을 이리저리 만져보며 생각해봤습니다. ‘이 프로그램을 만든 사람도 야근을 너무 많이 해서 도저히 못 참고 만들었겠구나.’ 하는 생각이 들었습니다. 그래서 똑같은 프로젝트가 주어졌다고 혼자서 가정하고 어떤 점을 개선할 수 있는지 생각해봤습니다. 설계 고려 사항은 어차피 설계 기준과 엔지니어의 판단이라는 아날로그적인 영역이라 어쩔 수 없으니 결국은 도면 작업이었습니다. 엑셀의 내용을 오토캐드로 옮기고 종횡단면도를 그리는 단순한 작업에 4명이 1개월 동안 밤을 새워도 못 끝내고 실수로 재작업까지 해야 되는 불합리한 점부터 개선하고 싶었습니다. 처음에는 리습으로 엑셀 데이터를 가져오는 것이 가능한지부터 알아봤습니다. 책에는 없었습니다. 그래서 인터넷으로 찾아보니 있기는 있는데 제가 원하는 만큼 자세히 나오지는 않았었습니다. 그래서 미국 사이트들을 찾아다니기 시작했습니다. 며칠을 찾아다닌 끝에 엑셀 데이터를 가져오는 방법을 찾았습니다. 그런데 문제는 엑셀의 용량이었습니다. 용량이 워낙 크다 보니 데이터를 가져오는데 버퍼링이 있었습니다. 하나 가져오는 데에는 참을 수 있지만, 가져와야 하는 데이터의 양이 만 개가 넘으니 다른 방법을 찾아야 했습니다. 또 찾기 시작했습니다. 제가 아마 컴퓨터를 전공했거나 전문가 수준이었다면 좀 더 쉽게 해결했겠지만, 생계형 엔지니어로서 시작하다 보니 일단 방법이 있는지 없는지 부터 알아야 했습니다. 가능한 방법만 알면 어떻게든 풀어나갈 수 있다고 믿었습니다. 그러다가 우연히 한 미국인이 운영하는 개인 홈페이지에서 오토캐드와 MS 액세스 (MS Access)를 연결할 수 있다는 것을 알게 되었습니다. 친절하게 샘플 코드까지 적어둔 것을 보고 일단 따라만 해봤습니다. 그때까지 제 컴퓨터에 액세스가 설치된 지도 모르고 있었습니다. MS Office를 설치하면 여러 개가 함께 설치되므로 뭔지도 모르고 구석에 쳐 박아 둔 프로그램이었습니다. 샘플 코드를 실행해 보니 성공적으로 실행이 되었습니다. 액세스의 ‘Hello World’라는 문자열을 오토캐드 불러들여 문자 객체로 만들어주는 단순한 코드였습니다.
이제 모든 준비가 끝났다고 생각했습니다. 만들고 싶은 프로그램의 목표도 분명하고 가능한지 여부도 알았기 때문에 이제부터는 리습만 공부하면 된다고 생각했던 것이었습니다. 이해가 안 되시겠지만 저는 그랬습니다. 엑셀의 데이터를 액세스로 옮겨서 데이터베이스로 만들면 액세스는 용량이 작으니 버퍼링 문제가 해결되었고, 오토캐드에서 입력한 맨홀 또는 파이프의 고유 번호와 동일한 액세스의 데이터를 검색해서 찾아 불러오기만 하면 회사 고유 양식에 맞게 지시선과 문자열을 생성하도록만 하면 되는 일이었습니다. 알고리즘의 개념도 모르던 시절이어서 이런 흐름을 대강 알고리즘이라고 생각하고 거꾸로 필요한 함수들을 찾아서 사용법을 익히고 관련 샘플 코드를 찾아서 영어 번역하듯이 번역해가며 공부했습니다. 하루에 1~2시간만 자면서 공부하고 프로그래밍을 했는데 하나도 피곤하지 않았습니다. 제가 자발적으로 찾아서 하는 일은 피곤하지 않습니다. 한 달 정도 되니 제 생애 최초의 리습 프로그램이 완성되었습니다. 물론 디버깅을 거치지 않은 날 것의 모습이었고 에러도 있었지만 저에게는 정말 자식 같은 느낌이었습니다. 제가 원하던 대로 모든 것이 자동으로 되는 모습을 확인하고는 얼마나 기뻤는지 모릅니다. 시간을 좀 더 투자해 에러들을 해결해 가면서 점점 완벽해졌습니다. 그리고 종횡단면도 프로그램에 입력하기 위해 고생하지 않도록 복사만 하면 입력되도록 엑셀을 대대적으로 손을 봤습니다. 이렇게 만들어 두면 엔지니어가 설계 고려사항을 모두 종합해서 엑셀 raw 파일 하나만 잘 만들어 두면 그 다음부터는 모든 것이 자동으로 진행되는 것이 가능하다고 생각했습니다. 개발 기간은 모두 1.5개월 정도 걸렸습니다.
드라마는 이제부터 시작입니다. 제가 리습을 만든 이유는 순전히 자기 만족이었고 불합리한 시스템을 개선할 수 있다는 가능성을 확인한 정도의 의미였습니다. 똑 같은 프로젝트가 주어질 것을 예상하고 개발한 것이 아니었습니다. 그런데 개발한지 한 달 정도 지나고 입사한지 만 1년째 되던 즈음에 거짓말처럼 똑같은 오수관로 업그레이드 프로젝트를 회사에서 수주한 것입니다. 총 연장은 약 15Km 정도로 약간 작은 규모였지만 완전히 동일한 프로젝트여서 저는 제가 개발한 프로그램을 직원들 모두 모아놓고 시연한 뒤 제가 담당하겠다고 당당하게 얘기했고 모두가 환호성과 함께 동의했습니다. 처음 3개월 가량은 측량, 현장 조사, 현황도 작성, 지하매설물도 검토, 설계 기준 검토, 엑셀 raw 파일 만들기에 집중했고, 드디어 제가 만든 프로그램이 빛을 발할 차례가 되었습니다. 이전에 4명이 1개월 넘게 밤을 새우며 했던 일을 제가 개발한 프로그램을 이용해 저 혼자서 일주일 만에 끝냈습니다. 그것도 재작업이 전혀 없는 상태로 완벽하게 끝났습니다. 제 인생에서 가장 극적인 순간이 아니었나 생각이 듭니다. 직원들 모두 환호했고 저는 보이지 않는 곳에서 노력한 것에 대해 모두에게 인정 받은 순간이었습니다.
[글 쓰는 엔지니어] 아무도 몰라주는 프로그램 개발자로서의 삶, 5부 비주얼 베이직 (VBA)을 시작한 이유 (0) | 2023.02.16 |
---|---|
[글 쓰는 엔지니어] 아무도 몰라주는 프로그램 개발자로서의 삶, 4부 리습 (LISP)으로 재능 기부 (0) | 2023.02.15 |
[글 쓰는 엔지니어] 아무도 몰라주는 프로그램 개발자로서의 삶, 2부 설계 엔지니어의 도면 작업 (0) | 2023.02.13 |
[글 쓰는 엔지니어] 아무도 몰라주는 프로그램 개발자로서의 삶, 1부 작지만 성공한 경험 (0) | 2023.02.12 |
[글 쓰는 엔지니어] 음악, 영화, 문학, 예술, 그리고 스포츠에서 배운 크리에이티브 언어 (0) | 2023.02.11 |
댓글 영역