6월 중순부터 클린 코드 스터디를 시작해서 거의 막바지에 접어들었다. 데브코스에서 만난 멘토님께서 수료 후에도 우리를 알뜰살뜰하게 잘 챙겨주셔서 감동을 먹었는데... 끝이 나면 따로 감사하다는 말씀이라도 드려야겠다.
클린 코드 스터디를 진행하며 얻은 인사이트와 지식은 다음과 같다.
- 자바스크립트의 클린 코드
- Vitest 사용법
- 폴더 구조 관리
한동안 React만 사용해서 개발을 하다가 오랜만에 바닐라 자바스크립트로 클린코드를 작성하려니 초반엔 많은 더티 코드를 작성했다.
내 딴엔 깔끔하게 분리했다 싶은 코드들도 더 분리할 수 있거나, 역할이 제 위치에 있지 못한 경우가 더러 있었다. 혼자 이런 스터디를 진행했다면 내 코드의 어디를 더 개선할 수 있을지 몰랐을 텐데 8명이라는 인원과 함께하다 보니 다른 사람의 코드를 참조하며 많은 도움을 받았다.
유효성 검사 함수를 분리하기, 도메인 로직과 어플리케이션 로직을 분리하기, MVC의 적절한 위치와 역할 고민하기, 도메인 로직의 다형성 고민하기, 적절한 추상화를 고민하기... 등등 코드 하나를 작성하더라도 이게 이 위치가 맞을지 고민하고 다른 사람이 읽기에 어색하지 않은지 많은 고민을 하며 작성했다. 아마 이렇게 간헐적으로 얻는 인사이트도 중요하지만 이런 훈련을 평소에도 꾸준히 해야 진정한 클린 코드를 작성할 수 있게 되지 않을까라는 생각이 든다.
클린 코드 스터디에서 얻은 또 다른 지식, Vitest 프레임워크의 사용법이다. 아직 mocking이나 spy같은 고급기술을 마음대로 다룰 수는 없지만 적어도 테스트 코드를 어떻게 작성해야하는지, 어떤 경우에 유용한지를 몸소 체험해볼 수 있었다.
모든 유효성 검사함수를 작성했다고 생각했는데 테스트 케이스를 생각하면서 빼먹은 부분을 발견하거나, 하나의 함수가 하나의 역할을 하고 있다고 생각했는데 테스트가 어려워 확인해보니 여러 역할을 하고 있어 분리하거나, 다른 함수에 의존하는 경우를 줄일 수 있었다.
동시에 단점도 발견했다. 테스트 코드를 작성하는 시간 비용이 만만찮게 든다. 이 점을 무시하고 촉박한 개발 일정에 테스트 코드 작성을 끼워넣었다간 낭패를 보겠구나, 생각도 했고 현업에서 테스트 프레임워크의 도입을 제안했다가 거절당하는 경우가 왕왕 있다는 이유를 알게 되었다.
멘토님께선 테스트 코드의 경우 AI의 도움을 많이 받는다고, AI를 사용해서 생산성을 높여보라는 피드백을 해주셨다. 그래서 뒤늦게 Copilot의 도움을 받게 되었는데 확실히 반복되는 코드를 작성하거나, 이미 코드의 작성 내용을 알고 있는 경우에 많은 도움을 받고 있다. 생산성을 올릴 수 있다는 측면에서 AI 사용은 거의 필수가 되었다는 생각이 든다.
매번 프로젝트를 할 때마다 고민하는 부분이다. 간단한 프로젝트는 파일명만 봐도 그 의미를 유추할 수 있지만 복잡한 프로젝트가 되면 각 폴더의 이름과 의미를 명확하게 짓지 않으면 어떻게 프로젝트를 관리하는지 알기 어렵다.
이번 React 과제가 마찬가지였는데 Primitive UI 기반의 컴포넌트를 만들어야 한다고 해서 더 어려웠다. 우선은 pages, components, utils... 폴더를 만들어 평소와 비슷하게 관리했다. 하지만 간단한 컴포넌트도 있고, 복잡한 컴포넌트도 있는데 이런 컴포넌트를 각각 어디서 관리해야할지 알 수가 없어서 이게 맞나? 라는 생각을 10번은 더 했다. 코드 리뷰를 하면서도 폴더 구조를 특히 많이 보았다.
그러다 유튜브에서 FSD 폴더 아키텍처를 발견하고, 현재 나와 비슷하게 폴더를 관리하는 방식의 단점을 듣고 나니 필연적으로 비슷한 고민을 하는구나 생각했다. 이렇게 직접 불편함을 겪고 나서 개선방안을 찾아보는 과정을 만들어주는 것만으로도 스터디의 의의는 차고 넘친다고 생각했다. 이제 마지막 과제만을 앞두고 있는데 마지막 과제는 FSD 아키텍처를 미흡하게나마 적용해보고 싶다.
트위터엔 내가 좋아하는 책이나 만화의 구절을 적어놓는 계정이 있는데, 해당 계정으로 프론트엔드 개발자들도 구독하고 있다. 어느날처럼 프론트엔드 개발자들의 계정을 훑어보는데 이은재 개발자님의 시나브로 자바스크립트 라는 강의를 접하게 되었다.
현재 바닐라 타입스크립트로 노션을 따라만들어보는 프로젝트를 진행하고 있는데 자바스크립트 기초가 많이 부족하다고 느끼던 참이었다. 개발 진척이 더딘 게 내가 이해도가 부족해서라는 느낌이 마구마구 들던 때였다. 그런데 마침 이 강의의를 접하게 되었고, 강의의 주요 목표 중 하나가 '자바스크립트 코어 실력 키우기'였기 때문에 해당 강의에 바로 꽂혀버렸다.
취준생 인증을 하면 할인을 해준다고 해서 인증을 하자, 원래 가격보다 더 싸게 구입을 하도록 쿠폰을 제공해주셨다. 지금은 강의를 반 정도 들었는데 내가 알던 내용을 다시 복습하기도 하면서 알고 있는데 잘 사용하지 않는 메서드나, 새로운 인사이트를 얻기도 하면서 알차게 듣고 있다.
현재는 반 정도 들었는데 이걸 자바스크립트에서 React 로 넘어가기 전에 들었다면 많은 성장을 했었을 것 같다. 지금도 새로 알게되는 지식이 여전히 있지만 그래도 자바스크립트를 공부할 때 이 강의를 발견했다면 박수를 치면서 들었을 텐데 아쉽다는 생각이 든다.
7월 초부터 말해보카를 시작했다. 예전에 일주일 무료체험을 한 적이 있었는데 퀴즈를 풀 듯이 재밌게 공부했다는 느낌이 남아 있었다. 개발자라면 영어 공부도 필수로 해야한다는 생각이 있었고, 이제 슬슬 영어 공부를 해야겠다는 생각이 들자마자 바로 말해보카를 결제했다.
1개월 금액은 비싼 편이라 인원을 모아 4명이서 12개월치를 결제했다. 덕분에 한달에 거의 7000원 정도만 내고 공부를 할 수 있다. 다이아를 모아 귀여운 캐릭터도 살 수 있고, 다른 사람과 공부를 누가 더 많이 했냐로 리그가 결정되기 때문에 내 안의 승부욕이 게을리 할 수 없게 만들었다.
옛날엔 어휘공부만 제공해주었던 기억이 있는데, 내가 시작할 무렵에는 어휘/문법/듣기/발음 이렇게 총 4개의 카테고리가 있었다.
발음 같은 경우는 카테고리가 작기도 하고... 당장 급한 건 아니라서 매일 어휘/문법/듣기 공부를 하고 있다. 매일 1시간 반정도 공부를 하는데 확실히 효과가 있다.
어휘는 매일 하면할 수록 확실하게 느는 거기도 하지만, 문장 단위를 외우게 돼서 이 단어가 어떤 상황/문장에 어울리는지를 공부할 수 있다. 예를 들어 "내 관심사는 자전거 타기야." 에서 "관심사" 라는 단어는 interest, concern 등으로 쓸 수 있지만 가벼운 의미라면 interset를, 진중한 의미라면 concern을 쓴다. 이처럼 단순히 단어를 외우는 데만 초점을 맞추는 게 아니라 적절하게 쓰도록 도와준다. 그리고 빈칸에 있는 단어를 넣어서 문장 전체를 발음해도 정답으로 쳐주기 때문에 읽기 속도도 나름 빨라졌다.
문법은 내가 가장 싫어하는 파트다. 사소하게 to나 the를 빼먹는다는지, an인데 a를 쓴다든지 해서 틀리기 쉽상이다. 문법 공부가 영어 공부 시간의 대부분을 잡아먹는다고 느낀다. 필요한 문법을 쏙쏙 알려주긴 하지만 pass 기능이 있었으면 하고 바라게 된다.
듣기는 가장 많이 달라졌다고 생각하게 되는 카테고리다. 시험을 볼 때 듣는 소리가 아니라 원어민 발음을 그대로 녹음해서 실제 빠르기로 듣기 때문에 처음엔 뭐...뭐라고? 를 반복하거나, 아는 단어만 두세개 정도 띄엄띄엄 들려오는 정도였다. 듣기 기회는 총 3번인데 처음엔 거의 모든 문제에서 3번의 기회를 다 쓰고 나서야 정답을 맞출 수 있었다. 그런데 이제는 한번만 듣고도 맞추거나, 1~2번만 듣고도 충분한 경우가 대부분이다. 말해보카를 하면서 가장 많이 실력이 는 부분은 듣기라고 생각한다.
첫째주 토요일에 시작해서 거의 매일 꾸준히 했다. 그 결과로 내일이면 출석 금메달을 획득하게 된다.

그리고 매주 승급을 한 덕분에 브론즈->실버->골드를 거쳐 사파이어 리그까지 진출했다! 사파이어존까지 오니까 사람들이 오전에 대부분 "학습중..." 이라는 상태창이 떠서 열심히 해도 떨어질 수 있겠다는 생각이 들었다.

매주 한번씩 승급을 하는 걸 목표로 하고 있는데 분명 어느 리그부터는 막히는 부분이 있을지도 모른다. 지금은 그저 재미있기만 하지만 나중엔 매일해야한다는 부담감에 재미없어질지도 모르는 일이고 말이다. 하지만 새로운 언어를 배우는 일은 재밌는 일이기도 하고, 프리토킹을 하게 되는 날을 고대하고 있어서 지치지 않고 꾸준히 하길 바라본다.
- 테스토스테론의 진실 <캐롤 후븐>
- 나는 왜 무기력함을 되풀이하는가 <에리히 프롬>
- 물고기는 존재하지 않는다 <룰루 밀러>
- 사랑의 기술 <에리히 프롬>
자기 전에 숏폼만 보는 것을 방지하기 위해 책을 다시 읽기 시작했다. 오로지 자기 전에 휴식을 위한 독서라서 소설과 자기계발서 장르가 주를 이뤘다. 6월 말을 조금 보태면 한달동안 총 3권을 읽었다. 확실히 SNS를 하는 시간을 줄이고 다른 취미 생활을 만드니까 정신 건강에 훨씬 더 많은 도움을 주었다. 지금은 단순히 책을 2권 읽자는 목표를 세웠지만만 궁극에는 책 읽는 습관이 만들어졌으면 한다.
책을 읽으면 삶을 살아갈 지혜를 얻음과 더불어 내가 살아보지 않은 다른 사람의 삶을 접해봄으로써 타인을 더 잘 이해하게 되는 기분이다. 끊임없이 스스로의 태도를 점검하고 편협한 시각을 가지지 않게 도와준다. 그런 의미에서 요즘은 에리히 프롬의 책이 특히 마음에 든다. 에리히 프롬의 깊은 통찰을 보다보면 내가 나아가야할 방향에 힌트를 얻는 기분이다. 그래서 8월에 읽을 책도 에리히 프롬의 <자유로부터의 도피>, <소유냐 존재냐>로 선정했다.
아침마다 계획을 세우고 공부하는 날과 그렇지 않은 날의 차이가 아주 커서 계획을 세우며 공부하기 시작했다. 원래라고 하지 않은 것은 아니었지만 대게 5시까지 코어타임~ 같은 식으로 대략적인 일정만 적었다. 하지만 이런 방식은 내가 해야할 태스크를 다시 정의하게 만들었고, 태스크 별 시간 할당량이 불분명해서 그날 해야할 일을 다 끝내지 못하게 만들었다.
그래서 시작한 것이 TodoMat 어플리케이션이다. 지금은 지인 한 분과 같이 하고 있는데, 해야할 일을 끝낼 때마다 상대방에게 알람이 가서 내가 게을리 살고 있는 걸 상대방에게 알리고 싶지 않다면 부지런히 해야한다. 뿐만아니라 카테고리(목표)도 설정할 수 있어서, 섹션별로 어떤 일을 해야할지 한 눈에 알 수 있다.

무엇보다 좋은 점은 휴대폰과 맥북 둘 다 지원하기 때문에 틈날때마다 할 일을 체크할 수 있다. 한가지 고민이라고 하면...나는 어느 정도 아날로그(낭만파)가 좋아서 스터디 플래너까지 적고 있다. 좀 투머치라고 생각하지만... 순공시간을 기록하는 건 한눈을 팔지 않게 해주는 다른 장점도 있어서 둘 다 포기할 수 없다. 무엇보다 손으로 무언가를 적는 그 감각을 포기하고 싶지 않기도 하다.
계획 세우기는 이제 습관이 되긴 했지만 그래도 그걸 얼마나 완벽하게 잘 지키느냐는 다른 문제라서 꾸준히 이 습관을 가꿔나가면 좋겠다.