본문 바로가기

Programming/boostcamp 7

9월의 첫 번째 주간 회고

2주 쉬었다고 코딩하라고 메일보내는 나쁜 플러그인

챌린지 마지막 회고에 꼭 세상이 멸망할 것 같은 가운데에 서 있는 비운의 만화 주인공마냥 오만가지 궁상은 다 부리더니 덜컥 멤버십에 합격해버리는 대 참사가 발생하고야 말았다. 합격 소식이 올 때 까지 너무 심란하고 개인적으로 복잡한 일도 있어서 좀 털어내는 시간을 갖고자 챌린지 때 코딩하던 수준으로 높은 강도의 놀음을(?;;) 즐기다가 생활패턴이 다시 무너져버렸는데.. 낮시간이 조금 힘들지만 그래도 밤에 그 만큼 보충해 나가는 식으로 어떻게든 하루하루 코드를 쓰고 있다.

 

형식이 많이 자유로워졌다. 하루하루 필수적인 학습정리나 회고도 없고, 누군가 무엇을 검사하지도 않는다. 그냥 텀이 긴 과제가 주어지고, 주어진 요구사항에 맞춰 혼자 어떻게 하루하루 무엇을 할 것인지 계획을 세워 혼자 학습한다. 중간중간 마스터님들이 강의를 해 주시는 시간이 있지만, 챌린지 때의 해설 영상보다 더 추상적이고, 지금 하고있는 과제에 추가로 학습해야 할(강요가 아닌 그저 '내가 잘 모르니 저걸 알아야겠어' 하는 생각이 들게 하는..) 물음표들만 한 바가지 쌓아 가는 시간이였다. 아무튼 그래도 남는 것은 기록 뿐이니 주기적으로 기록을 남기려는데, 원래는 좀 더 나중에 써야지 했지만 주말에 하는 코딩이 나를 오전 5시로 끌고와서 지금이 타이밍이다 생각하고 써 보고자 함..

 

챌린지때는 조원 얘기를 좀 많이 하게 되어서 혹시 조원들이 볼까봐(?;) 1주일 뒤에 올라가도록 예약 포스팅을 했었는데, 이번에는 그렇게 많이 할 것 같지 않아서 그냥 바로 올림 헤헤

 

* 늘 그래왔듯 이 글은 아무런 학문적인 무언가를 담고 있지 않습니다.

 

과제가 커지니 옛 버릇이 나오고

나는 항상 설계가 너무 약하다. 내 개인적인 우상은 철두철미한 계획 속에서 그 단계만 따라가다 보면 멋진 결과물이 나오는 그런 작업의 모습인데, 내가 세운 계획은 항상 삐뚤빼뚤 엇나가서 급하게 대충 메꾸는 판자집같은 느낌이다. 챌린지 때는 그래도 이런 단점이 크게 드러나지도 않았고, 개중에는 나름 어딘가 자랑이라도 하고 싶은 나답지 못한 깔끔함이 보이는 코드도 있었는데, 그런 느낌은 온데간데 없고 나는 다시 졸업작품 하던 시절의 사이버 노가다꾼으로 돌아와 있었다.

가장 큰 문제는 사용하는 기술 스택에 대한 무지함이다. sqlite, express에 템플릿 엔진으로 ejs을 사용중인데(아직 과제가 끝나지 않았음..) 나는 이 세 가지를 의식하고 사용한 적이 단 한 번도 없었다. 내가 가장 많이 다뤄본 것은 React 프론트엔드에 Firebase 얹어서 쓰는.. 그야 그 때는 내가 백엔드 공부를 할 줄 몰랐으니까;;

다행히 한 번도 안 써본 수준은 아니긴 한데, 그렇다고 안다고 하긴 커녕 써봤다고 하기도 부끄러운 정도의 스쳐지나감이라 공부가 필요하다. 깊은 공부가 필요한데, 시간이 없다. 데드라인이 정해져 있는데 그게 막연하게 멀지도 가깝지도 않아서 당장 얼마나 시간을 할애해도 괜찮은지 감이 오지 않았다.

 

숫자인지 문자열인지 모를 것을 문자열로 바꾸고 다시 숫자로 바꾸는..

아무튼 오늘도 최초에 만든 템플릿에 js selector로 사용할 className을 몇 개나 더 붙였는지, 연출을 위해 몇 개의 js파일을, 함수를 더 선언했는지 셀 수가 없다. 가장 큰 문제는 이걸 어디 반창고 붙이듯 툭툭 아무렇게나 붙여 놓으니 코드 가독성이 좋을리가 없다. 무엇보다 나는 한 프로그램을 작성할 때 여러 개의 파일을 사용하는게 아직도 익숙치 않아서.. 어느 기준으로 함수를 분리하고 어느 기준으로 파일을 분리할지도 갈팡질팡이다.

아 아무튼 DOM 제어 한다고

나중에 알게 된 건데, 캠퍼분 중 한 분이 DB에서 fetch해오는 함수 뿐 아니라 DOM 요소를 제어하는 부분까지 다 함수를 따로 만들어 쓰시더라. 처음에 보고 '왜 그렇게까지?' 싶었는데 내 코드를 보니까 역시 남들이 짜는 코드는 다 이유가 있구나 하는 생각이 들었다..

 

모든 것에는 규칙이 있다

나의 몇 안되는 유일한 협업 경험 중에 실제 서비스중인 웹앱의 코드가 떠오른다. 나는 모든 페이지의 element를 각각 class로 네이밍해 각자의 스타일을 지정해 주는 식으로 CSS를 적용했는데, 이 프로젝트에서는 'flex' (display:flex) 'm-l-15' (margin-left:15px)와 같은 식으로 각각의 프로퍼티마다 클래스 이름을 지정하는 식으로 레이아웃이 짜여져 있었다. 나중에 알아보니 이런 비슷한 스타일로 css를 적용시켜주는 TailwindCSS라는 것도 있다더라.

당시에는 이 방법의 장점이 뭘까 와닿는 것이 없었어서 이러한 스타일에 맞추어 코딩하느라 쩔쩔맸던 기억이 나는데, 막상 내가 수정이 아닌 직접 처음부터 코딩을 해 보니 일련의 장단점이 보이는 듯 했다. 당장 떠오르는 점은 HTML만 봐도 어떤 스타일이 적용되었는지 어느정도 짐작이 가능하고, css파일이 간결했다. '처음 만들 때 불편하지 않나?' 하는 생각이 들었는데 결국 처음부터 만들 때에는 어떤 방법이나 힘든건 똑같으니, 다음 주에 또 css를 다루는 과제가 나오면 이 방법을 무조건적으로 고수해보며 경험을 해 봐야 겠다는 생각이 든다. 일단 지금은 반반 짬뽕임..

 

나도 나름 신경썼다고 생각했는데 ;ㅅ;

다른 이야기인데, git의 branch, issue, pull request를 공부만 하고 실습해 본 경험이 없어 멤버십 초반에는 과제는 커녕 기초적인 제출조차 하기 버거웠다. 그 과정에서 참고하고자 다른 캠퍼 분들의 PR을 구경했는데, 이번 주 조원 두 분의 커밋 메시지가 어떤 형식을 갖추어 딱딱 나누어 커밋이 되어 있는 것을 보았다.

나의 커밋 기준은 '큰 거 하기 전'이다. 이를테면 수동으로 복구하기 귀찮은 패키지의 설치라던가, 특정 컴포넌트의 리팩토링 등.. '큰거'의 기준은 나의 기분과 내가 가진 시간에 따라 조금씩 변한다. 메시지는 '~~ 하기 전에 백업' '~~ 다했다' '~~ 거의 다함'같이 진짜 구어체적인 요약이라던지 '제발 잘수잇ㄷㄱ게해주ㅐㅅ요' 이따위 한줄 일기를 쓰기도 했다. 어쨌든 혼자 쓰는 레포였으니까;; 특히 gist는 웹에서 커밋 메시지가 안보이길래 신세한탄을 좀 많이 했는데, 그게 gist를 cli에서 가져오면 다 보이더라. 챌린지 때 조원분이 화면공유로 자기 코드를 보여줄 때 밑에 터미널에 내 신세한탄이 보여 너무 창피했던 에피소드도 있음..

그런데 결국 멤버쉽때는 내 결과물만이 아닌 '모든 구현 과정'을 리뷰받게 될텐데, 지금의 상태로는 도저히 그럴 수 있는 수준이 아니다. 문제를 인식한 나는 다음 날 데일리 스크럼 때 캠퍼분들에게 css와 커밋 메시지에 대한 질문을 했고, css에도 커밋 메시지에도 '지켜야 하는' 규칙이 있는 것은 아니지만 '지키면 좋은' 규칙이 존재함을 알았다. 이 때 컨벤션이라는 단어의 의미를 처음 알았다(;;)

 

프로그래머들에게 있어서 가장 유명한 논쟁거리(?)인 카멜 케이스 역시 컨벤션의 한 종류이고, 어쨌든 개발하는 과정에 있는 모~~든 요소들은 네이밍 컨벤션이 존재함을 알았다. 이제 무언가 새로운 것을 접하게 된다면 그것에 대한 네이밍 컨벤션부터 찾아보리라 다짐했다. 그리고 당장 다음 주 과제가 시작하기 전까지 CSS와 커밋 메시지에 대한 자료를 최대한 읽고 이해해서, 좀 더 정돈된 레포지토리를 만들어 보리라 다짐했다.

 

너의 TODO로는 팔만대장경을 쓰겠구나

방금 말했지만 정말 해야할 일이 많다. 당장 과제도 구현하고 있지만 좀 더 깔끔한 정리가 필요하고, CSS, 커밋 메시지 컨벤션에 대한 글도 읽어 보아야 하고, 마스터님이 추천해주신 여러가지 책들, 조원들 레포지토리 좀 더 읽어보기, 깃헙 issue 사용법 찾아보기 등등.. 하루하루 코딩을 할 수록 읽고 공부할 것들이 배로 늘어나고 있다..

 

챌린지때는 하루 단위로 과제가 있어 맺고 끊음이 명확하고, 주말에 보충할 시간이 보장되고, 달성해야 할 지점이 나름 명확하게 주어져 있었다. 그래서 성장 체감이 무척 확실했는데, 당장 멤버십에서는 불투명한 체크포인트에, 자연스럽게 만나는 지나치게 많은 물음표들에 지금 당장은 살짝 막막하다.(지금 3일차) 지금 당장만 해도 계획이 무너지고 생활리듬이 깨져 5시까지 코딩을 하고 있으니까.. '어떻게 하면 되겠다' 하는 감이 안와서 그런 듯 하다. 앞으로 배울 것들도 중요하지만 이 부분을 빨리 명확하게 세워야 앞으로의 4개월을 건강하고 알차게 보낼 수 있을텐데 걱정이다.

 


한 스프린트가 주말을 낀 1주일로 되어 있어서 아직 일수로는 day 3이긴 하다. 4달이면 거진 120일인데 벌써 이 만큼의 할 말이 생겼다. 솔직히 지금 당장은 마스터님이나, 아니면 다른 캠퍼분들의 블로그나 코드들을 보면서 아무 가진게 없는 스스로의 모습에 조금 겁을 먹은 상태긴 하다. 심지어 나는 이렇게 주말까지 부어가며 겨우 구현하기 바쁜데 어떤 분은 주말동안 해커톤을 다녀 오셨다더라 진짜 하루가 48시간이신가 어떻게 저럴까

그래도 저렇게 오랜 시간 꾸준히 지식을 쌓아 온 분들과 같은 문제를 같은 느낌으로 풀어낼 수 있길 바라는 것 자체가 요행이니까, 나는 나대로 고생하면서 배워가는게 있으면 되겠지 하며 애써 괜찮은 척 중이다.. 진짜 나 어쩌냐 ;ㅅ;

 

그것과 별개로 주말 껴서 스프린트가 있는거 정말 필요하지만 고통스럽다. 쉴 때와 공부할 때가 도통 분리가 안되서 체력 관리도 힘든데 그렇다고 이게 월~금으로 1주였으면 시간이 모자라서 구현하지 못했을 것 같다. 뭐야 이렇게 써놓고 보니까 나한테 직접 고르라고 했어도 수~화 했겠네 저는 지금이 행복합니다 땅땅 끝

 

마지막으로 이번주 하이라이트

ㄻㄶㅁㄴㅇ호ㅠㅇ뮤모오몸모 가 대체 어디서 붙은거지 한참을 찾았음

나중에 보니 데이터베이스 테스트하려고 컬럼에 저렇게 써넣은거였음..