avatar
ghoon99

주니어 FE 개발자의 “클린 아키텍쳐” 1회독 후기

찍먹인데 향만 맡아본 1회독.
20 days ago
·
6 min read

원문: https://ghoon99-dev.tistory.com/2

2024년 1월, FE 개발자로 일하던 회사를 퇴사한 후, 방구석에서 여유로운 시간을 보내던 나.

문득 책장에 꽂혀 있던 『클린 아키텍처: 소프트웨어 구조와 설계의 원칙』을 꺼내 들었다.


언젠가는 개발자로서 한 번쯤 읽어야 할 책이라고 생각해 사놓았던 이 책. 들고 다니면 뭔가 멋져 보일 것 같아 샀던 기억이 난다.

이 책은 주니어, 중니어(?), 시니어 때 한 번씩 읽으면 읽을 때마다 새로운 맛이 난다더라.

업무 중에도 프로젝트 구조와 모듈 설계에 관심이 많았던 나는, 언젠가 선택의 순간이 왔을 때 적절한 답과 근거를 제시하고 싶어 가볍게 읽어보기로 했다.


객체지향 패러다임: 익숙하지 않지만 흥미롭다

FE 개발에서는 객체지향 패러다임을 상대적으로 덜 접하게 된다.
그래서인지 SOLID 원칙을 외우는 것 외에 객체지향 코드를 작성하고 효용을 몸으로 느껴본 적이 별로 없었다.


특히 “의존성이 역전된다”라는 개념은 조금 더 명확히 이해하고, 예시를 들어 설명할 수 있을 때까지 탐구가 필요해 보였다.


무심코 쓰던 import 문: 의존성을 다시 보다

책을 읽으며 내가 작성한 수많은 import 문이 떠올랐다.

A.js >> import * from "B.js"

이는 단순히 자동완성으로 작성한 코드일 뿐이라 생각했지만, 사실 이는 모듈 A가 모듈 B에 직접적으로 의존하고 있다는 의미였다.

  • 모듈 간 강한 결합으로 인해, B의 변경이 A에 영향을 미칠 수 있다.

  • 많은 모듈에 의해 참조되는 모듈은 중요한 역할을 하며, 변경 시 신중해야 한다.

이를 통해 다음과 같은 질문을 스스로 던지게 되었다.

  • 내가 어떤 모듈과 의존 관계를 맺어야 할까?

  • 변경의 전파는 얼마나 이루어질까?

  • 나는 많은 모듈이 의존하는 책임 있는 모듈인가, 아니면 무책임한 모듈인가?

결론적으로, import 문 하나도 결합도와 변경 가능성의 관점에서 신중히 생각해볼 가치가 있다는 깨달음을 얻었다.


프로그래밍 언어가 사고를 지배하는가?

책을 읽으며 가장 뚜렷이 남은 인상은 “언어가 사고방식을 유도한다”는 점이다.
이는 유명한 사피어-워프 가설(Sapir–Whorf Hypothesis)을 떠올리게 했다.

예를 들어,

  • 일본어 사용자가 받침 발음을 어렵게 느끼는 것처럼,

  • 프로그래밍 언어도 특정 철학과 기능을 통해 개발자의 사고를 제한하거나 확장할 수 있다.

특히 JS/TS에서 인터페이스가 런타임에 존재하지 않는 점은 Java와 같은 언어를 이해하는 데 어려움을 주었다.
런타임에도 인터페이스가 존재하는 언어에서 의존성 역전을 구현하는 방식은 나에겐 낯선 개념이었다.

p.89: 동적 타입 언어는 소스 코드 의존성이 없으며 결합도가 낮은 시스템을 만들 수 있다.

이처럼 다양한 언어를 경험하는 것은 새로운 사고방식과 문제 해결법을 접할 수 있는 중요한 계기가 될 수 있다.


결론: 잘 이해했냐고?

사실 찍어 먹었지만 맛이 아닌 향만 맡은 느낌이었다.
다만, 무슨 개념을 중심으로, 어떤 관점으로 읽어야 할지 감을 잡았기에 다음에 읽을 땐 또 다른 인사이트를 얻을 수 있을 것이다.







React, TS, Node 생태계를 공부중인 FE 엔지니어입니다. 기술, 커리어 등의 이야기를 작성합니다.