brunch

You can make anything
by writing

C.S.Lewis

by 엄태형 Aug 15. 2017

서로의 코드를 맞춘다는 것

대한민국 개발자로 산다는 것

컴퓨터가 이해할 수 있는 코드는 바보라도 작성할 수 있다.
훌륭한 프로그래머는 사람이 이해할 수 있는 코드를 작성한다.
- 마틴 파울러


‘코드’라는 용어는 참으로 독특하다.

소스코드, 아스키 코드, 음악 코드, 감성 코드, 할인 코드, 드레스 코드, 개그 코드, 대화 코드 등 IT 분야와 일상 속에서 두루 많이 쓰이는 단어이면서도 어디에 갖다 붙여도 어울릴 것 같은 속성을 지니고 있다. 코드는 '규약이나 관례, 정보를 나타내기 위한 기호체계'라는 사전적 의미에서도 내포하듯 우리 삶 속에 깊이 관여하고 있음을 알 수 있다.


"야, 이걸 코드라고 짠 거야? 버그투성이에다가 생각은 하고 짠 거야? 이렇게 코드가 안 맞아서야 어떻게 같이 일을 해!"


처음 회사에 들어왔을 때 함께 일하는 선배가 한 말이다. 선배의 말에서는 총 2번의 '코드'라는 말이 쓰였는데, 앞에 말한 '코드'는 흔히 개발자가 작성한 소스코드를 의미하고 뒤에 나온 '코드'는 사람과의 관계에서 사용된다. 우리가 평소에 쓰는 '누구와 코드가 맞다'라는 말은 흥미나 관심사가 맞고 말이 통하는 사람을 가리킨다고 보면 되는 것이다. 그러니 위에서 선배가 한 말은 "네가 개발한 소스도 엉망이고 너와 일하는 방식도 잘 안 맞아"라는 의미로 보면 된다.


여느 신입사원처럼 나도 회사에 입사해서 처음에는 잘 적응하지 못했다. 열심히 개발하고 스킬을 배울 요량으로 한껏 부풀어 있었고,대학시절에 배운 프로그래밍 실력만 믿고 실무에 달려들었으니 의욕이 앞섰던 것도 사실이다.다만 다행스러웠던 점은 내가 전공자라는 점과 프로그래밍에 관심이 많아 약 1년 후에는 좀 더 제대로 된 코드를 짜고 인정도 받았다는 점이다. 그러나 여전히 사람 사이의 코드를 맞추는 일이 숙제로 남아 있었다. 얼핏 보기에 개발자에게는 기계와 대화하는 능력이 더 중시되는 듯하지만 실무를 경험하다 보면 사람과 대화하는 능력이 중심임을 깨닫게 된다. 결국, 우리가 하는 일은 고객과 끊임없이 의사소통하고 동료들과 의논하며 그 결과를 코드로 구현하는 일이다.


누군가와 '코드가 맞다'라는 건 결국 우리 사이에 공통분모가 존재하고 가치관이 비슷하며 서로 통한다는 의미가 아닐까 싶다.내가 던진 썰렁한 농담에도 웃어주는 개그 코드, 클래식을 좋아하는 음악 코드, 구수한 된장찌개를 좋아하는 음식 코드까지 함께 나눌 수 있는 사람이 있다면 얼마나 좋은가? 이런 사람과의 만남은 비단 궁합이 잘 맞는 배우자를 선택할 때만 통용되는 것만은 아니다. 직장 내에서 프로젝트를 수행하면서도 마치 퍼즐 조각을 끼워 맞추듯 코드가 맞는 사람과의 협업은 즐겁다. 내 인생의 콘센트에 코드를 꽂듯, 합이 잘 맞는 사람들과 만나고 인생을 즐기는 일도 멋진 일이 아닌가?


회사라는 조직 역시 서로 다른 코드를 가진 사람들의 합이다.

서로의 다양성과 개개인이 가진 개성은 존중받아야 한다.하지만 경험한 바에 의하면 회사라는 조직은 매끄러운 흐름을 이어가기 위한 긴 호흡을 가진다.즉, 서로 다른 개체 간의 생각을 획일화하고 비전이라는 지향점에 도달하는 과정에서 발생하는 의견 충돌을 가급적 없애려고 한다. 같은 장면을 보더라도 각자의 가치 판단 하에서 누구는 상황을 지양하려 하고 누구는 지향하려 하지만, 이런 다양성이 인정되지 않는다는 점에서 개성은 포기되는 것이 현실이다. 조직이라는 틀에서 보자면 개인의 코드는 억지로 맞춰져야 하는 수단에 불과하다. 이는 내 자신을 포기해 가면서 전체의 발걸음에 맞춰야 한다는 답답함으로 다가왔고, 내 안의 속내를 온전히 드러내는 것을 어렵게 했다.



다양한 악기를 포용하는 오케스트라에서는 각자의 음색을 살리고, 서로의 화음이 조화로워야 감동을 주는 소리를 만들어 낼 수 있다. 단 하나의 악기만 어울리지 못해도 전체의 음색이 불협화음으로 변질된다. 악기 저마다의 음색과 특성을 최대한 살리고, 그 다음에 조회를 꾀할 때 독특한 음색과 창조적인 기법들이 음악 속에 묻어난다.마찬가지로 다름이 인정되지 않는 획일화된 조직사회에서는 창의적인 사고는 발현되지 않는다.


가교 밑을 바삐 지나는 자동차들, 마주 오는 사람과의 만남을 가능하게 하는 육교 위 풍경처럼 단 한번의 만남을 가능하게 하는 모든 만남이 우연을 가장한 필연에서 연결되듯, 인연을 위해 서로를 잇는다는 것은 사람이 만나는 다리를 놓는다는 것일 수 있다. 나처럼 관계에 서툴고 타인에게 감정을 내어주기 힘든 사람은 만남이 언제나 떨림으로 다가오지는 않는다. 예정되지 않은 만남은 언제나 한 발짝 뒤로 물러서게 한다. 그래서 나에게는 누군가와 '코드를 맞춘다'는 것이 쉽지 않은 험난한 과정이었다.


누군가와 '코드가 맞지 않는다'는 말은 같은 것을 보면서도 달리 해석한다는 것이고,삶을 바라보는 방향이 다르다는 것이며, 결국 말이 통하지 않는다는 뜻으로 다가온다. 오랜 시간 함께 일하면서도 서로의 간극을 좁히지 못해 감정의 에너지를 쏟아야 하고, 결국 우린 서로 다르다는 것만 확인하는 과정이 된다. 그런 면에서 어떤 문제가 발생했을 때 최소한 오류 로그라도 남겨두는 컴퓨터가 사람보다 나아 보일 때가 있다. 실력은 있다고 하지만 매번 불편한 마음을 감수하면서까지 감싸 안을 수 있을까? 동료들과 코드가 이렇게 안 맞아서야 조직생활을 오래 지속되기 힘들다. 이 경우에는 기타 코드를 쉬운 것부터 힘이 필요한 어려운 것까지 순서대로 잡으면서 익히듯 어느 정도 기교를 갖출 때까지 순서대로 노력하는 과정이 필요하다.


우린 상대방의 코드를 존중해줄 준비가 돼 있는가?



누군가가 작성한 소스코드를 보면 그 사람이 보인다.내가 모르는 개발자가 짜고 간 코드에는 그 사람이 남아있다.구체적인 의도와 친절한 설명이 있는 좋은 코드도 있는 반면 다른 사람들이 곤혹스러울 정도로 읽기 힘든 나쁜 코드도 있다. 

나쁜 코드는 언제고 리팩터링 되어 제거되기 마련이다. 그렇기 때문에 우린 좋은 흔적을 남기기 위해 노력해야 한다.프로젝트를 떠나도 오래 기억될 훌륭한 개발자는 남아 있는 어떤 개발자가 봐도 이해할 수 있는 코드를 남기고 간 사람이다.



서로의 코드를 맞추는 과정에서 대화는 소통의 기본이 된다. 자신의 주장만을 강요하고 타인의 생각을 묵살하는 것은 원활한 호흡을 어렵게 한다. 소스코드를 작성하는 과정에서도 소통은 필요하다. 개발자는 코드를 공유하고 리뷰하며 소통한다. 이런 소통 방식이 오류를 줄여주고 점차 완벽에 가까운 코드를 만들어내듯 인간관계에서의 복잡한 문제 역시 진심 어린 대화를 통해 오해는 줄어들고 관계는 원만해진다.


내가 던진 농담에 웃어줄 수 있는 배려가 있는 사람이 향기롭다. 호감 가는 사람이라는 말은 이 배려가 좀 더 몸에 밴 사람이다. 나와 가치관이 통하고 같은 공간을 공유하는 것이 즐거움으로 다가오는 사람과의 만남은 언제나 가슴 벅찬 일이다. 자신에게 한번 물어보자. 나는 누군가와 쉽게 코드가 맞는 사람인가?


개발자에게 코드는 잠재력을 끄집어낼 수 있는 열쇠이며, 사람 사이의 코드는 마음을 이어주는 다리가 된다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari