본문 바로가기

글쓰기

2023년 회고

이전에 대한 반성과 다짐을 자주 하는 거 같아 회고를 별로 적고 싶지 않았었다

하지만 그래도 적어야 나의 상황이 어떠한지 스스로는 어떻게 인지하고 있는지 알 수 있으니까

기록하지 않는 것보다는 거울 보듯 마주하는 게 나아지는 데 필요하다 생각이 들어 마침내 적게 되었다.

 

오늘에라도 적도록 행동하게 된 것에는 평소 인상깊게 보던 블로거 분의 회고글에 영향을 받았다

2023년 7월 42서울에서 마침내 2년 2개월 만에 공통과정을 돌파하고 멤버가 되었다.

 

 겨울에는 docker를 배우고 docker-compose를 이용해서 간단한 블로그 서비스(nginx, word-press, mariadb)를 docker로 띄워보았다.

docker의 유용성(어느 환경에서든 실행할 수 있도록 컨테이너 환경을 구축하여 구동)배우고 실습할 수 있어 좋았다. 다만 document를 꼼꼼히 읽고 각 관련 서비스(nginx, mariaDB, word-press)를 다른 깊게 하시던 동료카뎃분들처럼 했다면 뿌듯했을 거 같다. 컨테이너 올릴 때 어디서 에러가 났는지 친절히 알려주지 않아서 삽질이 많은데 그 부분은 결국 겪어야 하는 부분이니까 오래 걸리더라도 더 많이 삽질했다면 docker를 통한 가상환경 구축 능력에 좋았을 거 같단 생각이 든다.

 

 3월에는 CPP STL container를 CPP 98버전으로 vector, stack, map을 구현해보았다. 개인적으로 42서울하면서 가장 힘든 과제였다.

이전에 50여 시간 짜리 홍정모 CPP 강의를 알 수 만들어서 완주했었지만 그것만으로는 STL구현하기에는 더욱 많은 공부가 필요하였다.

방대한 코드를 파헤치고 래퍼런스 사이트(cppreference cplusplus)에 들어가서 정의된 부분을 이해하고 실습을 통해 동작을 이해하고 STL관련한 용어들(Template programming, Generic Programming, trait 등)에 대한 이해가 없었어서 관련한 문해력을 갖추는 것부터 필요했다.

안정적인 library가 되기 위해 할당 중간에 메모리 공간 부족으로 할당 실패를 고려하고 테스트하고

map에 쓰일 tree(BST, B-tree, AVL)에 대해 알아보고 CPP로 구현하고 테스트하고 이 모든 과정이 적지 않은 시간(순수 2개월)이 들었다.

초반에 STL에 대해 알아갈 때는 정말 마주하는 게 시간이었다. 이전과는 다른 형식의 프로그래밍과 흥미가 잘 생기지 않는 부분들로 인하여 꾸역꾸역 공식문서를 보고 자료를 찾아서 공부하고 스터디하였다.

42에서는 블랙홀이라는 마감기한(블랙홀이 지나면 퇴출된다)이 있기에 과제 마감 1주일 전부터는 클러스터(교육장)에서 기거하면서 밤샘 코딩과 동료학습을 하며 마무리 구현과 테스트를 했다.

가장 힘들었다. 이전과 10월에 완주한 마라톤 풀코스보다 힘들었다.

동료들이 에러 디버깅할 때 같이 봐주고 도와주었기에 큰 힘이 되었고 그 덕분에 과제를 마무리할 수 있었다.

 

 4월에는 CPP로 nginx와 같은 I/O non-blocking 형태의 웹서버를 3명이서 같이 만들었다.

나는 config 파싱 파트로 참여하여 nginx는 어떻게 돌아가는지 밤낮으로 실험해보고 document, 책을 찾아보며 이해하고 우리의 웹서버에는 어떤 항목들을 남기고 표현할지 고민하고 파싱 방식을 설계 및 구현하였다.

이전에는 파싱을 파트는 핵심 로직이 아니라 생각하지 않았었지만 다른 분과의 대화를 통해 사실 파싱은 어디에나 들어가던 부분이라는 걸 느끼고 웹서버에서는 파싱을 맡았다.

원하던 파트를 할 수 있어서 만족스러웠었다. 아쉬움은 나만의 방식으로 파싱을 했어서 코드가 불필요하게 길었던 점 (1,500~1,800줄)과 정석적인 파싱 방식(AST 만들어서 진행)을 쓰지 않았어서 그런 부분들이 아쉬웠다. 이후에 브라우저 파싱도 AST를 쓰는 것을 보고 결국 본격적으로 파싱을 하려면 AST 등의 방식을 익히는건 필수적이라 생각 들었고 파싱쪽에 있어서 원천기술 같은 것 아닐까라는 생각이 들었다. 그 덕분에 파싱에 관심 생겨서 밑바닥 부터 만드는 인터프리터 in GO, 밑바닥부터 만드는 컴파일러터 in GO 같은 실습 책들을 시간이 지난 이 시점에서라도 보게 되었다

 

 5월부터 42 공통과정 마지막 과제인 웹 프로젝트 트랜센던스 팀을 구성하여 스터디를 진행하며 프로젝트를 이어나갔다.

트랜센던스는 유저, 채팅, 핑퐁 게임 기능이 있는 웹 사이트로 3~5인이 한팀을 이루어서 진행하는 과제이다.

이전에 같이 하자고 이야기하였던 분들과 하다보니 6명이 넘었었고 이왕 이렇게 된거 여러명이서 같이 팀을 이루어서 프로젝트를 경험해보는 것도 좋은 경험이라는 의견들이 있었어서 더 모집하여 10명이 되었다.

파트를 3개로 나누어서(유저, 채팅, 게임)으로 한 파트당 3~4명이 맡으며 각 파트에서 동료학습을 하며 진행하였다.

다들 둥글둥글하신 분들이어서 큰 탈 없이 진행되었다. 파트별로 팀을 나눈 것이 좋은 효과를 내게 되었다.

 

5월에는 관련 스택들(svelte, nestJS)을 주차별로 목표(svelte && svelteket 학습, 간단한 svelte 프로젝트 구현, nestJS프로젝트 구현, Oauth 구현 등)를 정하여 각자 공부하고 주말에 모여서 리뷰하는 식으로 진행하였다.

직장인도 있었고 다른 프로젝트 하시는 팀원 분들도 있어서 적합하였었다.

나의 경우 충동구매로 전에 눈여겨보던 강의자분의 인프런 통계 강의 세일이 시작할 때 스터디를 만들어서 4월말부터 6월 초까지는 웹과 통계 스터디를 병행하였다. 나를 제외한 세 분이 통계 스터디원분들이 마침 대학원 준비 중이셨어서 열정적으로 준비하고 스터디에 임해주셔서 많이 배울 수 있었다.

완주를 하고 배울 수 있었다는 것에는 만족스러웠지만 좀 더 웹 공부들에 집중했었다면 어땠을까 하는 생각도 지났을 때는 들었다.

 

6월부터 7월 중순까지 프로젝트 통과까지는 본격적으로 클러스터에 모여서 평일에도 프로젝트를 하였다.

백앤드로 취업할 것이지만 일을 할 때 프론트앤드 엔지니어와 원활한 소통에 도움되지 않을까 하는 생각과 나만의 서비스를 혼자 처음부터 끝까지 만들어보고 싶다는 마음이 있었기에 프론트앤드를 하겠다고 자원했다.

채팅파트 팀원들과 피그마로 대략적인 채팅 화면들을 같이 구성하고 논의하여 구현을 시작하였다.

 

채팅의 경우 socket을 써야 하므로 6월 첫 주차에는 노마드 실행할 수 있도록 [zoom 클론코딩](실행할 수 있도록://nomadcoders.co/실행할 수 있도록) 강의와 책을 보며 실습하였다.

webRTC, socket IO와 고민 중 우리는 채팅이고 동영상과 비교하면 트래픽이 작으므로 굳이 클라이언트 자원을 많이 써서 운영되는 webRTC를 쓸 필요는 없겠다는 것으로 논의하였고 socket IO를 선택하였다.

피그마로 화면을 그리고 시나리오를 적었을 때는 금방 할 수 있을 거 같았다.

하지만 역시 구현하면 상상할 때랑 다르다는 것을 다시 한번 느끼며 조금씩 나아갔다. 간단하게 화면을 구성할 때도 화면의 깨짐이라거나 스크롤이 여러 개가 된다든지, 간격이 안 맞는다지 할 때 생각보다 시간이 들어갔으며 컴포넌트 호출이나 데이터를 주고받는 과정에 대해 생각해볼 수 있었고 관련 자료들을 찾아보고 테스트하며 적용하는 과정들이 필요했다.

프론트는 데이터를 클라이언트 단에서 보관하므로 받지 말아야 할 데이터와 클라이언트 단에서 데이터를 어떤 식으로 보관하는 것이 보안상으로 나을지 고민하고 주변에 물어봤었다

값이 바뀌거나 보여도 문제가 없다면 local storage도 괜찮지만 바뀌지 말아야 한다면 메모리에 store 등으로 보관하는 게 낫다. 하지만 역시나 클라이언트 단에 있는 데이터이므로 마음먹고 해킹하려 든다면 메모리도 안전하지는 않을 수 있다.

개발 관련 상세 고민은 23년 회고에 적기에는 길어져서 이만 줄이고자 한다.

 

10명이 함께하는 프로젝트라서 jira로 작업을 관리하였다. 팀원 한 분이 이미 jira를 쓰고 계셨어서 배우기 수월하였다

파트별로 구성하여 작업을 이슈로 만들고 누가 맡을지 표현할 수 있었고 작업이 진행 중인지 끝났는지 볼 수 있었고 이슈를 통해 git과 연동하여 브랜치를 만들 수 있어 편리하였다.

프로젝트 마무리 이후 평가를 위해 3일 정도 추가로 걸렸다.

평가를 받으려고 마무리 테스트만 진행하며 이전에는 보지 못하였던 에러를 찾을 수 있었고 그런 새로움들은 아침에 평가 받으려던 프로젝트를 밤늦게까지 디버깅하게 만들었다.

덕분에 동료평가 때 더욱 완성도 높은 상태로 평가를 받을 수 있었고 프로젝트 통과를 위한 3번의 평가를 잘 마칠 수 있었다.

 

 42서울 공통과정 2년 2개월의 여정을 잘 마무리 할 수 있어서 과제를 통과한 당일에는 감회가 새로웠다.

하지만 기분 좋은 건 당일과 초기 며칠 정도였다.

이젠 취업 길만 남았다.

 

 나는 여러 가지에 관심이 많고 욕심이 많았다.

취업 관련하여 node express, Javascript 스터디도 만들어서 진행하고 겪어야 하는 도서관 개발 프로젝트 검색TF팀으로 참여하여 겪어야 하는 2등으로 수상도 하였다.

원티드 챌린지, 커리어 신청도 하고 취업을 위한 CS 스터디도 만들어 진행하였지만, 아직 채용시장을 뚫기에는 나의 이력서와 포트폴리오는 무뎠다.

 

 배우고자 하는 욕심 있어서 이런저런 좋았을 거 이전처럼 많이 만들었다. 심지어는 당장 취업에 도움되지 않더라도 관심 있던 기초수학(수학독본), 선형대수(42심화 과정 과제, 3b1b, 이상화 선형대수 강의), 그래픽스(홍정모 그래픽스 강의 및 42심화 과정 과제) 부분의 스터디까지 만들었고 42슬랙에 올라오는 좋았을 거 at work, 자바스크립트 딥다이브 등)에도 참여하였다.

 

기존에 운영진으로 참여하던 42서울 독서동아리 비실용적 책 읽기도 공통과정 돌파 기념으로 이 책 저 책 월 2~3개씩 읽고 모임에 참여하고 동아리 운영업무도 이어서 진행하였다.

 

 9월에는 관심 두고 들어간 채해병 사건 진상규명 오픈카톡방에서 집행부로 권유받게 되어서 집행부 온라인 홍보로 참여하였다. 9월 23일 집회의 원활한 진행을 위해 여러 회의 참여와 회의록 작성, 집회 팜플렛 제작, 관련 자료 수집, 홍보 등의 활동을 하였다. 실무진이 되어서 활동하다 보니 사람을 모으는 것과 내용을 정리하고 정보를 공유하는 것에 여러 생각을 해보게 되었다.

회의 경우 대부분 직장인이셔서 밤에 진행되었고 회의록이 빠르게 정리 및 작성되는 것이 원활한 내용공유에 도움되므로 회의 끝나고 바로 하다 보니 새벽에도 작성하였다. 뜻깊은 일이었고 집회도 대체로 잘 진행되었어서 개인적인 보람과 사회참여를 좀 더 적극적으로 해보는 경험이었다는 마음이 들었다.

스터디들, 프로젝트 그리고 집회 집행부로 참여하다 보니 절대적인 시간이 모자라게 되었다. 취업을 위해 2기 집행부에는 참여하지 않는 것으로 말씀드렸었다.

 

여러 스터디와 독서모임은 12월 초까지도 참여 및 운영하였다.

점점 취업이 쉽지 않음을 느끼고 취업에 직접적이지 않은 스터디들과 독서모임은 그만하거나 잠시 쉬게 되었다.

나의 욕심과 처음 계획보다 목표(스터디, 프로젝트,독서, 모임 운영)들을 수행하는 데에는 생각보다 더 많은 시간이 든다는 걸 제대로 느낄 수 있었고 자신의 역량파악에 잘하지 못하였다.

 

이미 한번 늦어진 생활패턴은 잘 되돌아오지 않다.챌린저스를 통해 돈을 걸고 공부시간, 출석챌린지들을 진행하였지만, 점점 무뎌졌다.

약속에 늦는 게 늘어났고 손목,발 부상으로 운동을 조심하다 보니 활동량이 줄어서 오래 앉아있어도 뻐근하지 않고 오히려 계속 가만 있게 되고 몸도 늘어지게 되었다. 이런 생활이 반복되다 보니 최근에는 무기력해져 갔다.

이랬기에 회고를 적을 마음이 잘 안 들었던 거 같다. 그래도 거울을 마주해야 나의 현재 상태를 알고

더 자기관리를 하게 되는 것처럼 나의 지난 2023년을 되돌아본다.

일상을 지켜야 목표들을 지킬 수 있다 느낀다.

 

하고 싶은 수많은 목표를 성냥팔이 소녀가 성냥을 켤 때처럼 마구 상상하여 되기를 희망하며 1일 날 노션에 기록하였지만 여기서는 간단하게 최소 목표만 적어본다.

  • 22~23시에는 잠이 들어서 6시에는 일어난다.