[서평 작성] 육각형 개발자
안녕하세요? 정리하는 개발자 워니즈입니다. 나는 리뷰어의 첫 시리즈를 작성해보고자 합니다.
필자가 최근에 읽은 육각형 개발자에 대한 서평을 작성하고자 하는데요. 기술서적만 읽다가 편안하게 읽을 수 있는 책을 알게 되어 즐겁게 읽을 수 있었습니다.
책을 처음 받아보고 느낀 감정은, 마치 FIFA 게임을 할 때, 선수별로 능력치 스탯을 보여주는 육각형의 이미지가 너무 좋았습니다.
필자도 어느덧 10년이상의 엔지니어로 업에 종사를 하고있는데, 여러가지 스탯이 필요하다고 느끼게 됐었고 이 책을 읽으면서 얻는 인사이트와 공감되는 부분이 많았습니다.
목차 📔
- 구현 기술과 학습
- 소프트웨어 가치와 비용
- 코드 이해
- 응집도와 결합도
- 리팩터링
- 테스트
- 아키텍처 패턴
- 업무 관리
- 정리하고 공유하기
- 리더와 팔로워
1️⃣ 들어가며
처음 들어가며 나왔던 개발의 정의에 대한 글귀를 읽었을 때는 이마를 탁 치게 되었습니다.
회사 업무를 하면서 성장한다는 느낌을 받지 못하는 이유 중 하나는 개발과 성장을 동일시 했기 때문이다. 하지만, 개발은 구현 기술뿐 아니라 프로젝트 관리, 설계, 아키텍처, 요구 사항 등 바라보는 시야를 넓혀야 한다.
2️⃣ 구현 기술과 학습
주니어에서 중니어로 넘어가는 시기에는 다양한 학습 기회와 욕구들이 넘쳐나는 시기라고 생각이 됩니다. 이곳에서 저자도 다양하게 쏟아져 나오는 구현 기술들에 대한 학습과 적절한 선에서 적용하는 것을 이야기하고 있습니다.
그리고 구현 기술을 적용하기 위해서는 먼저 동료에게 신뢰를 받아야 한다는 내용이 기억에 남습니다. 아무리 좋은 내용이여도 나와 같이 일하는 사람들의 공감과 동의를 얻지 못하면 무용지물이 됩니다.
3️⃣ 소프트웨어 가치와 비용
이 장에서는 소위 말하는 스파게티 코드에 대해서 기록하고있습니다. 유지 보수 비용을 낮추려면 결국에는 코드 품질에 신경을 써야되고 가독성 있는 코드로 개발을 해야합니다.
시니어로 가기 위해서는 유지보수와 비용에 대한 고민을 반드시 해야된다고 말하고있습니다. 이부분이 굉장히 공감이 많이 되고, 특히나 코드에 대한 품질을 높이는 활동 자체에도 비용이 많이 들지만 미래를 생각했을때는 반드시 신경 써야 하는 부분이라고 생각이 들었습니다.
4️⃣ 코드 이해
클린 코드라는 말이 있듯이 가독성 있는 코드들에 대해서 설명을 하고 있습니다. 이전 장의 연장선이라고 생각이 될 만큼 가독성 있는 코드를 어떻게 작성을 할 수 있는지를 고민하게 되는 장이였 던것 같습니다.
5️⃣ 응집도와 결합도
이 부분은 항상 들었던 “높은 응집도와 낮은 결합도”에 대해서 소개하는 내용입니다. 같은 기능을 하는 코드들은 하나로 모아서 응집도를 높이고, 각 모듈간의 디펜던시(참조)를 낮춤으로써 결합도를 낮추는 전략을 이야기하고 있습니다.
이렇게 함으로써, 유지보수하는 비용을 낮추고 변경에 따른 영향도를 낮추게 될 수 있다는 것을 이해하게 되었습니다.
6️⃣ 리팩터링
이 장에서는 계속해서 소프트웨어의 가치를 높이고 변경에 대한 비용을 낮추기 위한 전략으로 기존의 레거시 코드들을 정리하는 내용으로 이뤄져 있습니다.
예를들어 미사용 코드 삭제, 변수 이름 변경, 메서드 추출, 클래스 추출, 클래스 분리 등 다양한 예시들에 대해서 소개를 하고 있습니다.
모든 부분들을 수정하기는 어렵지만 결국 이를 통해서 지속적으로 유지보수가 가능한 코드를 만들자로 이해하게 되었습니다.
7️⃣ 테스트
이 장에서는 TDD(테스트 주도 개발)에 대해서 설명하고 있습니다. TDD를 하기 위해서는 테스트를 우선적으로 고민하고 테스트가 통과하기 위해서 코드를 개발하는 방법으로 설명하고 있는데요.
TDD를 하게 되면 초기에 들어가는 공수가 클지라도 추후에 변경하는 코드들에 대한 안정성 검증을 받게 되는 부분이라 반드시 필요하다고 생각이 들었습니다.
8️⃣ 아키텍처 패턴
이 장에서는 아키텍처가 중요한 이유에 대해서 설명을 하고 있습니다. 저도 어느덧 10년차의 엔지니어로 지내다보니 대부분이 직접 구축을 하기보다는 거시적 관점에서 아키텍처를 고민하는 케이스들이 많게 되는데요. 아무래도 시스템의 골격을 제공하는 부분이다보니, 얼마만큼 유연하면서도 보안과 품질등 여러가지 속성들을 지켜낼 수 있을지 많이 고민하게 되는 부분인 것 같습니다.
무엇보다도 단순하면서도 확장성 있게 아키텍처를 가져가는것이 유지보수 비용에서 얼마나 큰 부분을 차지 하는지 경험적으로 알게 되었습니다.
9️⃣ 업무 관리 / 정리하고 공유하기 / 리더와 팔로워
마지막 3개의 장을 하나로 묶었습니다. 이 부분은 특히나 시니어로 가는 가장 중점적인 장이라고 생각이 들었습니다. 주니어에서 중니어를 거쳐 시니어로 가게 되면 관리(Management)부분을 담당하게 되는 것 같습니다.
일정을 준수하면서 업무를 나누고 그것을 팀원들에게 배분해서 성취감도 느끼게 해주는 부분은 시니어의 몫이라고 생각이들게 되었습니다.
그리고 큰 덩어리의 업무가 팀원들의 노력으로 완성이 된다면 이부분을 정리하고 주변팀에게 전파하고 공유하는 부분도 역시 생각해보게 되었습니다.
마지막에서는 결국 일은 혼자 하는게 아닌 리더와 팔로워가 각자의 본분에서 역할과 책임을 다 했을 때 시너지가 나는 부분을 느끼게 되었습니다.
마치며.. ✏️
전반적으로 육각형 개발자라는 느낌은 주니어부터 중니어 시니어로 성장하는 과정을 하나의 책으로 담아내었다고 느끼게 되었습니다. 책의 서두는 개발이 왜 필요한지(주니어), 중반 부분에서는 개발의 유지보수 비용을 낮추고 품질을 높이는 방법에 대해(중니어), 그리고 후반부에서는 팀을 관리하고 업무의 시너지를 내기 위한 방법들에 대해(시니어) 소개하는 느낌을 받았습니다.
책의 필자가 느끼는 육각형 개발자는 모든 세대(주니어, 중니어, 시니어)를 아우를 수 있는 방법에 대해서 소개하는 것 같다는 느낌을 받았고, 시니어가 됐다고 주니어, 중니어에게 필요한 것들을 잊지 말고 기본에 충실하자라는 느낌도 배울 수 있게 되었습니다.
본 포스팅은 “한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”
중니어 -> 주니어 ㅎㅎㅎ
오탈자 아닙니다 ^^; 업계에서는 많이 쓰이고있는거 같아요.
보통 주니어, 중니어, 시니어라고 명확히 기준을 잡고 나누진 않지만, 아래와 같이 통상적으로 쓰이고 있는거 같습니다.
주니어 : 업무를 처음 시작하는 사람 ( 1-3년 차 )
중니어 : 주니어를 이끌 수 있는 수준이 되는 사람 ( 5-8년차 )
시니어 : 작은 팀을 이끌고 매니징을 할 수 있는 사람 ( 8년차 이상 )