-
약 2년 정도 일했던 회사를 올해 4월에 퇴사하고 6월에는 그 동안 신경쓰지 못했던 대학교 졸업을 챙겼다. 그리고 어느덧 정신 차려보니 벌써 8월 중순이 되었고 아득하게만 느껴지던 부트캠프 기간에서의 첫번째 섹션이 종료되었다. 기간이 비록 얼마되진 않았지만 부트캠프에서 여러 우여곡절도 있었고 하루하루 내가 감당하기 벅차다고 느꼇던 순간들이 잔뜩있었지만 그 때 마다 내가 왜 이걸 시작했는지 다시금 상기 시키면서 꾸역꾸역 따라온 듯 하다.
기존에 TIL을 올릴 때는 썸네일 이미지로 머리가 깨져가는 성룡 아저씨 짤을 썼는데 오늘은 그래도 나름 만족스러움을 느끼므로 그에 맞는 짤을 가져와 썸네일에 가져다가 붙였다. HA 마지막 문제를 풀고 제출한 다음에 내 표정이 아마 저랬을 거 같다. so... peaceful...
이번에 섹션 1을 따라오면서 몇가지 고충이 있었는데 대부분은 나의 학습방법에서 잘못되었다는 것을 인지하였다. 섹션1 기간동안 어떠한 문제점에 부딪혔고 그에 대해서 어떠한 방법으로 학습방법을 개선하였는지 정리해보았다. 그리고 마지막에는 섹션 1을 끝내면서 느낀 점도 한번 끄적여보았다.
코드는 눈으로 쓰는 게 아니고 손 아니면 뇌로 쓴다
그렇게 되진 않는다 공부를 하다보면 어느 순간엔 구글링이나 유튜브가 필요한 순간이 온다. 사실 구글과 유튜브는 개발하는 모든 사람들의 영원한 친구다. 그런데 나는 위 두개의 플랫폼 소스에서 검색하는 환경이나 목적을 조금 구분해서 쓰긴 한다. 보통 유튜브에는 영상물이라는 특성 덕에 좀 더 이해가 원활한 편이고 추가적으로 궁금증이 생기면 유튜브 채널에 질문을 남길 수가 있다. 그리고 유튜브에 올라오는 코딩 관련 영상들을 보다보면 조회수 때문인지는 몰라도 기초적인 부분을 다루는 영상들이 상당히 많다.
(내 주변 동년배들은 유튜브로 코딩 입문하더라!)그에 반해 구글링으로 검색하면 온갖 정보들이 텍스트 형태로 올라오는데 구글을 사용하는 경우는 내가 어느 관련된 내용에서 기초적인 개념은 잡히고 이에 대한 심화 부분이 궁금할 때 주로 사용한다. 기초적인 개념이 잡혀있으면 텍스트로 읽게 되더라도 이해할 때의 효율성 차이가 생기기 때문이다. (그리고 구글링 검색에는 잘못된 정보도 올라오기 때문에 내가 기초가 안 잡혀 있으면 잘못된 것을 맞는 것으로 인지할 가능성도 존재한다)
그래서 나도 섹션 1 기간에 공부를 하면서 리액트에 부딪혔을 때 유튜브의 도움을 다소 받았다. 특히 리액트에서 state와 props는 공식문서를 열심히 뒤젹거리다가 여러번 머리가 박살나는(?) 경험을 했다.
리액트 공식문서를 보고 두통을 호소하는 나의 모습.jpg 그런데 유튜브를 보니 이에 대한 기초 개념 이해가 효율적으로 진행되는 것을 느꼈다. 영상을 통해서보니 체감상 텍스트를 보면서 이해하는 것보다 상대적인 시간 소요가 더 적은 듯 하였다. 그래서 리액트 첫날에 어퍼컷을 후두려맞고는 울면서 리액트 관련 유튜브 영상들을 보는 것에 새벽까지 시간을 투자하기도 하였다. 그런데 이렇게 보기만 하는 경우에는 나중에 문제점이 생겼다.
막상 코드를 치려고 하면 개념은 이해하였는데 내가 어떻게 코드로 구현해야 되는지는 구체적으로 떠오르지 않는다. 마치 한국어가 어느 나라에서 쓰고, 누가 만들었고, 자음 모음의 구성으로 된 언어란 것은 알지만 한국어로 대화를 못하는 느낌이다. 그래서 그 다음부터는 유튜브 영상으로 공부를 하게 된다면 단순히 영상을 "시청"만 하는 게 아니라 옆에서 코드를 직접 쳐보고 다른 방식으로 시도하면서 내재화를 시켰다. 비록 시간은 좀 더 쓰게 될 수 있지만 효과는 굉장했다...!
위와 같은 방식으로 해봤더니 나중에 직접 코드를 작성하는 순간이 오더라도 좀 더 수월하게 작성이 가능했다. 그리고 어느 순간이 되면 머릿 속에서 코드를 치는 상상도 한다. 뇌 속으로 VS CODE의 창을 띄우고 그 안에 코드를 치는 비주얼을 연상시키고 있다.
(이건 좀 이상한데...)그리고 코드의 예상되는 결과를 추측해보고 그 연상된 비주얼이 소멸되기 전에 실제로 코드를 치면서 학습을 하니 좀 더 좋은 학습 효율과 좋은 결과를 가져올 수 있었던 것 같았다.
기록은 중요하다 { girok === important } === true
??? : 오랜만 ㅎㅇ 외장 저장 장치에서 지금은 1TB짜리나 그 이상의 외장하드들이 잔뜩 세상에 존재하지만 이전에는 기껏해봐야 10기가 짜리의 USB 같은 것이 보편적이었다. 이런 장치를 사용할 때는 뭔가 파일을 옮기거나 아니면 내 컴퓨터의 하드가 가득 차서 백업 용도로 사용하는 경우였다. 나의 기억력을 굳이 저장장치에 비유하자면 한 320KB짜리 플로피 디스크 수준인 것을 깨달았다. (이 녀석은 요즘 세상에 아무 쓸모가 없다)
내 머리는 어제 무슨 일이 있었는지도 기억이 잘 나지 않는다. 심지어는 당일 점심 메뉴도 기억나지 않는다. 이러한 부분은 공부할 때도 마찬가지였다. 그래서 내가 처음 선택한 방법은 어지간한 것은 무조건 기록하고 복습하는 것이었다.
나의 기억 쓰레기통.jpg 위에서 보이는 것과 같이 1차적으로 노션을 통해서 공부했던 모든 것을 기록했다. 여기서는 주로 핵심적인 내용에는 좀 더 강조해서 적고 그리고 디테일하면서 깨달은 부분들을 굉장히 러프하게 적었다. 그리고 이러한 내용들에서 좀 더 정리되면 2차적으로 이를 블로그에 기재하는 형태로 현재는 진행을 하고 있다. 처음에 블로그에 포스트를 작성할 때는 그냥 거의 저 러프한 내용들을 복붙하는 수준으로 포스팅했다. 그런데 점차 포스팅을 할 때 좀 더 정리하는 연습을 하기 시작했더니 지금은 어디 다른 사람들한테 블로그 링크를 공유해도 창피해서 쥐구멍에 숨고 싶은 수준이 아닐만큼 진화했다.
사실 이렇게 되면 노션에서 기재하는 것과 블로그에 포스팅 하는 것 2중으로 기록하는 노고가 발생되고 그에 따른 시간적 소요가 큰 것이 사실이다. 나도 처음에 이게 효율적 가치가 있는지도 고려했다. 그런데 예상 외로 재미있는 부분이 있었다. 어디서 들은 이야기인데 인간의 학습에 있어 복습이 중요한 것은 모두가 아는 사실이다. 그런데 복습의 효율에서도 차이가 나타나는 지점이 있다.
당일 낮에 학습한 내용을 당일 밤에 복습하는 것과, 다음 날에 복습하는 것, 그리고 3일 지난 시점에 복습하는 것의 경우가 있다고 하자. 각 그룹별로 복습하는 시간대를 다르게 하고 일정 기간이 지난 뒤에 학습한 내용을 기억하는지를 확인할 때, 당일 밤에 복습했던 그룹에서 평균적으로 기억력이 좋았다고 한다.
물론 나는 이 이야기를 듣고 당일 저녁에 출처 복습을 안 했기 때문에 출처가 불분명하여카더라 일수도 있지만 나는 적어도 매일마다 TIL을 당일 저녁에 작성하면서 복습을 하여 덕택을 많이 봤다. 그래서 블로그 포스팅을 복습의 개념으로 활용하여 지속적으로 작성 할 수 있었던 듯 하다.그리고 블로깅을 통한 기록은 위에서 보여줬던 나의 기억 쓰레기통을 뒤적거리는 것보다는 좀 더 핵심에 가까운 내용만 담겨있어 시간이 지나서 열어보기에도 좋았다. 복습하려고 블로그를 뒤져보고 못 찾으면 그 때가서 기억 쓰레기통을 뒤적거려 찾는 경우도 있었다.
(??? : 그만큼 기록은 중요하다는 것입니다. 알겠습니까? 휴먼?)
인생은 짧고, 하루는 더 짧다. To-do를 정리하자
아마, 자바스크립트 학습 초반이었을 거다. 복습을 하면서 mdn 문서를 보았다. 그런데 mdn은 초보자에게 다소 불친절한 친구라는 것을 경험해본 사람들이라면 모두 알고 있을 것이다. (살면서 이렇게 잘 쓰였는데 불친절한 친구는 처음본다!) 그래서 그냥 구글링하면서 다른 사람들의 블로그 포스팅으로 이해를 보강하고자 했는데 이 때 갑자기 누군가의 포스팅 속에서 렉시컬 콘텍스트라는 용어를 보았다. (oh... what is this?)
이어지는 흐름은 마치 '그곳에 산이 있기 때문에 저는 갑니다...' 의 로직처럼 그곳에 내가 모르는 단어가 있기 때문에 렉시컬 콘텍스트를 검색하였다. 그리고 렉시컬 콘텍스트를 보다가 실행 컨텍스트라는 개념을 찾게되고 또 모르는 개념인 스코프를 검색하게 되고 결국에는 클로저 개념과 관련된 문서를 읽고 있었다. 물론 이건 공부하는 범위의 확장성 측면에서는 좋은 느낌이지만 그날 밤 나는 내가 처음에 찾으려 했던 것을 못 봤다는 것을 깨닫게 되었다. 그리고 내가 찾아보던 개념들도 당시에 너무 초기에 찾던 부분이라서 충분히 이해하지도 못 했다.
이런 방식이 바람직하지 않다고 생각되지는 않지만 부트캠프 특성 상 단계적으로 이어지는 커리큘럼 코스에서는 선택과 집중이 필요하다. 내가 처음에 찾아보던 개념은 다음 코스로 넘어가기 위해서는 필요한 내용이다. 그런데 나는 짧은 하루의 시간을 활용해 바로 다음 코스에서는 그닥 필요성이 떨어지는 이상한 예습(?)을 했고 이에 따른 효율성 개선이 필요하다고 느꼈다.
노션에서 구현한 task board (노션 홍보 아닙니다!) 학습을 하기 전 오늘 해야될 내용들을 정리할 필요성이 있다 생각이 들었는데 이에 대해서 전통적인 방법을 사용하기로 결정했다. 아래와 같은 기준으로 하루에 혹은 장기적으로 해야될 내용들을 정리했다.
- 내가 오늘 중에 해야되는 것
- 긴급한 녀석 (오늘은 아니더라도 가까운 시일에 해야되는 것)
- 급하지 않은 녀셕 (일주일 뒤에 해도 됨)
- 오늘 중에 완료한 것 (저녁에 복습 체크 용도)
- 이전에 완료한 것들 (만족감 느끼기 용도)
이렇게 정리한 구분을 노션에서 구현했다. 그리고 앞서 내가 겪었던 상황을 예시로 적용했을 때 관리가 원활해지는 것을 체감할 수 있었다. 만약 자바스크립트의 화살표 함수에 관련된 코드들을 더 보고 싶어서 검색을 시작하는 경우, 렉시컬 컨텍스트 라는 키워드를 마주쳤을 때, 나는 이제 과감히 '급하지 않는 녀석' 낙인을 박아서 나의 노션에 그걸 정리하고 다시 내가 학습하는 부분들에 포커싱해서 하루 중에 나의 작고 소중한 목표를 완료할 수 있었다. 그리고 다음날 혹은 주말에 시간이 남게 될 때 다시 과감히 렉시컬 컨텍스트 개념을 내가 오늘 중으로 해야되는 것으로 바꿔서 거기에만 포커싱하여 학습을 마무리 할 수 있었다.
예시 이미지입니다 나의 경우에는 노션의 Board 기능을 활용해서 정리하긴 했는데 여기엔 나름의 이유가 있다. 처음에는 to-do를 활용했는데 무언가 시각적으로 진행되는 현황을 한눈에 확인하기도 어렵고 위에서 보이는 것과 같이
옹졸해보이기 그지 없었다. 그래서 시각적으로 좀 더 확 오는 무언가가 필요했고 보드를 활용했다. 보드에 할일 카드가 쌓여있는 것을 보면 위기 의식도 발동되면서 한편으로 완료된 카드가 많으면 나름의 만족감을 느끼게 되어 스스로 정신케어도 가능했다.예시 이미지입니다 2222
코딩 공부도 맞들면 낫다
이건 페어프로그래밍이 아닙니다... 앞서서는 주로 학습방법을 개선한 듯한 내용 위주였는데, 이번에는 본 부트캠프에서 경험했던 페어 프로그래밍에 대해서 이야기 하고자 한다. 처음 페어 프로그래밍이라는 개념을 들었을 때 위 이미지와 같은 모습을 연상했다. 그리고 코딩을 어떻게 둘이서 작성을 하고 진행을 하게 될지 의문감이 컸는데 이번에 경험해보면서 굉장히 좋은 경험을 가져올 수 있었던 듯하다.
섹션 1 기간동안 주어지는 과제들을 혼자서 했다면... 흠... 그 결과는 잘 예상이 안되지만 지금만큼의 발전이 이뤄지지 않았을 듯 하다. 코딩에는 정답이 존재하지 않는다. 그리고 한 사람의 사고는 결코 두 명이 합해서 나오는 사고만큼 다양성이 풍부하지 않다. 페어 프로그래밍을 진행하면서 나는 크게 고려하지 않던 부분을 페어의 궁금증을 통해 나도 한번 고려해볼 수 있었고 그 만큼 나와 페어는 성장하는 계기가 되는 느낌을 강하게 받을 수 있었다.
내 생각에 코딩은 결국에 끊임없는 버그와의 싸움이라고 생각된다. 그렇다면 이러한 버그들에 대항하기 위해서는 다양한 경험치가 있어야만 이에 대한 대응이 가능하다고 본다. 그런데 혼자만의 실수를 가지고 경험치를 쌓는 것보다 페어의 실수도 더해서 경험치를 쌓는다면 더 빠르게 성장할 수 있는 원동력이 된다고 생각된다.
또 코딩은 고독한 것이라고 하지만 다양한 페어들과 함께 하면서 많은 동기부여를 받아서 멘탈 쪽으로도 더 긍정적인 효과를 이끌어 올 수 있었다고 생각된다.
마무리
HA에서 떨어지는 나의 모습을 평행세계에서 보고 왔다 부트캠프에 들어오기 전에는 사실 많은 걱정이 있었다. 내가 잘 따라갈 수 있을까? 진도 못 따라가서 퇴출 당하는 거 아니야? 등등의 걱정거리 투성이었다. 그런데 코스를 따라가면서 막상 정신을 차려보니 섹션 1을 패스 했다. 그 과정은 생존본능 발동의 연속이었다. 스스로 계속해서 이걸 못 따라가면 '난 끝이다'를 계속 되뇌었다. 이런 생존본능 스위치를 계속 켜놓고서 공부를 하니까 살기 위한 몸부림을 쳤던 나의 기록이 남아있다. 앞에서 적어놓은 내가 부딪혔던 문제점들과 개선사항들은 모두 살아남기 위한 몸부림이었다. (320kb 플로피디스크에게는 살아남기 힘든 환경이다.)
하나씩 살기 위해서 살기 위한 방법을 찾다보니 어느새 내가 점점 발전해가고 있음을 깨닫게 되었다. 그리고 결과적으로 일단 섹션 1을 무사히 패스하는 유의미한 결과를 가져올 수 있었던 것 같다. 그렇기 때문에 이제 더는 진도를 따라갈 수 있을까? 라는 걱정보다는 내가 힘들어서 포기하는 것이 좀 더 두려워진 것 같다. (포기하고 싶은 순간이 오면 부트캠프 수강비를 떠올려야지...)
앞으로 당장에만 해도 다음주면 섹션 2가 시작되는데, 나는 운좋게도 섹션 1에서 많은 문제점에 미리 부딪히면서 개선을 할 수 있었던 것 같다. 물론 섹션 2에 가서 지금의 방법이 또 적용 안되는 구간이 생길 수 있는데 그래도 그 때가면 또 생존본능으로 따라갈 수 있을 거란 자신감이 생겼다. 앞으로 남은 일정도 부디 무사히 소화할 수 있길 기도하며 마무리 해본다...
'개발학습 > 코드스테이츠 SE Bootcamp' 카테고리의 다른 글
SEB 섹션2. 2일차 TIL - 재귀 JavaScript (0) 2021.08.25 SEB 섹션2. 1일차 TIL - 객체지향 JavaScript (0) 2021.08.23 코드스테이츠 SEB 21일차 TIL - 리액트 state & props / 알고리즘 문제 풀이 (0) 2021.08.17 코드스테이츠 SEB 20일차 TIL - 리액트 state & props (0) 2021.08.14 코드스테이츠 SEB 19일차 TIL - 리액트 SPA (0) 2021.08.12 댓글