F-Lab
🚀
깊이 있는 개발자 커뮤니티, 데브클럽에 함께 하세요

개발자에게 커뮤니케이션 스킬은 왜 중요할까?

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

“개발자는 커뮤니케이션 능력이 중요하다.”라는 말을 들어보셨나요? 이번 아티클에서는 커뮤니케이션 능력에는 정확히 어떤 것들이 있는지 알아보고 소통 역량이 중요한 이유에 대해서 알아보겠습니다.

 

 

커뮤니케이션이란?

커뮤니케이션은 “나의 머릿속에 있는 생각을 상대방에게 전달하는 것”입니다. 우리는 평소 대화를 통해 자신의 생각을 전달하고 있습니다. 일상 속 커뮤니케이션을 생각하면 쉬워 보이기도 합니다.

 

하지만 “상대방이 모르는 것”에 대해 전달할 때는 커뮤니케이션을 하는 것이 쉽지 않습니다. 나만 알고 있는 개념을 상대방에게 이해시키는 것은 어렵고도 정말 중요합니다. 커뮤니케이션 스킬이 부족하면 원활한 의사소통을 하지 못할 뿐만 아니라 서로 답답함을 느껴 부정적인 감정 경험을 할 수도 있겠죠.

 

 

커뮤니케이션 스킬이 왜 중요할까?

업무를 하다 보면 아래와 같이 “상대방이 모르는 것”에 대해 성명해야 할 상황이 많이 발생합니다.

  • 업무를 인수인계하는 상황
  • 다른 부서와 협업하는 상황
  • 업무에 대한 아이디어를 제안하는 상황

이런 상황에서 커뮤니케이션 스킬을 잘 활용하면 상대방에게 생각을 더 잘 전달할 수 있고, 지식 전달에 소요되는 시간을 단축시켜 업무의 효율성을 극대화할 수 있습니다.

 

이제 간단한 상황을 가정해 보면서 어떻게 커뮤니케이션 스킬을 활용할 수 있는지, 커뮤니케이션 스킬이 왜 중요한지 알아보겠습니다.

 

 

1️⃣ 온보딩

일반적으로 회사에 입사하면 온보딩이라고 부르는 신규 입사자 교육을 받습니다. 그 과정에서 기존 업무 R&R, 시스템 구성 등 전반적인 업무 프로세스를 전달받습니다. 온보딩을 진행할 때에는 대부분 구두로 진행하는 경우가 많습니다.

 

하지만 커뮤니케이션 수단 중 하나인 문서를 잘 활용하면 과정을 조금 더 효율적으로 만들 수 있습니다. 잘 정리된 온보딩 문서가 존재한다면 신규 입사자에게 한 사람의 시간을 들여 설명해 주는 대신, 문서를 통해 업무를 파악하게 할 수 있습니다. 동료는 그 시간에 자신의 업무에 집중할 수 있을 것이고 결과적으로 생산성은 향상될 것입니다.

 

물론 이러한 성과는 잘 정리된 문서가 있어야 가능합니다. 만약 문서의 내용이 잘 정리되어 있지 않다면 결국 정보를 충분히 전달받지 못할 것이고, 전달하는 시간이 늘어날 것입니다. 그래서 이런 내용을 잘 정리하기 위해서는 커뮤니케이션 스킬 중 문서화라는 스킬이 필요한 것입니다.

 

 

2️⃣ 채용 프로세스

채용 프로세스를 진행하는 과정에서도 커뮤니케이션 스킬을 활용할 수 있습니다. 이력서를 작성한다는 것은 자신을 회사에 판매하는 카탈로그를 만드는 것과 같습니다. 몇 장 안되는 종이에 자신에 대해 자세하게 표현하면서도 핵심만 어필해야 하기 때문에 문서화 스킬이 필요합니다.

이력서를 읽는 사람이 이력서의 내용을 더 잘 파악할 수 있게 배려해 줘야 합니다. 배려해 주는 방법으로는 기본적으로 깔끔한 양식 사용, 가독성 높은 폰트 사용, 적절한 문단 나누기 등이 있고, 또한 글을 잘 쓰는 것도 중요합니다.

 

또한 면접을 진행할 때에는 대화 스킬이 필요합니다. 면접관이 지원자에 대해 알고 있는 정보는 제출한 이력서에 있는 것들과, 이력서에 첨부된 것들이 전부입니다. 즉 면접관은 지원자에 대해 잘 알지 못합니다. 자신이 갖고 있는 경험과 생각을 최대한 잘 전달해야 면접관이 본인에 대해 더 정확한 평가를 할 수 있습니다. 그러기 위해서는 대화의 구성을 잘 설계하는 등 대화 스킬이 매우 중요합니다.

 

 

예를 들면 자신이 했던 프로젝트를 설명할 때에는 면접관에게 먼저 배경과 주제 등을 설명하고 어떤 프로젝트인지부터 이해시키면서 전체적인 그림을 머릿속에 그릴 수 있도록 도와줘야 합니다. 뛰어난 커뮤니케이션 스킬을 갖고 있다면 면접관에게 자신을 어필하는 과정에서 장점을 부각시킬 수도 있습니다.

 

 

3️⃣ 코드 작성시의 커뮤니케이션

코드를 통한 커뮤니케이션에서도 스킬이 필요합니다. 일반적으로 단순 사이드 프로젝트를 진행하는 경우에는 본인이 작성한 코드는 본인만 사용합니다. 자신이 작성한 코드는 작성자 본인이 코드의 의도를 잘 알고 있기 때문에 의도에 맞게 가져다 사용하는 데에 큰 문제가 없습니다.

 

다만 협업을 하는 경우는 얘기가 달라집니다. 코드를 가져다 사용하는 동료들은 어떤 의도로 각각의 클래스와 메소드를 짰는지 모를 가능성이 큽니다.

 

그래서 코드의 의미를 더 잘 전달하기 위해 주석도 달고, 개발한 내용을 문서화를 하기도 합니다. 물론 이런 것도 필요하지만 더 나아가 코드레벨에서도 내 코드를 읽는 사람이 의도를 잘 파악할 수 있도록 배려해 줘야 합니다. 아래에서 예시를 봅시다.

 

<span>// 0 = 없다, 1 = 있다 </span><br><span>int isExistUser(long userId);</span><br><span>boolean isExistUser(long userId);</span>

 

두 개의 코드에서 어떤 것이 의미가 더 잘 전달되시나요? 주석 덕분에 첫 번째 코드도 의도를 파악하는 것에는 큰 무리가 없어 보입니다.

 

두 번째 코드는 주석을 읽을 필요도 없이 메소드의 시그니쳐만으로도 메소드의 역할을 충분히 파악할 수 있다는 점이 큰 장점입니다. 메소드의 시그니쳐를 그대로 읽으면 이 userId를 가진 유저가 존재하느냐?에 대한 리턴 값으로 혹은 아니오로만 대답하고 있습니다. 그렇기 때문에 메소드의 입력값과 출력값의 의도를 충분히 유추할 수 있습니다.

 

하지만 첫 번째 코드의 리턴 값의 범위는 메소드 작성자의 임의대로 정해져있기 때문에 비교적 파악이 힘듭니다. 대략 0은 false, 1은 true를 의미한다 하더라도 혹시 모를 그 외의 숫자가 리턴될 가능성이 남겨져 있습니다. 하지만 리턴 타입이 boolean이라면 아니오 이외의 값이 나올 가능성이 원천적으로 차단됩니다.

 

또한 저런 코드는 메소드를 사용하는 사람의 코드에도 영향을 끼칩니다. 첫 번째 코드와 두 번째 코드를 가져다 쓰는 코드의 차이를 보자면 아래와 같습니다.

 

<span>if (isExistUser(userId) == 1) {</span><br><span>    // 유저가 존재한다</span><br><span>} if (isExistUser(userId)) {</span><br><span>    // 유저가 존재한다</span><br><span>}</span>

 

첫 번째 코드는 유지보수를 할 때 1이 어떤 것을 의미하는지 명확하지 않습니다. 즉 저 코드를 계속 유지보수한다면 1이 어떤 것을 의미하는지 대해서 찾아봐야 하는 수고가 든다는 것입니다. 그 의미 값에 대해 상수로 관리한다면 조금은 가독성이 향상되겠지만 그 상수를 관리하는 수고가 들게 되겠죠.

 

내가 짜는 코드의 의미를 전달하는 것에 대해 더 고민하면서 깔끔하게 짜려고 노력하는 것도 다른 개발자가 내 코드에 대해 이해하고 사용하는 데에 드는 시간을 줄여주는 배려이고, 이 또한 상대방이 내 의도를 이해하는데 걸리는 시간을 줄여주기 때문에 커뮤니케이션 스킬이라고 볼 수 있습니다.

 

 

4️⃣ 기술 공유

개발자는 컨퍼런스, 사내 세미나 등을 통해 지식을 공유하는 활동을 자주 하는 편입니다.

 

새로운 기술을 소개하는 상황이라면 “기존에 사용하던 기술에는 어떤 문제가 있었다” 같이 기존 기술에 대한 배경을 먼저 설명함으로써 기술에 대한 필요성부터 청중들에게 납득시킨 다음, “이 기술을 사용하면 그중에 어떤 점을 해결할 수 있다” 와 같이 기술에 대한 내용을 발표하는 등의 방식으로 청중들에게 더 잘 자신의 생각을 이해시킬 수 있는 커뮤니케이션 스킬이 필요합니다.

 

이처럼 커뮤니케이션 스킬을 활용할 수 있는 곳은 아주 많습니다.

 

 

5️⃣ 갑을 관계

갑을 관계에서는 상대방의 기분을 상하게 할 수 있는 커뮤니케이션이 자주 발생합니다.

 

예를 들면 업무를 부탁하는 사람과 부탁받는 사람이 있다면 여기서도 이해관계에 의한 갑을 관계가 존재한다고 볼 수 있습니다. 또한 어떤 회사는 입김이 더 센 부서와 입김이 약한 부서도 존재하며 이곳에서 눈에 보이지 않는 갑을 관계가 생길 수도 있습니다. 이러한 관계는 눈에 보이지 않을 뿐이지 각 부서의 구성원들은 이런 관계를 인지하고 있을 가능성이 높아 커뮤니케이션 스킬에 따라 상대의 기분을 상하게 할 수도 있습니다.

 

그렇기 때문에 항상 커뮤니케이션을 할 때에는 상대와 본인의 관계에 대해 고민해 보고, 어떻게 해야 상대방이 오해하지 않고 받아들일 수 있을까를 고민하며 커뮤니케이션을 해야 합니다.

 

 

6️⃣ 강압적인 커뮤니케이션

본인의 의도대로 일을 진행하기 위해 지위나 다른 요소들을 이용하여 강압적인 커뮤니케이션을 하는 경우가 종종 발생합니다.

 

하지만 좋은 커뮤니케이션은 상대가 자발적으로 내 의도에 맞게 행동하게 하는 것이 좋은 커뮤니케이션입니다.

 

강압적인 방식으로 커뮤니케이션을 한다면 상대는 이해되지도 않은 일을 강제로 하게 되면서 효율성이 떨어질 수 있습니다. 그래서 항상 상대방에게 자신의 의도에 맞게 일을 진행해야 하는 이유를 항상 납득시켜줘야 하고, 자신의 의견에 동조할 수 있도록 충분한 근거를 들어 설득해야 합니다.

 

또한 자신이 옳다고 깊게 믿고 있던 것이더라도 옳다고 주장하는 근거가 부족하다면 그 방식은 효율적이지 않은 방식일 수도 있습니다. 상대방을 납득시키는 과정에서 이러한 점들을 발견하며 자신의 주장에 대한 비효율성을 발견할 수도 있을 것이고 이를 통해 더 좋은 방향으로 의사결정을 하는 계기가 될 수도 있습니다.

 

이처럼 커뮤니케이션 스킬은 여러 상황에서 유용하게 사용되기 때문에 F-Lab에서는 커뮤니케이션 스킬에 대해 강조하고 있으며, 멘티들의 커뮤니케이션 능력을 키우기 위해 가이드하고 있습니다.

 

 

 

맺음말

언급한 사례 외에도 많은 커뮤니케이션 스킬이 존재합니다. 정보를 잘 전달하는 능력은 정말 중요합니다.

 

커뮤니케이션 스킬을 키우려면 정보를 전달할 때마다 좋은 의도 전달 방식과 전달받는 사람의 기분을 계속 고려하고 고민해야 합니다. 이 글이 개발자로서 역량을 쌓고 있는 분들께 도움이 되었기를 바라며 긴 글 읽어주셔서 감사합니다.

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수

멘토링 코스 선택하기

  • 코스 이미지
    Java Backend

    아키텍처 설계와 대용량 트래픽 처리 능력을 깊이 있게 기르는 백앤드 개발자 성장 과정

  • 코스 이미지
    Node.js Backend

    아키텍처 설계와 대용량 트래픽 처리 능력을 깊이 있게 기르는 백앤드 개발자 성장 과정

  • 코스 이미지
    Python Backend

    대규모 서비스를 지탱할 수 있는 대체 불가능한 백엔드, 데이터 엔지니어, ML엔지니어의 길을 탐구하는 성장 과정

  • 코스 이미지
    Frontend

    기술과 브라우저를 Deep-Dive 하며 성능과 아키텍처, UX에 능한 개발자로 성장하는 과정

  • 코스 이미지
    iOS

    언어와 프레임워크, 모바일 환경에 대한 탄탄한 이해도를 갖추는 iOS 개발자 성장 과정

  • 코스 이미지
    Android

    아키텍처 설계 능력과 성능 튜닝 능력을 향상시키는 안드로이드 Deep-Dive 과정

  • 코스 이미지
    Flutter

    네이티브와 의존성 관리까지 깊이 있는 크로스 플랫폼 개발자로 성장하는 과정

  • 코스 이미지
    React Native

    네이티브와 의존성 관리까지 깊이 있는 크로스 플랫폼 개발자로 성장하는 과정

  • 코스 이미지
    Devops

    대규모 서비스를 지탱할 수 있는 데브옵스 엔지니어로 성장하는 과정

  • 코스 이미지
    ML Engineering

    머신러닝과 엔지니어링 자체에 대한 탄탄한 이해도를 갖추는 머신러닝 엔지니어 성장 과정

  • 코스 이미지
    Data Engineering

    확장성 있는 데이터 처리 및 수급이 가능하도록 시스템을 설계 하고 운영할 수 있는 능력을 갖추는 데이터 엔지니어 성장 과정

  • 코스 이미지
    Game Server

    대규모 라이브 게임을 운영할 수 있는 처리 능력과 아키텍처 설계 능력을 갖추는 게임 서버 개발자 성장 과정

  • 코스 이미지
    Game Client

    대규모 라이브 게임 그래픽 처리 성능과 게임 자체 성능을 높힐 수 있는 능력을 갖추는 게임 클라이언트 개발자 성장 과정

F-Lab
소개채용멘토 지원
facebook
linkedIn
youtube
instagram
logo
(주)에프랩앤컴퍼니 | 사업자등록번호 : 534-85-01979 | 대표자명 : 박중수 | 전화번호 : 1600-8776 | 제휴 문의 : info@f-lab.kr | 주소 : 서울특별시 강남구 테헤란로63길 12, 438호 | copyright © F-Lab & Company 2024