한빛미디어의 후원으로 책을 받아 작성합니다.
1. 서론
프론트엔드 개발자가 된지 1년이 다 되어가는 지금, 무엇을 잘해야 잘하는 개발자라고 말할 수 있는지에 대해 고민하게 된다. 내가 '잘'한다고 생각하는 기준이 내가 되고자 하는 개발자의 모습이라고 생각한다. 하지만 잘하는 개발자라는 것은 한마디로 정의하기가 참 어려운 것 같다.
내가 중요하게 생각하는 역량을 정리하고 더 잘하는 개발자가 되기 위한 방법을 ‘더 나은 프로그래머 되는 법’에서 찾아보고자 한다.

책 서문에서는 ‘처음부터 순서대로 읽어도 좋고 원하는 장부터 선택해 읽어도 좋다. 자신에게 가장 적절해 보이는 장부터 읽기 시작하라’고 나와있다. 관심있는 챕터들을 골라 읽을 수 있어 이동시간 틈틈히 읽기 편리했다.
이 책은 5개 부로 나뉘어져있는데, 그 중 인상깊었던 챕터들을 소개해보고자 한다.
2. 본론
1부 you.write(code)
12장 복잡도 다루기
소프트웨어 복잡도를 결정하는 원인은 크게 3가지로 블롭(blob), 라인(line) 사람이다.
- 블롭(Blob, binary large object) : 블롭이란 커다란 파일 혹은 바이너리 데이터를 지칭한다. 소프트웨어 복잡도는 블롭의 크기에 따라 자연스럽게 증가한다. 하지만 크기 자체가 문제가 되는건 아니다. 요구사항에 따라 요구사항을 만족시키기 위한 큰 코드가 필요하기도 하지만 중요한건 이 코드를 어떻게 구성하는가 하는 점이다. 즉, 크기를 어떻게 분배하는지가 핵심이다.
유지 보수하기에 더 간단한 구조로 나누어 하나의 일만 처리하는 응집도가 높은 모듈로 분리해야한다. 겉보기에 단순해 보이는 것이 아니라 실제로 간결해지도록 설계해야한다. - 라인 : ‘No code is an island’(혼자인 코드는 아무데도 없다). 복잡도는 각 블롭 안에서 홀로 커진 것이 아니라 블롭을 라인으로 연결하는 과정에서 증가한 것이다. 블롭들 사이에 연결로 블롭들간의 결합도가 불필요하게 증가하면 시스템이 경직되진다.
- 사람 : 블롭과 라인은 스스로 만들어지지 않는다. 시스템의 복잡도는 블롭과 라인의 구조를 책임지는 사람에게 있다.
복잡도를 줄일 수 있는 유일한 방법은 소프트웨어에 책임감을 가지고, 적절하지 않는 구조로 코드를 밀어넣는 상황을 피하고자 노력하는 것이다. 이 문장이 마음에 와닿았다. 개발을 하면서 컴포넌트, 함수가 중첩되거나 기능이 분산되는 케이스가 발생하는데 이를 해결할 수 있는건 결국 개발자이다. 긴박한 업무 속에서도 하나의 역할이 하나의 부분에만 위치하도록 신경쓰고 리팩토링하는 역량이 필요한 것이다.
2부 연습을 통해 완벽해진다
16장 간결하게 하기
- 좋은 간결함
- 코드 사용자가 불필요한 코드를 작성하지 않도록 복잡한 부분을 내부에 포함하는 것
- 요구 사항을 충족시키는데 필요한 만큼의 코드만 작성
- 잘못된 간결함
- 작성하고 있는 코드에 대해 충분하게 생각하지 않고 ‘주요 경우(main case)만 처리하여 오류를 내재
높은 응집도와 낮은 결합도를 만들어내는건 참 어려운 것 같다. 프로그래밍에서 ‘간결함’ 이라는 것은 정해진 공식이 없는 것 같다. 충분히 고민하고 명확한 가설을 바탕으로 짜여진 코드를 작성하기 위해서는 다양한 문제상황을 접하고 구현해보고 팀 내 규칙에 따라 피드백 받는 경험이 쌓아나가야한다.
17장 머리 쓰기
코딩을 기계적으로 해서는 안된다. 머리를 쓰라!
멍청한 코드를 작성했다는 사실을 깨닫거나 바보같은 설계임을 인식했더라도, 무력함을 느끼지 말아야한다. 실수를 인정하고 더 나은 방향을 찾는 태도를 가져야한다. 실패를 인정하고 실수를 바로잡는 용기를 가져야한다.
18장 변하지 않는 것은 없다.
코드는 변해야한다. 어떠한 코드도 완벽할 수는 없다. 제품 중에 '불변'의 코드가 있다면 그 제품은 썩어버릴 것이다.
- 용감한 수정
- 17장에 이어서 18장에서는 수정을 대하는 올바른 태도를 이야기하고 있다. 우리는 실패할지도 모르고 잘못될지도 모르지만, 코드를 정상적인 상태로 되돌릴 수 있으므로 다시 시도하면된다.
- 태도 바꾸기
- 건강한 코드 수정을 위해서는 올바를 태도가 필요하다. 코드 품질을 향상시키기 위해서는 팀, 개인 모두 변화와 개선을 두려워하지 말아야한다.
- 싸워야 할 때를 가려라
- 모든 것이 변하기 쉬운 것언 아니기에, 기술 부채는 일정량 존재한다.
시도하는 것은 부끄러운 일이 아니며 실수로부터 항상 배울 수 있다. 첫 회사일을 하면서 다른 팀원들에 비해 코드 퀄리티가 부족하다고 느껴질 때마다 힘들었다. 부족함을 많이 느꼈다. 답은 하나였다. 더 많은 주의를 기울이고 생각하면 된다. 그리고 잘못된건 바로잡고 수정하면 된다. 피하지 말자.
4부 연습을 통해 완벽해진다
31장 ‘더 열심히’보다는 ‘더 현명하게’
더 생산적인 프로그래머가 되기 위한 방법이다.
- 다른 사람의 일로 만들라
- 어떤 작업 진행 방법을 다른 사람이 알고있다면 직접 해결하려 하지말고 그의 작업 목록에 올려줘라
- 해야 하는 것을 하라
- 적절하거나 시간을 들일 가치가 있는 작업을 해라
- 예) 리팩토링과 단위 테스트는 필요하지만 작은 프로트타입이나 만들어보고 버릴 용도의 코드라면 나중으로 미뤄드는 편이 낫다.
- 거칠더라도 빠르게 해결하라
- 여러 설계 방안 가운데 어떤 것을 선택해야할지 결정할 수 없을 때에는 최선책을 골라내기 위해 많은 시간을 소모하지마라. 대신 간단하게 구현해보고 테스트해보며 적절한 해답을 찾아가라
- 작고 간결하게 유지하라
- 코드의 설계를 가능한 작고 간결하게 유지
언젠가 발생할 가능성이 있는 기능을 미리 만들어두는 것은 더 어렵고 어리석다.
주어진 상황에서 필요한 작업을 하면서도 과도하게 모든 상황을 고려하지 않는 지점을 찾는게 어려운 것 같다.
3. 결론
책을 읽으면서 가장 많이 든 생각은 '나만 고민하던 내용이 아니었다'는 것이다. 프로그래머라면 누구나 한번 쯤 해본 고민들을 다양하게 담고있어 새해를 시작하는 지금 책을 읽으면서 앞으로 1년간 어떤 역량을 기를지 어떤 방향으로 성장할지 다짐할 수 있었다.
지금 내가 생각하는 잘하는 개발자라는 것은 '명확한 코드를 주어진 시간 내에 구현하며 시도을 두려워하지 않는 개발자' 이다. 일의 우선순위를 파악하며 필요한 기능들을 구현하고, 더 나은 코드로 점진적으로 개선해나가는 것이다. 이런 개발자가 되기 위해서 효율적으로 업무를 분류하고, 명료한 컴포넌트를 설계하기 위해 고민하고 공부할 것이다.
올해가 마무리 될때 내가 얼마나 역량을 길렀는지도 수치화 해보는 시간을 가져야겠다.
'후기' 카테고리의 다른 글
| "[FE Ground] AI × Front-End: 코딩의 미래를 묻다." 밋업 후기 (2) | 2025.09.04 |
|---|---|
| 카카오임팩트 테크포임팩트 LAB 2기 킥오프 후기 (1) | 2025.07.21 |
| 2024 TEO 컨퍼런스 후기 (0) | 2025.05.08 |
| 글또 OT 후기 및 10기 다짐글 (0) | 2025.05.08 |