[책 내용 정리] 육각형 개발자 (1)

유기훈·2025년 7월 27일

육각형 개발자 - 최범균

1장

개발이란

개발이란 구현 기술을 사용해서 코드를 작성하는 것 뿐만이 아니다.
코드를 작성하는 건 개발의 정말 일부분이다. 개발에는 프로젝트 일정, 요구 사항 분석, 위험 관리 등 여러가지가 있다. 이 책에서는 구현 기술, 설계 역량, 업무 관리와 요구 분석, 공유, 리드&팔로우에 대해 다룬다.

새로운 구현 기술 사용 != 성장
주니어일때는 새로운 구현 기술을 사용하는 것과 성장을 동일하다고 생각한다. 현 회사에서 새로운 기술을 사용하지 않는 것이 이직을 결심하는 계기가 되기도 한다. 하지만 새로운 구현 기술을 사용할 수 있는 기회는 언젠가 오고, 그 기회를 잡기 위해 스스로 준비를 하자.

2장 구현 기술과 학습

학습 대상

백엔드 개발자만 하더라도 ORM, Framework, RDBMS 및 각종 언어들을 학습해야 한다. 개발자가 익혀야 할 구현 기술이 너무 많다 보니 학습할 대상을 잘 선택해야 한다.

구현 기술을 학습하는데에도 전략이 필요하다.

  • 현재 사용 중인 기술
  • 문제를 해결하기 위한 기술

현재 사용 중인 기술은 당연히 학습해야 한다. 그리고 문제 해결을 위해서도 구현 기술을 학습해야 한다.

  • 당장 해결해야 하는 문제
  • 가까운 미래에 해결해야 하는 문제

당장 해결해야 하는 문제는 빠른 시일안에 해결할 수 있는 도구를 찾아서 익히고 적용해야 한다. 가까운 미래에 해결해야 하는 문제는 당장 서비스를 운영하는데 큰 문제는 없지만 곧 미래에 큰 장애가 발생할 확률이 높은 것들을 말한다.

기술 파기

개발자가 익혀야 할 기술이 많기 때문에 하나의 기술을 처음부터 끝까지 깊게 학습하기는 어렵다. 그러니 이렇게 하자.

  • 기술을 처음 익힐 때는 핸즈온이나 튜토리얼 문서로 빠르게 감을 익힌다.
  • 어떤 기술을 잘 활요앟려면 자연스럽게 손에 익을 정도가 되어야 한다. 그러니 따로 연습하거나 꾸준히 사용한다.
  • 필요할때마다 기술을 조금씩 더 깊게 학습한다.
  • 중요한 것은 더 나은 방법을 찾으려고 노력하는 것이다. 예를들어 자바를 처음 학습하면서 배열에 대해 학습하고 배열을 지금까지 잘 사용해왔다고 해서 리스트를 사용하지 않고, 배열 사용을 고집해서는 안된다.

학습 전략

  • 개발 도구들은 대체 기술이 나오면 기존 기술이 한순간에 사라지기도 한다.
  • 주력 기술을 집중적으로 학습하라. 주력 기술은 당장 또는 가까운 미래에 경제적 이익을 얻는 데 필요한 기술을 말한다. 시장 점유율이 높은 기술이라고 말할 수도 있다.
  • 여러 기술을 꾸준히 탐색하라. 지금 당장 사용하지 않더라도 주기적으로 요즘 어떤 기술이 주목받고 있는지 조사하고 필요에 따라 핸즈온이나 별도 학습을 해서 빠르게 경험해봐라.

유행에 상관없는 구현 기술

  • 유행에 따라 기술을 도입하면, 유지보수 문제가 발생한다. 나는 잘 알더라도 동료들이 해당 기술에 대한 지식이 없을 수 있기 때문이다.
  • 유행하는 기술만 쫓다 보면 기초 지식을 놓치기 쉽다.
  • 주니어 개발자라면 유행과 상관없는 지식을 1년에 1개 이상 학습하자. HTTP, 네트워크 프로그래밍 기초, 동시성 처리, 프로그래밍 언어 등

3장 소프트웨어 가치와 비용

소프트웨어 가치

소프트웨어 가치를 유지하려면 사용자를 붙잡아야 하는데 그러기 위해서는 세상의 변화에 맞춰 소프트웨어도 함께 변해야만 한다.

개발 비용

  • 클린 아키텍처 책을 참고해보면 소프트웨어는 시간이 지날 수록 개발 비용은 계속해서 늘어나는데 막상 코드는 몇 줄 추가되지 않는다고 한다.
  • 시간이 지날 수록 개발하기 난해해진다. 시간이 지날수록 간단해 보이는 기능조차도 초기에 만들 때보다 나중에 만들 때 개발 시간이 몇 배에서 수십 배 이상 소요되기 때문이다.
  • 소프트웨어를 제때 변경하고 싶다면 유지보수 비용을 낮출 수 있는 방법을 찾아야 한다.
  • 유지보수 비용을 낮추려면 다양한 방법을 적용해야 한다. 프로그래밍 패러다임을 알맞게 적용하는 방법이 있는데 이는 객체 지향, 함수형 프로그래밍을 알맞게 사용하여 변경 비용을 줄일 수 있다.

4장 코드 이해

개발자가 코드를 변경할 때 다음 2단계 과정을 거친다.

  1. 코드 이해
  2. 코드 수정

코드를 이해하는 시간을 줄이기 위해서는 2가지 역량이 요구된다.

  1. 코드를 제대로 이해할 수 있는 역량
  2. 쉬운 코드를 작성하는 역량

이해하기 좋은 코드를 만들면 코드를 이해하는 데 들어가는 시간을 줄일 수 있으며 결과적으로 개발 시간도 줄어든다.

코드 이해 도구

규모가 큰 코드를 분석할 때는 단순히 머리로만 이해하려 하면 금방 한계에 부딪힌다.

코드 시각화

코드를 분석하고 그 결과를 그림으로 그리면 수정할 위치나 수정 영향을 받는 범위를 찾을 때 큰 도움이 된다.

  • UML 다이어그램 중 액티비티 다이어그램은 코드의 실행 흐름을 이해하는데 도움이된다.
  • 클래스 다이어그램은 구성 요소 간 구조를 이해하는 데 도움이 된다.
  • 상태 다이어그램은 모델의 상태 변화를 이해하는 데 도움이 된다.

코드 출력

코드를 종이에 프린트하여 보면서 색을 칠하고 노트를 하면 더 이해가 잘 도니다.

이해하기 좋은 코드

이해를 돕는 몇 가지 코드 작성법

이름

  • 의미나 의도 또는 목적을 유추할 수 있는 이름을 사용하자.
  • 클래스 이름과 달리 필드 이름은 짧아도 의미가 잘 전달된다. Member 클래스의 '이름' 필드는 memberName이 아니라 name으로만 해도 이해가 된다.

중첩 if 최소화

if (조건) { 엄청 긴 코드 }
return;

위와 같이 작성하면 if를 타지 않을 때 어떻게 되는지 보기 위해서는 한참 스크롤을 내려야 해서 가독성이 좋지 않다. 이런 경우에는 아래와 같이 if 조건을 역으로 바꾸자

if (!조건) { return; }
엄청 긴 코드

아래와 같은 중첩 if 문은 가독성이 좋지 않다.

if ( A ) {
	B 조건 구함
    if( B ) {
    	E 실행
    }
}

위 코드는 아래와 같이 바꿀 수 있다.

if (!A) return;
B 조건 구함
if (!B) return;
E 실행

적절한 변수 사용 범위 정하기

  • 사용되기 직전에 정의
  • 짧은 루프 블록 안으로 한정
  • 짧은 if-else 블록 안으로 한정
  • 짧은 메서드로 한정

값 변경 최소화하기

변숫값이 중간에 계속해서 바뀌면 코드를 분석할 때 해당 변수에 담긴 값을 추적해야 한다.

profile
개발 블로그

0개의 댓글