개발 프로세스가 어느 정도 잘 잡혀있는 곳은 코드 리뷰하는 문화가 자리 잡혀있는 곳이 많다. 그런데 그 방식이나 정도는 회사, 조직마다 조금씩은 다르기 마련이다. 코드 리뷰를 이래 저래 몇 년째 해오고 있는데 이에 대한 생각을 좀 정리해보았다. 일단 내가 생각하기에 코드 리뷰의 목적은 다음 정도인 것 같다. 이 변경 사항이 코드 베이스에 반영되어도 되는지, 목적에 대한 타당성 확인 요구하는 기능을 수행하는 것이 맞는지, 로직의 오류를 사전에 찾아내기 코드의 가독성, 컨벤션 등 유지보수하기 어렵게 작성되어 있지는 않은지 코드 변경 사항 조직 내 공유되도록 하기 첫 번째 목적의 경우에는 코드 작성 이전에도 가능한 부분인데, 크지 않은 변경인 경우 코드 변경과 함께 동의를 얻어내는 것도 괜찮다고 생각한다. (..
세상에는 참으로 다양한 프로그래밍 언어들이 있습니다. 개발자들은 보통 한두 가지 정도 익숙한 언어를 주력으로 사용하는 것 같습니다. 이런 말이 있습니다. 프로그래밍 언어는 도구에 불과하니 언어에 너무 얽매이지 말라는.. 만들려는 것을 만들기 위한 목적의 도구일 뿐이라는 것 인데요. 일리가 있는 말이지만, 필요한 언어를 필요한 수준까지 빠르게 습득하는 것도 능력인 것 같습니다. 누군가는 크게 어렵지 않게 며칠 만에 새로운 언어에 익숙해질 수도 있지만 누군가는 그것 자체가 노력이 많이 필요한 일일 수도 있으니까요. 소설 쓰는 것에 비교해 보면 소설의 스토리나 주제가 중요하지 언어는 도구일 뿐이다라고 한다면 일본어를 못하는 사람이 갑자기 일본어로 소설을 쓸 수 있을까요? 장인은 도구를 가리지 않는다는 말처럼 ..
Docker Desktop 유료화로 인한 대체로 Colima Docker를 사용하고 있었다. 그런데 터미널에서 docker login을 하거나 이미지를 pull할 때 다음과 같은 에러가 발생하기 시작했다. Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on 192.168.107.1:53: read udp 192.168.5.15:52605->192.168.107.1:53: i/o timeout 에러 내용으로 보면 registry-1.docker.io 도메인에 대한 dns lookup이 안되서 timeout이 발생했다는 것 같다. 구글링해보니 비슷한 증상을 겪는 사람..
신이 존재한다고 생각하시나요? 저는 그럴지도 모른다고 생각합니다. 예전에는 신이란 건 없다고 생각했지만 요즘은 조금 달라졌습니다. 과학 기술이 발전하면서 세상이 돌아가는 이치가 과학적으로 설명되면서 신이란건 없다는 생각이 컸었는데, 어찌보면 이 이치가 신이 만들어낸 것이 아닌가 싶네요. 컴퓨터를 예로 들어 설명해보겠습니다. 개발자는 프로그래밍을 해서 프로그램을 실행시킵니다. 프로그램 안에서는 많은 객체들이 생성되었다가 사라지기를 반복합니다. 어느 날 한 객체가 의문을 품기 시작했습니다. "나는 누구일까, 나는 왜 생겨났으며 왜 이런 값들을 가지고 있을까?" "이 세상을 만든 자는 누구일까?" 시간이 흐르면서 이런 객체들의 생각이 모이고 모여서 점차 비밀을 알아내기 시작했습니다. 객체들이 살아가는 세상의 ..
팀이 빠지기 쉬운 5가지 함정이라는 책을 읽고 요약 정리해본 내용이다. 원책 제목은 The Five dysfunctions of a team 이다. 2007년에 출간되었던 책인데 작년에 팀워크의 부활이라는 책으로 재출간 되었나보다. 팀워크의 부활 실리콘밸리 최고의 경영 컨설턴트 패트릭 렌시오니. 그는 〈포춘〉 500대 기업을 포함하여 프로스포츠팀, 군대, 비영리 단체, 대학, 교회 등 다양한 조직을 컨설팅하면서 뛰어난 인재들이 모여 있는 조직이 항상 좋은 결과를 내는 것은 아니라는 사실을 깨달았다. 그 후 그는 팀워크에 대한 연구를 본격적으로 시작했고, 이 책 《팀워크의 부활》이 바로 그 결과물이다. 저자는 이 책에서 가상의 기업 디시전테크를 무대로 각 개인은 뛰어난 인재들이지만 모이기만 하면 삐걱거리는..
DDD START! 도메인 주도 설계 구현과 핵심 개념 익히기 책 내용 요약 정리 내용입니다. DDD Start! 이 책은 DDD(도메인 주도 설계)를 처음 접하는 개발자를 위한 책이다. DDD를 실제 업무에 적용할 수 있도록 기본적인 이론을 설명하고 이를 구현한 코드를 바탕으로 입문자가 헤매지 않고 DDD를 학습할 수 있도록 했다. 애그리거트, 엔티티, 리포지토리 등 DDD의 핵심 패턴을 이용해서 도메인 모델을 구현하는 방법을 설명한다. 도메인 모델의 트랜잭션 충돌을 처리하는 기법(선점 잠금, 비선점 잠금)을 살펴보고, 도메인 이벤트를 이용해서 도메인 영역 간의 의존을 낮추는 방법과 명령 모델과 조회 모델을 나누는 기법에 대해서도 배운다. 스프링과 JPA를 이용해서 실제 동작하는 코드를 함께 제공하고 ..