전반전 이야기

나의 개발언어 변천사

선한 부자-이현주 2022. 2. 2. 18:43

C, C++, C#, Visual Basic, Java, Groovy, Kotlin, Python, TypeScript, Matlab, Tcl.

소프트웨어 개발자였던 내가 업무에 사용했던 개발언어들이다. 가장 애착이 가는 언어는 C++다. 엄마는 아이가 울면 어디가 불편한지 안다고 한다. 엄마가 돼본 적이 없는 나는 그건 알 수 없다. 하지만 C++로 짠 코드가 자빠지면 증상과 발작 정도에 따라 어디를 들여다봐야 하는지 안다.

 

C++가 배우기 어려운 언어라지만, 내가 짠 코드의 저 아래쪽에서 무슨 일이 벌어지는지 알 수 있게 해 준다. 나는 독일 본(Bonn) 대학교에서 Turbo C++ 플로피 디스켓 3장을 번갈아 껴가면서 C++를 배웠다. C++는 내 첫사랑 개발언어다.

첫 직장에서는 C++만 사용했다. 회사가 망하는 바람에 일 년이 채 안 돼서 이직했다. 두 번째 직장에서의 개발언어는 C++, Python, 그리고 Matlab이었다. 벤츠, 아우디, 폭스바겐 자동차의 안정화 작업을 위한 솔루션을 제공하는 회사였다. 기계 설비와 테스트를 위해 Matlab을 사용했고, 대량의 데이터는 Python으로 처리했다. 입사 후 얼마 지나지 않아 독일 남부에 있는 진델핑겐(Sindelfingen)시에 있는 메르세데스 벤츠(Mercedes-Benz)사에 출장을 간 적이 있었다. 그때 간식으로 나온, 버터 바른 브레첼(Brezel)은 끝내주게 맛있었다. 진델핑겐시는 내게 벤츠보다 브레첼로 기억에 남는다.

 

 

나의 세 번째 회사는 만하임(Mannheim)시의 자부심이었던 두덴 출판사(Duden Verlag)였다. 독일어 문법, 철자, 어휘 등을 바로잡는 제품을 만드는 데 개발언어로 C++와 C를 사용했다. 테스트 코드는 스크립트 언어인 Tcl로 작성했다.

C는 메모리 처리서부터 개발자가 신경 써야 할 사항이 많다. 한마디로 삽질하다 날 샌다. 기본 공사를 제대로 하지 않으면 프로그램이 어느 날 갑자기 주저앉아버린다. 지붕 올리고 페인트도 칠해야 하는데 공구리만 치다가 지치기 십상이다. C는 처리 속도가 빨라서 주로 기계 제어 부분(Embedded)에서 쓰인다.

 

두덴 제품에서 문자열을 처리하던 C는 참으로 불친절한 개발언어였다. 도끼로 이쑤시개 만드는 격이었다. 마케팅이고 나발이고 현 제품의 개발언어를 바꾸는 것이 가장 시급한 일이라고 여러 번 건의했지만, 씨도 안 먹혔다. 팀의 터줏대감인 개발자가 C언어 구루였기 때문이었다. 이래서 '라떼 꼰대'가 위험하다.

 

100년 넘는 전통을 자랑하던 두덴 출판사는 2014년 만하임시에서 문을 닫고, 베를린(Berlin)시에 있는 모회사(母會社) 코르넬젠 출판사(Cornelsen Verlag)로 축소 통합되었다. 두덴 출판사가 단지 C언어 때문에 망했다고 생각하지는 않지만, 과거에 굳어진 자신만의 방식을 고집하는 이들이 많았던 것은 아니었을까 하는 나름의 추측을 해본다.

 

두덴 출판사의 독일어 문법과 철자 검사기

 

두덴 출판사가 완전히 가라앉기 전에 나는 독일 노동청과 복지부 등 공기관에서 사용하는 소프트웨어를 만드는 회사의 시니어 개발자로 발 빠르게 이직했다. 당시 내 나이 47세였고 안정된 회사가 필요했다. 루르(Ruhr) 공업지대의 시에 속한 소위 '철밥통 회사'는 나의 네 번째 회사이자 마지막 회사였다.

 

이 회사에서는 두 부서에서 일했다. 첫 부서에서는 객체 지향 프로그래밍(Object Oriented Programming) 방식을 토대로 Visual Basic, C++, C#을 개발언어로 사용했다. 내가 만난 C#은 친절하지만 밍밍한 언어였다. C처럼 꼬장꼬장하지만 처리 속도가 화끈한 것도 아니었다. 그렇다고 Kotlin처럼 개발자가 과제에 집중하도록 묵묵히 궂은일 해주는 집사 같은 느낌도 없었다. C#은 내 것인 듯, 내 것 아닌 듯한 언어였다.

 

입사 후 2년 만에 나는 웹 기반의 차세대 제품을 만드는 부서로 옮겨갔다. 새 부서에서는 개발언어로 Java, Groovy, Angular 플랫폼이 제공하는 TypeScript를 사용했다. 부서 이동으로 개발언어만 바뀐 것이 아니었다. 개발환경이 완전히 갈아엎어졌다. 새 제품 개발은 이벤트 기반 프로그래밍(Event Driven Programming)으로 설계 방향을 잡았다. 서버와 데이터베이스 관리에 Java와 Groovy가 사용되었고, 사용자 인터페이스는 Angular로 구현되었다. 이후 Java와 Groovy는 Kotlin으로 대체되었다. 주절주절 하염없이 쓰인 Java 코드는 Kotlin으로 짧고 산뜻하게 작성되었다. Kotlin은 내 발에 잘 맞는 롤러스케이트 같았다. 타는 내내 즐거웠다.

 

ⓒ 2022. 이현주
Bochum/Germany

 

꽤 많은 개발 언어들로 밥벌이를 했다. 나의 경험에 비추면, 한 개발 언어의 기본을 제대로 이해했다면 다른 언어들도 금세 배울 수 있다. 따라서 얼마나 많은 개발 언어를 다룰 수 있느냐는 그리 중요하지 않다. 과제 해결에 적합한 개발 언어를 선별할 수 있어야 한다. 생선을 회로 뜰 때와 토막 칠 때 사용하는 칼이 다르듯 말이다.

 

요즘 젊은 동료들은 빠르게 코딩을 잘한다. 독일 대학에서 주로 Java나 C#을 배우고 입사한다. 메모리 관리 따위는 몰라도 개발도구를 사용하는데 거침이 없다. 단축키 써가면서 현란하고 능숙하게 일하는 모습에 입이 쩍 벌어진다. 문제는 문제(Bug)가 생겼을 때다. 문제가 생긴 곳을 들여다보기 전에 구글링부터 한다. 문제에 대한 해답을 검색해서 얻으려 한다. 이래서는 이 바닥에서 생존할 수 없다. 메모리 관리에 대한 이야기만 나오면 '매~직!'이라며 어깨 들썩이며 헛소리하지 말고, 자신이 쓴 코드의 보이지 않는 부분에서 무슨 일이 일어나는지 알아야 한다. C나 C++를 배워두면 보이지 않던 것이 보이기 시작한다. 기본이 다져져야 개발자로 즐겁게 오래 일할 수 있다.