[개발에세이#3] "C 그리고 C++"의 세상에서 "Java"의 세상으로
#개발에세이 #03
아 그리고 보니 제 소개를 안했네요.. 짧게 할께요... 이력서 자기소개는 아니니까요 ^^;;
황후순, 전남 여수 출생, 여수고등학교, 수학을 좋아해서 수학과만 3군데, 그리고 전산 1군데 지원했는데 정작 가고 싶었던 학교의 수학과 면접에서 떨어져서 그냥 집에서 제일 먼 한국기술교육대학교 정보통신전공. 80년 5월 14일생(-), 기혼, 용인 거주, 개발자, 흰둥이(비숑프리제, 2017년 5월 26일생, 2017년 8월 1일 분양, 수컷, 중성화, 예방접종)
2007년 10월 29일 입사 이후 약 8년간 C & C++ & Win32 API & MFC & C#의 세상에서 개발자로 일해왔었다. 2015년 초반부터 2014년 6월에 웹솔루션사업 시작할 때 넘어간 후배가 나에게 웹쪽으로 와달라고 요청을 해왔다. 어떻게 보면 자바 네트워크 전공자인 내겐 원래 하고 싶었던 일이기두 했지만, 8년간의 개발자로 살아오며 만난 웹 개발자들은 정말... 말 그대로 너무 힘들어 보였다. 거기에 더해서 마이다스아이티에서 신사업을 시작할 때 아키텍트로 참여해왔던 나로선 웹솔루션에 가는게 어떤 의미이고 어떤 노력과 열정이 필요한지는 너무나 빠삭하게 알고 있었다. 그래서 거절했다. 외적으로 도와주긴 하겠지만 (교육, 설계) 함께 하고 싶진 않다고... 이때는 정말 밥오같이 2000년에 하던 웹을 생각했다. jsp, servlet, html, js... 그 당시 내 생각은 엉덩이로 일하는 분야였다. 그리고 알고리즘 따위 고민안하고 기껏해야 산수정도 하는 분야... 지금 생각해보면 정말 우물안 개구리였다.
암튼 서론은 여기까지 하고 2015년 6월 17일 수요일 오후 2시쯤이었던걸로 기억한다. 그 당시 나는 기발개발팀 개발1파트 리더를 하고 있었고, 설계개발팀 코어엔진을 어떻게 리팩토링 할지와 하반기 교육 계획을 잡고 있었다. 전화벨이 울렸다. 당시 연구소장님 현 CTO님 전화였었다. 내일 저녁에 우리 파트와 저녁을 먹었으면 한다고... 느낌이 팍 왔다. 파트원(당시 3명)을 모았다. 내일 저녁에 상무님과 저녁약속이 있고 아마도 웹으로 가야하는 얘길 할 것 같다고... 그런 느낌이 든다고...
다음날 저녁 저녁 장소(판교 흑돈가)에 갔더니 상무님과 내 첫 리더이자 지금의 내가 될 수 있도록 많은 기회를 주신 이사님이 계셨다. 혹시... 이사님도 같이 넘어가나? 하는 생각과 동시에 아니면 이사님을 통해서 나를 설득하려나? 하는 두가지 생각이 들었다. 결과는 함께였다... ^^;;;;;; 주 얘기는 이사님과 함께 나와 그리고 파트원 한명이 가줬으면 한다는 얘기였다. 나머지 파트원은 기존 하던거 그대로... 전날 상담했을 때도 다른 파트원들은 가고 싶지 않다고 얘기했었고 그렇게 얘기하겠다고 했는데.. 어떻게 알았는지 딱 넘어갈 만한 사람을 정해오셨다. 물론 나도 가고 싶지 않았지만... 더욱 뺄 수 있는 상황이나 여건이 아니였다. 이사님두 넘어가는 마당에 내가 초칠 순 없었으니...
이런 저런 얘기를 하다가 상무님이 나에게 물어보았다. 어떻게 생각하냐고?? 나는 있는 그대로 솔직히 얘기했다. (내가 거짓말을 잘못한다. 성격상 쪽팔리는걸 제일 싫어하고, 그래서 모르는걸 배울땐 정말 모른다고 하고, 유치원생 모드로 돌입해서 배운다. 그 편이 정말 많은걸 얻을 수 있기에)
"웹솔루션 개발로 하면 머 해야하는지 압니다. 저는 엉덩이로 일하고 싶지는 않습니다. (이때까지도 몰랐으니 ㅠㅠ). 솔직히 저기 가서 알고리즘 짤 일도 없을 테고 그냥 이런 저런 기술엮어다가 서비스 만드는게 다인 것 같습니다. 그래서 저는 제가 좋아하는 수학관련된 C++ 개발자로 커리어를 더 쌓구 싶습니다. 단, 종필이가 (같이 넘어갈.. 아니 넘어간 안종필) 간다고 하면 가겠습니다."
상무님 왈 "종필이 너는 어떤 생각인데?" 종필 왈 "저도 후순이형이랑 비슷한 생각인데, 후순이형이 가겠다고 하면 가겠습니다." ... 흠.. 무한루프일뻔 했지만... 이사님 한마디에 결정 "후순, 종필 같이 가자" "넵" "넵" 결정이 났다. 7월 6일부로 웹솔루션으로 넘어가기로... 그렇게 그날은 헤어졌다.
나는 먼가를 결정하는데까지는 나름 신중하지만 결정이 되면 그냥 따른다(?) 아니 실행한다고 봐야할지도.. 어짜피 결정이 되었고 가기로 한 이상 준비를 해야했다. 종필이랑 다음날 점심전에 나갔다. 서점으로... "종필아 봐야할 책, 사고 싶은 책! 다 골라. 사게" "네" 그리고 우리는 각자 대략 8권 정도의 책을 들고 회사로 돌아왔다. 이미 우리가 넘어가기로 한 이상... 새롭게 준비중이었던 프로젝트는 다른 사람에게 넘어갔다. 아니 후에 알고보니 홀딩된 상태로 진행이 안되어있었다. 프로젝트가 끝나면 항상 다른 사람에게 공유 및 교육을 하는게 습관이었다. 일하고 있는데 누가 물어보러 오는 것도 귀찮고, 그리고 다른 재미난(?)걸 할려면 빨리 넘겨버려야한다. (개인주의일지도) 또 얘기가 옆으로 ... ㅠㅠ
그 이후로 종필이와 나는 스프링, 헤드퍼스트 서블릿, sql 등등 공부를 하기 시작했다. 웹솔에 있던 녀석에게 말해서 프로젝트 권한도 받아서 실행도 해보면서... 시간은 정말 금새 지나간다. 어느 순간 웹솔로 조직개편이 나있었고 웹솔 전체 인원이 모여서 우리를 환영하는 시간을 갖고 있었다. 나에게 웹솔에 온 소감을 묻는 질문에 난 이렇게 답했던 걸로 기억한다.
"어떻게 보면 제 전공분야이긴 하지만 이 분야에서 손땐지 10년이 넘었고, 정말 빠르게 변하는 분야이다 보니 제가 기존에 가지고 있던 기술은 전혀 필요하지 않을 것 같다. 대신 현재 쓰이고 있는 기술을 최대한 빨리 파악해서 도움이 되는 개발자가 될 수 있도록 노력하겠다. 아마 제가 이 사람 저 사람에게 물어보러 다닐텐데 많은 도움 부탁드립니다." 머 이런 비슷한 내용이었다. 그 다음 종필이 그리고 이사님 다들 머 이제 왔으니 잘해보자는 얘기가 주였다. ^^
웹솔에 와서 처음 맡은 서비스는 무려... erp... 깜짝 놀랬다. 웹에서도 이런 큰 규모의 프로젝트를 진행할 수 있다는 사실. 그리고 웹사업 시작한지 1년만에 이런 서비스를 할 시도를 했다는 그 자체만으로도 대단해 보였다. 물론 그 당시 이미 채용솔루션(inSIGHT)"이라는 서비스는 출시되어 있었고 현재는 대기업 포함 여러 회사에서 사용중이다. 암튼 그건 내 일 밖이고 일단 erp를 뜯어보기 시작했다. 프로젝트 자체가 크다보니 mvc 프로젝트도 3개로 구성되어 있었고 나름 sso도 자기들만의 룰로 개발되어 있었다. (sso 유료는 꽤 비용이 커서). 그렇게 파트원으로 들어가서 5개월 후에 파트 리더, 1년후엔 팀 리더가 되어 있었다. 그러면서 erp에도 많은 기능이 추가되었고, 대충 가닥이 나오기 시작했다.
팀장이 되자마자 스스로 만들어서 한 업무가 3개로 구성되어 있던 mvc 프로젝트를 하나로 통합하는 것이었다. 솔직히 mvc 는 하나만 있는게 나았는데 왜 굳이 3개로 쪼갰는지... 작설하고 sso 때문에 서비스간 이동시 로그인 처리, 세션정보 생성(꽤 크다.. 조직도때문에)등의 성능저하와 불필요한 운영 관리 포인트가 싫었다. 2틀쯤(하루 작업 하루 리그레션처리) 걸렸나? erp 프론트 전체를 알고 있는 팀원과 합심해서 나머지 팀원들에겐 하루만 소스 올리지 말라고 하고(브랜치 따서 머징하기도 귀찮...) 작업해 버렸다. 그리고 센터장님과 운영팀에게 공지했다. 이제 war 하나만 관리하면 되니 인스턴스 처리 다시 해달라고 (이때까지만 해도 idc 온프라미스 환경이었...).
내가 이런 작업을 하는 동안 같이 왔던 종필이는 inSEED"라는 인적성 서비스를 만드는 메인개발자가 되어 있었고 채용솔루션 개발도 병행하였다. 내가 퇴사하기 직전까지는 웹솔루션개발 3팀 리더를 맡구 있었던 멋진 동료이자 후배이자 친구이다. 이 친구를 처음 만난건 융합기술개발팀이 조직명이 변경된 기반개발팀에서 3D CAD 파트 리더를 맡고 있었던 2014년 초였다. 원래 설계개발팀에서 SoilWorks라는 제품을 메인으로 개발하던 친구였는데 기반쪽 개발을 하고 싶다는 본인의 의지로 우리 팀으로 온 친구였다. ^^ 물론 실력에 자신이 있었을테고 와서도 금새 팀의 일원으로 본인의 성과를 충분히 아니 그 이상 달성하였다. (http://www.midasinsight.com/)
이 친구의 개발하는 성향은 내가 본바로는 다음과 같다. 개발하는 성과물에 대해 본인이 스스로 만족하지 않으면 주위에서 뭐라고 하든 깊이 있게 파보는 개발자. 일화를 들자면 그 당시에 개발하던 3D CAD 솔루션의 기능 중 필렛(파라솔리드 커널 이용)을 개발하는 중이었고, 내가 봤을 때 차주 월요일에 예정되어 있던 마일스톤에서 충분히 어필할 수 있는 완성도로 개발이 완료되어 있었다. 그래서 나는 이정도면 일단 되었으니 다른 기능을 추가로 요청하였고 알았다고 하였다. 그런데 이 친구가 일하는걸 보고 있자면 업무 시간(9-6)에는 추가 기능 개발을 하면서 저녁을 먹고 난 이후에는 기존에 개발 완료된 필렛에 파라솔리드에서 제공하는 부가 기능을 추가로 개발하고, 또한 여러가지 테스트를 통해 릴리스 될 정도의 완성도로, 제품으로 만들어 내고 있었다. 당시 상황을 잠깐 설명하자면 빠른 프로토타입 개발, 1싸이클을 빨리 돌려보자는 방법론이었는데 그럼에도 불구하고 자기 스스로 만족을 하지 못하니 본인의 여가 시간을 쪼개서 기능을 하나하나 추가해 나가는 그런 녀석이었다. 물론 나도 비슷한 성향을 지니곤 있지만 나는 프로토타입이란 명목아래 많은걸 그냥 뒤로 미루고 나가는 경우도 많이 있었는데 이 친구는 참... 비슷하면서도 다른 암튼.. 그런 느낌의 친구였고, 이때부터였을 것 같다. 아 이 녀석이랑 일하면 세상 누구도 못하는 안되는 것 빼곤 다 만들 수 있겠구나...
또 하나를 더 들자면 그 당시 윈도우 어플리케이션 메인프레임이나 컨트롤을BCGPro 라는 GUI Control 라이브러리를 사서 사용을 하고 있었는데, 가끔은 기획 그리고 디자인 상에서 라이브러리가 제공하지 않는 요청이 오곤 했었다. (새로운 프레임으로 만들려는 시도를 하던 시기였고 그래서 UI파트라는 것도 생겼었다.) 이 또한 이 친구랑 언젠가 소개할 이종협이라는 친구 둘이서 담당이였는데, 아주 이것들이 BCGPro 라이브러리를 깡그리 상속받아서 오버라이드 가능한 거의 모든 함수를 다시 구현해서 완전 우리만의 BCGPro 라이브러리의 마이다스화를 시켜버렸다. 거기에 더해서 xml 형식으로 커스터마이징이 되게 해나서 디자이너가 스스로 고쳐보면서 프로그램의 디자인을 바꿔가며 테스트 해 볼 수 있는 환경까지 마련되었다. 그 이후로는 개발 요청이 아닌 디자이너가 xml을 수정해서 이렇게 릴리스 해달라는 방법으로 디자인 적용 플로우가 통째로 변경되어 버린... 그리고 나서 언젠가 나에게 이런 말을 했다. "형 그냥 우리 BCGPro 같은거 우리 솔루션에 맞게 그냥 개발해도 될 것 같은데요? ㄷ ㄷ ㄷ " 개발자라면 알겠지만 모든 라이브러리는 표준화 그러니까 여러 솔루션에 적용할 수 있도록 개방에 초점을 맞추어 개발되어 있다. 그래서 때론 성능이 요구되는 기능(특히 테이블, 그래프)에서는 뚜렷한(?) 성능 저하가 일어난다. 이런 부분들은 우리는 기존 라이브러리를 과감히 버리고 싹 다 새로 만들어서 적용하곤 했었다. 물론 내가 아니라 이 녀석이 ㅡ.ㅡ (https://www.bcgsoft.com/) (http://midas-plant.com/)
아무튼 윈도우 어플리케이션을 만들 때는 주로 이쪽 분야(기하형상 커널, 후처리, UI)를 담당하다가 나랑 같이 웹에 넘어와서는 빠르게 적응하고 큰 프로젝트를 맡았고, 우리가 DB를 MASTER와 SLAVE로 write와 read를 분리하던 과도기에 또 한번 우리에게 광명의 빛을 선물했다. 스프링 프레임워크 기반으로 진행하였는데 ORM 은 마이바티스 (아앜)를 쓰고 있었다. 그래서 처음에 우리는 maria db 스키마별로 db sqlSession을 만들어서 사용하였고, master 와 slave로 나뉘면서 코드도 crud에 따라서 다른 세션을 물어야했다. 먼가 마음에 들지 않아서 이것 저것 찾아보고 있었는데 아니 이녀석이 proxy와 super generic 을 이용해서 클래스 하나로 랩핑을 하였다. 물론 마이바티스 플러그인도 만들어서 개발자가 신경쓰지 않아도 자연히 master와 slave를 타겟으로 세션 처리가 되는... 감동이었다. 첫번째 프로토타입 테스트를 진행하고 세션을 요청하였고, 잘 정리된 (자료도 잘 만든다.. 이 자식 개발자 맞나 몰라;;) ppt 자료를 가지고 공유하는 시간도 가졌었다.
이 친구랑 일한 시간은 그리 오래되지 않는다. 내 10년 생활의 반정도.. 그러나 내가 믿는 몇 안되는 사람중에 안종필" 이 친구가 말하는 모든 것을 신뢰할 수 있는 시간이 되기엔 충분했다. 그렇게 난 또 한명의 천재 개발자와 연을 맺고 함께 일해본 소중한 경험을 이전 회사에서 가질 수 있었다.
우리는 매달 경영전략서라는 형식으로 본인의 성과 달성 여부를 작성하고 매달 평가를 한다. 내가 알기로 이 친구의 성과는 경영전략서에 적힌게 아니라 그 뒤에서 많은 개발자를 서포터 해주었던 그런 마음가짐. 그게 가장 큰 성과였다.
종필, 언제나 응원할테니 부족한 형이지만 어려움이 있을 땐 언제나 연락다오 ^^
오늘도 그는 그곳에서 무언가를 최적화하고 있을 것이다. 종필이니까.