개발자의 의사소통 능력
개발자의 의사소통 능력
개발자의 의사소통 능력은 코딩실력보다 중요하다. 이미 여러 번 했던 이야기다. '개발자의 생명은 커뮤니케이션'이라는 칼럼에서 개발자의 의사소통이 정확히 무엇을 의미하는지도 설명했다. 이번 글은 그 내용의 확장판이다. 개발자가 좋은 의사소통을 하기 위해서 기억해야 하는 내용을 설명한다.
1. 어머니에게 말한다고 생각하라
개발자 10명 중에서 8명은 상대가 말을 들을 준비가 되었는지 헤아릴 줄 모른다. 자기 머리 속에 있는 생각을 상대방이 똑같이 하고 있을 거라고 착각한다. 자기 흥에 겨워 이야기하지만 듣는 사람에게는 의미없는 소음에 불과하다. 본론을 꺼내기 전에 반드시 기본적인 문맥과 개념을 설명하고, 상대가 이야기를 들을 준비가 되었는지 살피면서 자세한 이야기로 넘어가는 것이 커뮤니케이션의 기본이다.
상황이나 상대방에 따라 이야기의 형식과 내용을 달리하며 적절하게 말 할 수 있는 능력을 키우려면 자신의 이야기를 듣는 상대가 어머니라고 생각하면 좋다. 어머니에게 새로 작성한 코드의 내용이나 머릿속에 그득한 생각을 (기본적인 문맥과 개념에 대한 설명없이) 묘사할 수 있겠는가? 그렇게 하면 어머니는 그대의 등짝을 때릴 것이다. 듣는 사람을 부드럽게 자신이 원하는 대화의 문맥 속으로 끌어들이는 능력. 그것이 커뮤니케이션 능력의 핵심이다.
2. 구현과 인터페이스, 구체와 추상, 디테일과 개념을 분리하라
초, 중급 개발자는 종종 디테일의 늪에 빠진다. 자기 코드가 성취한 내용을 드러내고 싶은 욕망이 들끓기 때문에 누가 말을 걸면 준비과정 없이 디테일로 다이빙을 한다. 개념과 추상을 이용해서 대화하는 법을 익히지 못했기 때문에 자세한 구현(implementation)을 이용해서 말하고 설명한다.
(...)
3. 자기방어는 독약이다
개발자 10명 중에서 2~3명 정도가 이런 습관을 가지고 있다. 말을 걸면 무조건 자기방어를 한다. 질문의 의도와 아무 상관이 없다. 내가 질문한 목적은 프로젝트 관리 차원에서 궁금해서, 혹은 문제가 있으면 도와주고 싶어서 질문을 한 것인데, 필요한 대답은 하지 않고 자기에게 방해가 되었거나 될 지도 모르는 일을 끝없이 나열한다.
(...)
4. 듣는 힘을 키워라
커뮤니케이션 능력의 80%는 상대의 말을 알아듣는 능력이다. 나머지 20%는 자기 생각을 상대가 이해할 수 있게 표현하는 능력이다. 초보 개발자일수록, 혹은 지위가 낮을수록 듣고 이해하는 능력이 중요할 것 같지만 사실은 정반대다. 시니어 개발자일수록, 그리고 회사에서의 지위가 높을수록 다른 사람의 말을 듣고 이해하는 능력이 생명이다.
(...)
5. 웅얼거리지 마라
(...)
6. 추상과 구체의 변증법
(...)
앞에서 추상과 구체를 구분해야 한다고 말했지만, 새로운 개념을 설명할 때는 추상만으로 부족하다. 추상에서 구체로, 다시 구체에서 추상으로 범주를 반복해서 넘나드는 변증법이 필요하다. 구체의 영역으로 내려왔을 때 디테일의 늪에 빠지는 것은 곤란하지만, 그렇다고 해서 구체를 무시하고 추상만으로 이야기하는 것은 한계가 있다. 적절한 예와 비유, 그리고 개발자에게는 간단하게나마 코드를 보여주는 것이 필요하다.
7. 브리또의 역설
극도로 추상적인 개념인 모나드를 브리또 빵에 비유해서 설명하다가 폭망한 이야기는 업계의 전설이다. 자바스크립트의 거장인 더글라스 크록포드 같은 사람도 이런 저런 예를 들어 모나드를 설명하다가 스텝이 꼬이면서 망한 전력이 있다. 최근에 한빛에서 번역되어 나온 닐 포드의 '함수형 사고'도 비슷하다. 닐 포드가 함수형 패러다임을 설명하기 위해서 동원한 예가 오히려 이해를 가로막는다는 독자들의 불만이 적지 않다.
(...)
원문 링크 : http://www.zdnet.co.kr/column/column_view.asp?artice_id=20160718075808