LostCatBox

(책 리뷰) 코드 밖 커뮤니케이션

Word count: 1kReading time: 6 min
2025/07/11 Share

책을 읽은 이유

  • 문제점

    • 상황: 회사의 개발 방향과 다른 설계와 코드가 작성 되었고, 한달 이상 방치되어있었다.
    • 원인: 코드 작성 전, 좋은 의사소통을 하지 않았다.
  • 해결법:

    • 대상 : 개발자 및 회사의 구성원
    • 목적: 코드 뿐만 아니라 좋은 의사소통의 중요성 공유
    • 방안 :
      • 적절한 의사소통 주기 설정
      • 생각이 정리된 대화하기
      • “잘” 정리된 자료 작성하기

서론

성공적인 커뮤니케이션

  • 공통의 상징, 기호 또한 행동을 사용하여 아이디어나 정보를 공유하거나 교환함으로써 공동의 이해를 도모하는 것이다.

패턴

  • 패턴의 분류
    • 패턴
      • 특정한 또는 일반적인 문제를 해결하는데 그 효과가 입증된 재사용 가능한 솔루션
    • 안티패턴
      • 문제를 해결하는 올바른 방법인 것처럼 보이지만, 실제로는 이점보다 더 중대한 부정적인 결과를 초래 할 수 있는 것이다.
      • 패턴의 반대개념이 아니다
  • 패턴 사용 방법
    • 안티패턴은 피하면서, 패턴은 도입해본다.

시각적 커뮤니케이션

커뮤니케이션의 핵심

  • 독자 이해하기

    • 이유: 정보 전달에 대한 대상의 지식수준, 문화 등을 알아야 정확한 의사가 전달되기 때문이다.
  • 추상화 레벨 혼합 (안티패턴)

    • 설명: 추상화 레벨이 같지 않다면, 정보 전달이 명확해지지 않는다.

      추상화 레벨이란?

      • 하이레벨: 높은 추상화, 낮은 구체화 수준 - 시스템의 주요 구성 요소와 그 상호 관계 등
      • 로우레벨: 낮은 추상화, 높은 구체화 수준 - 코드의 구조에 대한 세부사항 등
    • 예시

      • 추상화 레벨이 다른 경우 : Servcie, Application
      1
      2
      3
      flowchart LR

      A[유저 Service] ---> B[배송 Application] ---> C[배송 Service]
      • 추상화 레벨이 같은 경우 : Application

        1
        2
        3
        4
        flowchart LR

        A[유저 Application] ---> C[배송 Application]
        A ---> B[결제 Application]
  • 표현의 일관성
    • 설명: 문서 내에서 다이어그램 등을 제시하고, 인용해라.
    • 이유: 독자의 인지 부하를 줄인다.
    • 효과: 독자가 글을 이해할 때 비용이 줄어든다.

난잡함 정리하기

  • 색의 과부과 (안티패턴)
    • 의미: 색을 너무 여러 개 사용한다.
    • 이유: [같은 색 = 같은 의미]로 오해 소지 존재
    • 해결법: 선택한 색상을 통해 무엇을 전달하려는지 생각해야 한다.
  • 상자 속 상자 속 상자 (안티패턴)
    • 의미: 관계를 나타낼 때, 과도한 상자를 사용한다.
    • 이유: 난잡하고 한눈에 들어오지 않는다.
    • 해결법:
      • 주요 방법
        • 상자를 합침
        • 상자를 텍스트로 대체함
      • 예시
        • A 망에 속한 B 망에 속한 C 망에 속한 D를 표현할 때 -> "A-B-C 망에 속한 D의 경우"로 표현
  • 관계 거미줄 (안티패턴)
    • 의미: 요소와 요소를 잇는 화살표가 2D그림으로 계속 겹침
    • 이유: 한번에 이해하기 어렵고, 오해소지 존재
    • 해결법: 직선이 아닌, 직각선 사용 및 넘어가는 선 사용
  • 텍스트 균형 잡기
    • 의미: 텍스트 길이와 위치가 적당히 있어야 한다.
    • 이유: 텍스트가 너무 길거나 도형에서 너무 많이 있다면, 독자들의 집중력 감소
    • 방법:
      • 메모 사용
      • 주석 사용

접근성

  • 색상에 의존한 방치되어있었다 (안티패턴)
    • 의미: 색상에 의미를 부여하여 사용한다.
    • 이유: 색상을 구별할 수 없을 경우, 구별할수없고, 색맹들도 읽기 힘들다
    • 해결책:
      • 패턴 그림을 활용한다.
      • 대비를 활용한다.
      • 기호와 색상의 합을 활용한다.
    • 예외: DDD 같은 경우, 색상의 의미를 명확하게 활용하고, 범례를 제공한다.
  • 범례를 추가하자
    • 의미: 표준 다이어그램 등을 활용할때는 범례를 제공하여, 정보가 훼손되지 않도록 해야 한다.
  • 레이블 적절히 사용하기

    • 의미: 화살표 위, 상자 위 등등 적절한 레이블 등을 달아서 이해하기 쉽도록 제공

    • 예시:

      • sequenceDiagram
            Alice->>John: Hello John, how are you?
            John-->>Alice: Great!
            Alice-)John: See you later!

내러티브

  • 큰 그림이 먼저다
    • 의미: 반드시 가장 추상화된 그림을 먼저 제시하고, 구체적인 그림으로 소통해야한다.
    • 이유: 독자들이 어느 부분을 설명하고 있는지 명확히 이해된다.
  • 다이어그램 흐름을 기대에 맞추자
    • 의미: 위에서 아래, 왼쪽에서 오른쪽으로 다이어그램을 배치한다.
    • 이유: 사람이 이해도 향상
  • 명확한 관계
    • 의미: 단방향으로 관계를 나타내는 것이 좋고, 화살표 점선 등을 활용하는 것이 좋다. (범례 필수)
    • 이유: 양방향을 사용할 경우, 요청-데이터를 분리하지 않고 하나로 작성 해야 함. 불명확해짐

표기법

  • 아이콘으로 의미 전달하기 (안티패턴)
    • 의미: 회사 로고, 회사 상품의 구체적 의미를 가진 아이콘을 의미 전달에 사용
    • 이유: 독자가 모를 가능성 존재한다.
    • 해결법: 보편적인 그림으로 전환하거나, 주석, 범례 등을 첨부한다
  • 특별한 이유 없이 UML 사용하기 (안티패턴)
    • 의미: 모든 자료 정리를 UML로 작성
    • 이유: 모든 독자에게 UML 지식을 기대할 수 없으며, 범례 제공 또한 비용이다.
    • 해결법:
      • 독자와 목적에 맞게 다양한 다이어그램 사용
  • 동작과 구조 뒤섞기 (안티패턴)
    • 의미: 동작과 구조를 그림에 혼합해서 표기
    • 이유: 구조와 동작은 다른 것이다. 이를 혼합할 경우 독자가 해석할 때 복잡도가 올라간다.
    • 해결법:
      • 동작과 구조의 그림을 분리하여 작성한다. SRP처럼 하나의 그림에는 하나만 표기한다.
      • 예시
        • 전반적인 시스템을 추상적으로 적어둔 구조 다이어그램
        • 자세한 행동 데이터 흐름도(요청, 응답 명시)
  • 예상에 어긋나기 (안티패턴)
    • 의미: 보편적인 기호를 혼자 다르게 쓰지 마라.
    • 이유: 오해하기 쉽다.
    • 예시:
      • 빨간색: 부정, 멈춤
      • 초록색: 긍정, 진행

문장의 구성

  • 가독성이 떨어지는 다이어그램 (안티패턴)
  • 스타일 커뮤니케이션 (안티패턴)
  • 불분명한 문장 구성 (안티패턴)
  • 시각적 균형 만들기 (안티패턴)

멀티모달 커뮤니케이션

서면 커뮤니케이션

  • 단순한 언어
    • 의미: 단순하고 단결하고 보편적인 언어 사용
    • 예시: 유비쿼터스 언어
    • 방법: 어휘집 작성
  • 축약어 지옥 (안티패턴)
    • 의미: 자신들만의 축약서 작성
    • 이유: 전문가와 비전문가 간의 오해 및 이해 불가, 유지보수 불가
    • 해결책:
      • 축약어 사용 금지
      • 범례, 각주 제공
  • 구조화
    • 의미: 명시적으로 문제 작성 및 보충 논거 트리 구조 작성하기
    • 이유: 글의 목적 및 논리를 쉽게 파악가능
    • 방법: 논리 트리 작성 및 텍스트화
  • 기술 문서 작성 구문
    • 의미: 기술 문서 작성 시 주의할 점
    • 주의할 부분
      • 강동사
      • 짧은 문자
      • 명확한 문단
      • 일관적인 어휘

언어적 및 비언어적 커뮤니케이션

  • 메시지 인코딩
    • 의미: 소통할 때 메시지를 보내는 입장에서 태도
    • 방법:
      • 수용 예언
      • 온전히 상대방에게 집중
      • 보디 랭귀지
  • 메시지 디코딩
    • 의미: 소통할 때 메시지를 받은 입장에서 태도
    • 방법:
      • 인지 편향하지 않기
      • 확증 편향하지 않기
      • 현재에 집중하기
      • 문화차이 인식하기
  • 영향력과 설득
    • 의미: 설득할 때 필요한 방법들
    • 방법:
      • 첫 줄 문장을 가장 중요한 메시지를 먼저 제시한다.
      • 지식수준
      • 의도적 침묵
      • 선택지 제공
      • 반복
      • 인지 재구성 : 불쾌하거나 불만족스러운 사건 상황을 다른 생각으로 유도하는 질문한다.

수사학 3요소

  • 에토스
    • 화자의 신뢰성과 신빙성
  • 파토스
    • 감정적 호소
  • 로고스
    • 논리적 이성적인 논거

지식 전달하기

지식 관리의 원칙

  • 프로젝트보다 프로덕트
    • 의미 : 프로덕트 기준으로 정보 관리해야함
    • 이유 :
      • 프로젝트 기준관리는 마감 시, 자료 관리 안 될 가능성 높음
      • 프로덕트 기준으로 할 경우, 프로젝트와의 연관 정보만 챙기고, 프로덕트가 자신의 자료 관리함
  • 텍스트보다 추상화
    • 의미: 일부 정보는 텍스트보다 추상화하여, 시각적으로 제시하자
    • 이유: 독자와 효과적인 커뮤니케이션 방법
  • 관점 중심 문서화
    • 의미: 소통 대상과 이유에 초점을 맞추는 것
    • 방법:
      • DRY: 반복하지 않기
      • 다이어 그램 계층화: 여러 개의 레이어로 작성하여, 수정사항이 생겼을 경우 하나만 변경되도록 OCP 원칙 지킨다.
      • 관점 저장 : 메타 데이터, 태그, 참조를 문서에 기록해놓는다.

지식과 사람

  • 피드백은 일찍 자주 받자
    • 의미: 전략 결정 시점 등등 체크 포인트를 만들어서 피드백을 받는다.
    • 이유: 결정 이후 과정들로 넘어가면 비용이 증가함
  • JIT 아키텍처
    • 의미: 당장 필요한 기능만 개발하도록 하고, 미래에 무엇이 필요할지 예측하지 않는 코딩윈칙
    • 이유: 예측이 실현되지 않을 수 있기 때문에 현재 노력 낭비 가능성 높음

모범 사례

  • 아키텍처 결정 레코드 ADR
    • 의미: 의사결정 프로세스에서 사용되는 아키텍처 의사결정 및 근거의 기록이다.
    • 이유: 왜? 에 대한 질문에 답을 정해놓아서, 미래의 비용을 줄일 수 있다.
    • 목차(ADR 템플릿):
      • 제목
      • 식별자
      • 상태
      • 맥락
      • 평가 기준
      • 선택지
      • 결정
      • 예상 결과
      • 논의
CATALOG
  1. 1. 책을 읽은 이유
  2. 2. 서론
    1. 2.1. 성공적인 커뮤니케이션
    2. 2.2. 패턴
  3. 3. 시각적 커뮤니케이션
    1. 3.1. 커뮤니케이션의 핵심
    2. 3.2. 난잡함 정리하기
    3. 3.3. 접근성
    4. 3.4. 내러티브
    5. 3.5. 표기법
    6. 3.6. 문장의 구성
  4. 4. 멀티모달 커뮤니케이션
    1. 4.1. 서면 커뮤니케이션
    2. 4.2. 언어적 및 비언어적 커뮤니케이션
    3. 4.3. 수사학 3요소
  5. 5. 지식 전달하기
    1. 5.1. 지식 관리의 원칙
    2. 5.2. 지식과 사람
    3. 5.3. 모범 사례