2023년 3-4월 회고
Background
거의 한 달 넘게 블로그 글을 쓰지 않았다. 한창 쓸 때는 밀리거나 안 쓰면 근질거렸는데, 안쓰는 날이 더 길어지니 역관성이 생긴듯.. 다시 이 글을 쓰기까지 많은 시일이 걸렸다. 여러 가지 이유가 있었는데,
- 바빠서
후술하겠지만, 지난 2월부터 4월 말까지 (그리고 지금도 계속) 회사 KPI Top 3 안에 드는 프로젝트에 참여했다. 자세한 이야기는 KPT에서 회고하기로 하고, 무튼 이것 때문에 많이 바쁘긴 바빴다..(변명과 핑계 맞음..)
- ChatGPT의 등장으로
요근래 개발하면서 웬만한 검색은 구글링을 하지 않는다. 대부분 ChatGPT로 검색하고 결과값을 받아오는데, 그도 그럴 것이 너무나도 편리하기 때문이다. 그러면서 이제까지 꾸준히 했던 블로그 작업에 회의가 들었다. 나조차도 블로그를 보지 않는데, 계속 글을 써봐야 무슨 의미가 있나 싶었다. 하지만 최근에 이 역시 생각이 바뀌었지만(후술할 내용에서 언급 예정).
무튼 이러이러한 이유로 근 2달 가까이 회고 글이 올라가지 않았다. 하지만 이제는 한숨 돌릴 여유가 생겼다. 몸담았던 프로젝트도 개발 단계가 끝나고 운영 단계로 넘어갔다. 다시 마음을 다잡고 글을 써보도록 하자.
Keep
넥스트스텝 TDD 강의 시작
넥스트스텝의 간판 강의인 <TDD, 클린 코드 with Java> 를 수강하기 시작했다. 작년부터 엄청 듣고 싶었던 수업이었다. 하지만 아직 자바 및 객체지향에 대한 이해도가 높지 않아 망설여지기도 했고, 무엇보다 강의가 열리지 않아 한참을 기다렸다. 그 사이에 실무 경험도 얼추 쌓았겠다, 이제는 들어도 되겠다는 자신감이 생겼다. 마침 4월에 강의가 열려 냉큼 수강신청했다. 80만원이라는 거금이었지만 회사의 지원으로 공짜로 들을 수 있었다. (사랑합니다ㅎㅎ)
현재 4주차가 끝났는데, 강의 진행 방식이 미션 베이스의 실습 위주인데다 매 미션마다 코드 리뷰를 해주니 벌써부터 효능이 확실히 체감된다. 객체지향 프로그래밍이란 어떻게 구현하는 것인지 라인 바이 라인으로 피드백을 받는 것부터 시작해, 메소드/클래스 분리와 같은 리팩토링 경험 역시 아주 좋았다. 실력이 쑥쑥 느는 기분이다.
또 하나 좋았던 TDD 경험이다. 처음에 실패하는 테스트를 먼저 짜고 로직을 완성한 뒤 테스트를 성공시키는 TDD는 이전부터 말만 들었지만 어떻게 하는 게 맞는지 도통 감이 잡히지 않았다. 그러다 이번에 강의를 들으면서 포비가 TDD를 어떻게 하는 건지 라이브로 보여주니 아하! 하면서 깨달음이 열렸다. “TDD라는 게 생각보다 그렇게 멀리 있지 않구나”라는 느낌을 받았다.
놀라운 건 매 기수별로 모든 미션을 완수하는 비율이 2~30%가 채 되지 않는다는 점이다. 반드시 모든 미션을 완료해야겠다는 목표를 세웠다. 심지어 미션을 완료한 사람들 중에서 리뷰어로 선정될 수도 있다고 하니 모든 미션을 끝내고 리뷰어까지 선정되는 걸 목표로 삼아보자. 지금 이 글을 쓰는 시점까지는 두 번째 미션인 로또를 잘 따라가고 있다. 계속 가볼 예정!
사내 도커 스터디 수업 끝 → 모르는 것에 대한 자신감 상승
2달 동안 진행했던 도커 스터디가 3월에 끝났다. 홀로 수업을 진행한다는 원칙을 끝까지 달성하는 게 쉽지만은 않았다. 업무가 끝나면 매일 밤늦게까지 남아 다른 것 다 제쳐두고 스터디만 준비하는데 시간을 보냈다. 심지어 주말에도 도커만 공부했다. 끝내고 나니 보람이 상당하다.
무엇보다, 이제는 모르는 기술이 있으면 이걸 어떻게 아는 걸로 전환할 수 있을지에 대한 자신감이 생겼다. 스터디 전만 해도 장벽처럼 느껴졌던 도커가 이제는 편안하다. 막상 해보니 별 거 아니더라. 스터디를 준비하면서 가장 많이 배운 사람은 모든 것을 주도했던 나 자신이었다. 앞으로 모르는 기술 혹은 지식이 있을 때 어떻게 아는 것으로 전환할 수 있을지에 대한 방법과 자신감이 생겼다. 정말 큰 수확이다.
Learn
대규모 프로젝트 참여: 투입부터 끝까지
지난 2월 말부터 2달 간 신규 프로젝트에 투입됐다. 이전까지는 작은 단위 기능 추가라던지, 리팩토링이라던지, 버그 수정 등 티켓 하나 단위의 태스크 위주로 일을 수행했다. 그러다 이번에 Payment & Wallet 팀으로 옮기고 처음으로 큰 프로젝트에 투입이 됐다. 프로젝트는 대출 상환 자동 이체 시스템(eNACH) 구축으로, 사용자가 신청하면 상환일에 직접 입금할 필요 없이 계좌에서 자동으로 이체할 수 있게 하는 기능이다. 한국인 입장에서 자동이체는 너무나도 당연하고 익숙한 기능이다보니 “이게 왜 아직까지 안 만들어져 있지?” 했는데, 속사정을 살펴보니 여러 이슈가 많았더라. 신규라고 썼지만 사실상 동일한 프로젝트만 이번이 세 번째였다. 어쨌거나 덕분에 지금 시점에 내 손에 들어온 게 중요한 것 아니겠나.
2달 동안 진짜 많이 배웠다. 심지어 해당 기능이 출시됨으로써 이용자의 연체율 감소 등 꽤나 큰 비즈니스 임팩트를 만들 수 있을 것으로 보인다. 정말 값진 경험을 했다. 이 프로젝트에 대한 회고는 따로 더 길게 다뤄볼 예정.
한 가지 제대로 배운 게 있다면 테스트의 중요성이다. 개발 막바지에 시간이 부족해 테스트를 제대로 하지 않고 피쳐를 내보냈다. 그랬더니 아주 족족 다 터지는 게 아닌가..이때 크게 반성했다. 다행히 같이 일하는 팀원들이 많이 도와준 덕분에 잘 마무리하긴 했지만, 일주일 내내 야근하면서(하루는 새벽 네 시까지 디버깅하기도 했다) 거의 죽다시피 했다.
사실 그동안 단위 테스트의 중요성을 팀내에 강조하며 다녔다. 인도 팀 사람들 특징 중 하나가 단위 테스트를 거의 짜지 않는 것인데(우리 팀은 나와 신입 한 명을 빼면 전부 인도 사람들), 팀 기술 문화를 바꾸고 싶어 “유닛 테스트 꼭 해라”는 말만 수십 번 했다. 그런데 정작 내가 막바지에 시간이 부족하다고 유닛 테스트는 커녕 매뉴얼 테스트도 제대로 하지 않고 내보냈으니..쪽팔리기가 이만저만이 아니었다.
유닛 테스트의 역할은 매뉴얼 테스트에 드는 수고를 줄이는 것에 있지, 최종 테스트를 하지 않아도 되는 게 아니다(물론 커버리지 100%면 아니겠지만). 왜 테스트가 힘들었을까? 가만 회고해보니 이번에 작업했던 서버는 클라이언트가 앱인지라 서버 자체 테스트를 하려면 API를 쏴서 해야 했다. 물론 포스트맨으로 하면 되긴 하지만, 이전과 낯설다보니 마음에 장벽이 있었더라. 게다가 개발 막바지라 마음이 조급하기까지 했으니.. 다시는 이런 실수를 반복하지 말자. 단위 테스트뿐만 아니라 Integration test, 포스트맨을 이용한 API 테스트 등 보다 큰 범위의 테스트에도 두려움 없이 자신감있게 진행할 수 있도록 테스트 경험을 더욱 쌓자.
색안경 끼고 함부로 판단하지 말 것
제목이 모호한데, 꽤나 반성할 일이 하나 있었다. 현재 내 매니저는 인도 분이다. 그런데 한국에서 인도를 바라보는 시선 중 하나가 일을 제대로 안한다는 게 있는데, 직접 제대로 겪어보지도 않았으면서 어느샌가 알게 모르게 나 역시 색안경을 끼고 보게 되더라.
하루는 회의를 하다가 금요일에는 배포를 하지 말자는 안건이 나왔다. 순간 ‘일을 하기 싫어서 그런건가…?’라는 생각이 들었다. 차마 입밖에 꺼낼 수 없어 가만히 있었다. 그러고 얼마 뒤, 한국 개발자 분들과 담소를 나누다가 윗 얘기를 꺼냈다. 일을 하기 싫어서 그런 거 아닌가 싶다며 웃었는데, 생각지 못한 대답을 들었다.
우니, 그건 아닌 것 같아요. 금요일에 배포하지 말자는 건 배포했다가 주말에 이슈 터지는 바람에 사람들 제대로 쉬지도 못하고 고생하니까 나온 의견이예요. 애초에 배포 전에 버그는 없는지, 테스트부터 시작해서 배포하는 개발자가 제대로 점검하지 못해서 다같이 고생하는 건데 그렇게 얘기하는 건 아닌 것 같아요.
깊이 반성했다. 저런 이슈가 있었다는 건 몰라서는 둘째 치더라도 애초에 나한테도 알게 모르게 그런 편견이 있었다는 사실에 문제가 있음을 깨달았다. 절대 색안경 끼고 함부로 판단하지 말자.
요즘 깃헙 잔디가 예전만 못하다..
다시 keep going하자. 사실 이전 같았으면 코딩으로 채울 시간을 독서 스터디로 메우다 보니 독서 스터디 내용을 깃헙 잔디로 심을까 고심도 했다. 그런데 뭔가 이유는 없지만 그렇게 하고 싶지는 않더라. 블로그에 매번 요약본을 올리기도 뭔가 그렇고. 알량한 자존심인가. 무튼 그나마 도커 스터디 준비하면서 커밋 잔디를 많이 심었는데 이따금 스터디 준비를 해놓고도 해당 내용을 깃헙에 업데이트하지 않아 종종 빼먹었다.
그나마 4월에는 넥스트스텝 강의를 듣기 시작하면서 잔디가 많아졌다. 하지만 예전처럼 1일 1커밋까진 아니기에..빈도를 차근차근 늘려나가도록 합시다.
블로그 글쓰기 다시 Start해보자
위에도 언급했듯, 바쁨과 ChatGPT의 등장이 블로그 포스팅에 소홀하게 된 원인이라고 적었다. 바쁨은 이제 어느 정도 끝났으니 괜찮고, 문제는 ChatGPT다. 나도 블로그 글을 예전만큼 보지 않는데 쓰는 데 무슨 의미가 있나 싶었다.
하지만 다시 잘 생각해보자. 블로그 글을 쓰는 이유는 무엇이었지? 가장 첫번째는 내 공부였다. 어떤 지식을 온전히 이해했는지 테스트하는 가장 좋은 방법은 누군가에게 해당 지식을 설명해보는 것이다. 그런 관점에서 생각해보면 누가 보든 보지 않든 내가 배운 지식 혹은 겪은 경험을 블로그 글로 쓰는 건 이를 체화하는 데 큰 도움을 준다. 그러니 “누가 보지 않아서 문제”라는 문제 자체가 의미가 없어진다.
하나 더 큰 이유가 있는데, 얼마 전 겪은 트러블슈팅에서였다. ChatGPT로 물어보는데 한참을 핑퐁해도 해당 이슈가 해결되지 않아 골머리를 싸맸다. 그런데 이를 구글링하니 아주 쉽게 해결책을 발견할 수 있었다. 이때 약간 충격을 받았다. 나도 모르게 ChatGPT에 대한 의존성이 너무 커졌구나 싶었다. 게다가 ChatGPT 역시 여전히 틀릴 수 있으니 구글링에도 여전히 열려 있을 필요가 있음을 깨달았다.
다만 블로그 포스팅을 할 때 어디서나 쉽게 접할 수 있는 일반적인 지식은 되도록 쓰지 않기로 했다. 다만 내가 실무에서 겪은 트러블슈팅이라던지, 실습이 들어간 예제 등의 경우는 여전히 의미가 있으니 이런 류의 글들 위주로 작성해보자.
Try
- 색안경 끼지 말 것(사실 try는 아니지만 다짐 삼아 적어본다.)
- 단위 테스트 범위 이상의 테스트 환경에 익숙해지기
- 하반기에 ATDD 강의를 들을 예정
- 블로그 글쓰기 다시 진행하기
- 단순한 지식 나열 금지, 실습 혹은 트러블슈팅 위주의 포스팅으로 진행