New
-
좋은 피드백 (절벽으로 몰아세우지 않기)
최근 술자리에서 "왜 혹독한 조언 혹은 높은 프레셔 등 개발팀원들의 성장에 대한 강한 피드백을 하지 않느냐" 에 대한 질문을 들었다. 그에 대해 다음과 같이 답변을 드렸다. “여러 회사를 거치면서 어떤 것이 진짜 성장인지 명확하지 않다는 생각을 하게 되었고, 지금 우리 팀에 필요한 것은 대기업에서 사용하는 기술을 적용하느냐 마느냐가 아니다. 특히 어떠한 한명의 슈퍼맨에 의지해서 조직의 기술력이 높아지는 것 역시 필요하지 않다. 그렇게 해도 팀 전체는 전혀 성장하지 못한 불안한 성장이기 때문이다. 가능하면 다 같이 성장해서 모두가 조직의 졸업까지 이탈자 없는 성장을 바라고 있다.” 만약 현재 우리 팀원들이 제대로 된 성과를 내지 못하고 있다면, 당연히 피드백을 했을 것이고, 잘못된 방향으로의 성장에 대해서..
2023.12.03
-
테스트 데이터 초기화에 @Transactional 사용하는 것에 대한 생각
얼마 전에 2개의 핫한 컨텐츠가 공유되었다. 존경하는 재민님의 유튜브 - 테스트에서 @Transactional 을 사용해야 할까? 존경하는 토비님의 페이스북 2개의 컨텐츠에서 테스트 데이터 초기화에 @Transactional 사용하는 것에 대해 서로 다른 의견을 내신 것이다. 마침 페이스북에 태깅되기도 했고 (ㅠㅠ) 과거에 라이브 방송에서도 "향로님은 반대한다" 라고 언급되기도 했었다. (반대하는 것은 사실이기도 하고..) 내 생각을 정리해야지 해야지 하다가, 마침 이번주에 시간이 되어서 정리하게 되었다. 1. Spring Team은? 내 의견을 정리하기 전에, 먼저 Spring Team 의 코드를 살펴보자. 인프라스트럭쳐 계층 (데이터베이스) 테스트를 작성하는 팀의 코드를 보면 될 것 같아서 Sprin..
2023.11.26
-
이기는 팀 경험
아래 글은 오늘 팀 내부에 공유한 글입니다. 팀을 떠난 후에도 다시 볼 일이 있을것 같아 블로그에도 남깁니다. 오늘 추천 받은 영상인데, 그간 저희 인프랩 조직 내에서 계속 이야기하던 주제와 맞물려서 공유드립니다. (전) 구글 인사담당자셨던 황성현님의 인터뷰를 보면 다음과 같은 내용이 나옵니다. "엄청난 스트레스를 받는 펀드 매니저들 중 최고 경영층까지 갔던 사람들의 공통된 특징"을 보니 어렸을때부터 12학년 (고3) 까지 팀 스포츠를 했다는 것인데요. 그냥 만년 후보 선수로 벤치를 지키고 있더라도, Being part of a winning team - 이기는 팀의 맴버였던 경험이 있던 사람이 끝까지 살아남을 수 있는 비결이라는 것입니다. 즉, 내가 4번 타자였던게 중요한게 아니라 우리 팀이 1등한게 ..
2023.11.23
-
Qodana 무료로 시작해보기 (2023.11)
JetBrains에서 SonarQube와 같은 정적 분석 도구를 출시했다. Qodana JetBrains 에서 출시하는 제품들은 일단 관심을 가지게 된다. IntelliJ, WebStorm, DataGrip 등을 몇년간 계속해서 사용하면서 충분히 만족감을 느꼈고 (불편함이 없진 않았지만), 최근에 출시한 Writerside도 VSCode를 대체한 마크다운 에디터로 잘 사용하고 있다. 그만큼 DX를 가장 신경쓰는 제품을 만드는 회사라는 확신이 있기 때문에 이번 Qodana 역시 기존의 Sonar 제품들을 잘 대체할 수 있을까 하는 기대감에 사용해보게 되었다. 그리고 기존에 잘 사용하던 SonarQube의 대체제를 고민하던 시점이기도 했다. Qodana는 SonarQube에 비해 어떤 장점이 있을까? 눈여겨..
2023.11.23
-
[리팩토링] 코드 배치와 변수 줄이기
비즈니스 로직 위주로만 생각하고 바로 코드를 작성하다보면 코드가 길어지고, 가독성이 떨어지는 경우가 많다. 특히 가독성이 떨어지면 코드를 리팩토링할때도 이상한 방향으로 할 때가 있다. 이럴때 가독성을 높이기 위해 코드 배치와 변수를 줄이는 방법을 알아보자. 예제 ORM 없이 직접 SQL을 작성하는 환경에서 다음과 같이 코드를 작성했다고 가정하자. export class ProductRepository { async create (createDtos: ProductCreateDto[]) { const promiseList = []; const results: Product[] = []; // 반복문을 수행하면서 DTO를 Entity로 변환하고 SQL Promise를 쌓아둔다. for(const dto of..
2023.11.12
-
[일기] Mild High Club - Homeage
퇴근 후에 깨끗하게 샤워하고 거실 불을 끄고, 테이블 전등만 켠 채로 적당히 늘어지는 음악도 들으면서 코드 작업이나 글 쓰는 시간을 좋아한다. 오늘은 유달리 날이 되게 추운데 바깥 야경이 또렷하게 보였다. 반짝반짝 빛나는 야경은 왜 이렇게 예쁜걸까. 언젠가 이 집을 떠나는 날이 오더라도, 매일 근사한 감동을 주었던 이 밤들을 잊지 못할것 같다. 오늘은 무슨 노래를 들을까 하면서 유튜브를 찾다가 우연히 배우 알렝 드롱의 리즈시절에 관한 쇼츠를 보게 되었다. 여기서 나온 노래가 너무 마음에 드는 것이다. 적당히 늘어지고, 뭔가 7080 같은 느낌도 들고 말이다. 그래서 좀 더 찾아보니 Mild High Club 의 Homeage 란 노래였다. 노래가 너무 몽환적이라서 무슨 가사일까 궁금했다. Someone ..
2023.11.08
-
재능 있는 척 하지 않기
프로그래밍을 배우기 시작한 뒤 부터 노력하지 않는 척을 꽤 자주했다. 이를테면 주말에 사이드 프로젝트나 공부를 했어도 회사에서는 웹툰/영화를 봤던 이야기만 하는 것이다. 주변 사람들에게 저 주말에 공부했어요 라던가, 남는 시간에 사이드 프로젝트나 스터디를 했어요 등을 말하기 싫었다. 당시의 나는 개발을 못했기 때문이다. 노력을 해도 그 정도라면 내가 재능이 없다는 것을 의미하는데 그걸 인정하기 싫었다. 노력을 했음에도 못하는 즉, 재능 없는 사람이 될 바에는 차라리 노력을 안해서 못하는 사람이 되는게 낫다고 생각하게 되었다. 그럼 내가 개발 실력이 부족해도 그건 내 재능이 부족한게 아니라 내 노력이 부족한 것이 되니깐. 내가 선택한 이 분야에서 내가 재능이 없다는 것을 인정하기가 참 어려웠다. 그래서 뭘..
2023.11.06
-
[PostgreSQL] 모든 View 의 접근 기록 테이블에 적재하기 (애플리케이션 변경 없이)
View Table을 적극적으로 사용하는 시스템에서 View Table의 의존성을 줄이고자 할때가 있다. 이는 레거시 데이터베이스를 리팩토링 해야하는 경우인데, 보통 너무나 파편화된 데이터베이스 접근을 하나로 통합하고자 할때이다. 보통 ORM을 사용하는 경우에는 이러한 리팩토링이 쉽지만, ORM을 사용하지 않는 경우에는 어떻게 해야할까? 가장 먼저 해야할 것은 View가 계속 사용되고 있는지, 리팩토링에서 누락은 없었는지를 확인할 수 있는 방법을 마련하는 것이다. 특정 테이블의 변경이 있을때마다 어떠한 액션을 넣을 수 있는 가장 흔한 방법은 Trigger 이다. 하지만 아쉽게도 PostgreSQL에서는 View Table의 Select 쿼리에 대한 Trigger가 적용되진 않는다. 그래서 다른 방법을 고..
2023.11.05
-
그대들, 어떻게 살 것인가 (요시노 겐자부로)
최근 미야자키 하야오 감독님의 "그대들은 어떻게 살 것인가" 영화가 개봉된다는 소식을 들었다. 제목이 너무 낯익어서 찾아봤더니 미야자키 하야오 감독님이 이 책을 오마주해서 영화를 만들었다고 한다.대학생일때 도서관에서 빌려서 읽었던 책인데, 당시에는 책 내용이 너무 가식적이라고 생각했었다. 중2병이 늦게 와서 그랬는지 모르겠지만, 그땐 되게 시니컬했고 그만큼 이런 내용에 거부감이 있었다. 그래서 책을 읽고나서는 "이런 책을 왜 사람들이 좋아하는지 모르겠다" 라는 생각을 했었다. 그러다가 취업 준비, 이직 준비, 여러 주변의 변화 등이 있었는데, 이런 변화들이 있을때마다 이 책의 내용이 떠올랐다. 그리고 나는 어떤 어른이 되고 싶은지, 어떤 사람이 되고 싶은지에 대한 생각을 하게 되었다. 이 책을 보면 주인..
2023.10.30
-
두근두근
대학교를 다닐때 학교 공부는 하지 않고, 도서관에서 자기계발서를 한참 읽던 시기가 있었다. 그때 읽었던 책 중에 하나가 젊은 구글러가 세상에 던지는 열정력이라는 책이었는데, 200X년에 구글코리아에 입사하신 김태원님이 쓰신 책이다. 각 챕터마다 김태원님의 생각이 적힌 책인데, 그 중에서 "두근두근" 챕터에는 수잔 베이츠의 "사람을 움직이는 리더의 대화법" 의 내용이 담겨 있었다. 교회는 이미 사람들로 꽉 차 있었고, 사진기자와 나는 교회 뒷문에 진을 칠 계획으로 언덕에 올랐다. 그때 나는 마침 따르는 기자들 없이 경호원 두 명과 걸어가는 지미 카터를 보았다. 그들은 막 교회로 들어가려던 참이었고, 내 심장은 빠르게 뛰었다. 이런 기회가 오리라고 예상하지 못했던 나는 아무런 준비도 되어 있지 않은 상황이었..
2023.10.22
-
가장 좋아하진 않는 프로그래밍
요즘 받아 보는 고민 중에 "가장 좋아하는 일이 프로그래밍이 아니다는 것을 인정하기 힘들다"는 것이 있다. 예를 들면 이런 것인데, 본인은 시간이 날때마다 그림을 그리는데 그 시간이 너무 재밌다는 것이다. 그래서 그림 그리러 가는 시간이 항상 기다려지고 빨리 퇴근하고 싶은 생각을 계속 한다는 것이다. 그래서 주변에서는 프로그래밍보다 그림 그리는 것을 더 좋아하는 것 같다고 농담으로 이야기하는데, 자긴 그걸 인정할 수 없다는 것이다. 근데 나는 아무리 고민을 들어봐도 프로그래밍 보다 그림을 그리는 것을 더 좋아한다고 느꼈다. 그리고 그게 왜 문제지? 라는 생각을 했다. 좀 더 고민을 들어보니 프로그래머로서 프로그래밍보다 더 좋아하는게 있어선 안된다고 믿고 있던 것이였다. 커리어 초반에 같은 팀에 있던 사수..
2023.10.09
-
Eclipse Mat 메모리 할당 크기 조정 (Mac OS)
Heap Dump를 분석하기 위해 Eclipse mat를 종종 사용한다. 너무 큰 덤프 파일을 불러오면 다음과 같이 OOM 이슈가 발생한다. An internal error occurred during: "Parsing heap dump" Out of Memory mat 에 할당된 메모리를 높여야만 대용량의 덤프 파일을 불러 올 수가 있다. 이를 위한 설정은 다음과 같다. 설정 모든 설정은 MAC OS를 기준으로 한다. mat 설정은 /Applications/mat.app/Contents/Eclipse/MemoryAnalyzer.ini 위치에 존재한다. 그래서 필요한 에디터로 (여기서는 vi) 해당 파일을 열어서 vim /Applications/mat.app/Contents/Eclipse/MemoryAn..
2023.10.08
-
Hibernate Fetch Join시 메모리에서 페이징 처리 사전 차단하기
Hibernate (Spring Data JPA) 를 사용하다보면 종종 HHH000104: firstResult/maxResults specified with collection fetch; applying in memory! 의 WARN (경고) 로그 메세지를 만난다. 해당 로그는 페이징 처리할때 여러 엔티티를 Fetch Join 을 하면 발생한다. Fetch Join은 N+1 문제를 해결하는 가장 자주 사용되던 방식이다. 하지만, 경고 메시지에서 언급했듯이 페이징 처리시에 사용할 경우 페이징이 전혀 적용되지 않고, 조건에 해당하는 모든 데이터를 가져와 메모리에 올려두고 사용한다. 조건에 해당 하는 데이터 전체를 가져오기 때문에 당연히 성능 상 이슈가 되며, 이를 메모리에 올려두고 페이징을 처리하니 이..
2023.10.02
-
2023 인프콘 회고
올해 2월부터 준비한 인프콘이 2023.08.15 에 성황리에 마무리 되었다. 인프콘의 모든 발표는 인프런에 무료로 공유되어 있다. 회고 써야지 써야지 하다가, 이제야 쓴다. 인프콘 컨퍼런스 운영에 대해서는 관여를 하지 않았다. TF 멤버분들이 100% 진행해주셔서 감사할 따름이다. 그래서 인프콘을 어떻게 준비했는지 그 과정이 궁금하신 분들은 아래 회고들을 참고해보면 좋다. 인프콘 2023 현장 스케치 인프콘 TF 회고 인프콘 TF 리드 - 앨리스의 회고 이번 후기는 인프콘 사이트 개발과 개인 발표자로서의 회고이다. 인프콘 사이트 준비 작년 인프콘 준비 기간 동안 개발 리소스가 거의 없어서, 공식 사이트 개발을 DevOps와 디자이너 두명이서 워드프레스로 테마 골라서 만들자로 결론내고 진행했었다. 그리고..
2023.09.17
-
소설에 몰입하기
고민 상담을 하다보면 자존감에 대한 고민을 많이 듣는다. 타인과의 비교 타인의 비난, 시기, 질투 내가 어쩔 수 없는 상황에 대한 불안감 등등 부정적인 감정을 만나게 될 때가 많다. 이런 부정적인 감정, 태도, 상황에서 어떻게 자존감을 지킬 수 있냐는 고민과 함께 나는 그 감정과 그 상황을 어떻게 잘 넘기는지에 대한 질문이 이어졌다. 부정적인 기분을 잘 처리하는 사람인가? 하는 생각이 드는 것과 별개로 남들이 보기에 그랬다면 어떻게 그랬을까? 곰곰히 생각해봤다. 그러다가 도둑맞은 집중력의 내용을 보고 답을 찾을 수 있었다. 우리는 소설을 읽을 때 다른 사람의 머릿속에 있는 경험에 푹 빠져든다. 사회적 상황을 그려보고, 깊고 복잡하게 타인과 그들의 경험을 상상한다. … 키스 오틀리 교수는 소설을 많이 읽으..
2023.09.10