끝을 보는 용기

Spring 본캠프 Day 040 - [Java 문법 종합반] 3주차 수강 (1/2), 두 번째 코딩 리뷰, 깃허브 브랜치 생성

writingforever162 2024. 11. 15. 23:52

'분식데이를 맞아 순대, 오징어튀김, 떡볶이, 어묵을 먹으며 문득 이런 생각이 들었다. 튜터님들이 왜 그렇게 빠르게 강의를 듣고 직접 해보라고 강조하시는지 알 듯했다. 시간은 한정되었고, 그렇다면 효율을 극대화하는 게 맞으니까. 난 이 부분을 진짜 제대로 체감했다. 사전캠프에 막 참여했을 때만 해도 반복문이 뭔지도 몰랐는데 이걸로 어느새 계산기를 만들었으니까.'

 

'오히려 하나만 오래 붙잡는다면 게으른 사람이겠구나 싶었다. 강의 듣기뿐만 아니라 냅다 과제에 부딪쳐본다든지 코드를 직접 짠다든지 도전할 생각 자체를 안 하는 사람으로 비칠 수 있겠구나 싶었다. 불안을 핑계로 새로운 걸 하기 싫어서 강의 듣기만 붙잡는 사람으로 보일 수 있겠구나 싶었다. 몸으로 체화한 지식은 비록 말로 설명은 못 할지라도 손에 익어서 딱딱 나오니까.'

 

'저녁에 튜터님께 찾아가 2주 차 숙제 코딩 리뷰를 부탁드렸다. 변수명을 보고 무엇인지 단번에 파악할 수 있고 코드가 잘 읽히도록 썼다고 칭찬받았다. 무엇보다 장황하지 않은 동시에 의미가 잘 담기도록 이름을 어떻게 지을지 고민하는 습관을 일찍이 다져야 한다고 하셨다.'

 

'리뷰를 마치고 자리로 돌아가기 전, 튜터님께 보통 언제 주석을 다는지 여쭤보았다. 보통 읽었을 때 논리적인 흐름이 바로 이해되도록 쓰인 코드가 최고로 좋지만, 쉽진 않다고 하셨다. 프로그래밍 언어가 영어라 한국어와 문법이 다르기 때문이었다. 이런 이유로 튜터님은 쉽게 읽기 힘들 만한 부분이나 코드를 작성할 당시 왜 이렇게 썼는지 나중에 확인하고 싶은 부분에 주석을 단다고 하셨다. 고민이나 개선하고 싶은 부분을 포함해서.'

 

'당장 클린 코드(Clean Code)를 쓰긴 어려우니, 튜터님이 말씀하신 부분에 주석을 다는 연습부터 하기로 했다.'

 

'지금 많이 실수하고 자주 넘어져서 멍도 여기저기 들어야 나중에 그런 실수를 하지 않는다는 튜터님의 말씀이 마음에 와닿았다. 힘들 때는 '어? 나 지금 주인공 서사다'라고 생각하자는 팀원의 격려처럼.'

 

'튜터님께 '저는 무조건 스탠더드에 들어가야 합니다.'라고 의지를 불태웠다가 챌린지 반으로 들어가자는 과제 아닌 과제를 받았다. 저번에도 그렇고, 다른 사람들의 눈에 나는 되게 양성하고 싶게 생겼나 보다. 튜터님은 이틀 전에 처음 봤을 때보다 확실히 성장한 게 느껴지고 이해도가 높다고 하셨다. 게임 속 뉴비 캐릭터가 된 기분이 들었다. 근데 이제 고집은 좀 세서 키우는 데 고생해야 하는, 그런 캐릭터.' 

 

[습관 관련]

어제에 이어 자정 넘어 잤으나 꾸역꾸역 아침에 일어났다. 거북목 스트레칭과 허리 강화 근력 운동만 10분씩 했다. 문제가 막 해결되려는 와중에 딴 데로 집중력을 돌리기 싫었다. 너무 열심히 코드를 짰는지는 모르겠지만, 슬슬 손목이 아파온다. 손목 강화 운동까지 해야겠다. 

새싹에 물은 한꺼번에 많이 주진 않고 한 번씩 꼬박꼬박 주는 중이다. 내일은 점심 약속이 있어서 아침에 일어나서 한 문제를 후딱 풀 예정이다. 11월이 넘어가기 전에는 답지를 찾지 않고 한 방에 정답을 맞히는 실력을 갖추고 싶다.  

 

[학습 관련]

아침 10시 30분부터 11시 15분까지 45분 가량 튜터님께서 학습 방법 깜짝 특강을 진행해주셨는데, 정말 많은 수강생이 튜터님 방에 모였다. 보통 특강이나 발표회를 들을 때면 메모장을 한쪽에 켜놓고 냅다 기록하는 편이데, 그 양이 상당하여 혹시 시간상 참여 못한 사람들도 볼 수 있도록 공유하고 싶었다. 두서 없이 적었는데도 고마워하는 분이 적지 않아서 도리어 내가 더 몸둘 바를 몰랐다. 

오늘은 그때 새겨들으려고 키보드가 부서져라 써 내려간 내용으로 [학습 관련]에 <padding> 태그를 달아보련다.

 

1. 자바(Java) 혹은 스프링 부트(Spring Boot)를 공부할 때 핵심에 너무 집착할 필요 없다. 언어는 계속 진화하기 때문에.

 

2. 개념과 용어는 대략 머릿속에 집어넣고 직접 코딩하고 코드를 읽는 식으로 진도를 나가야 한다.

▶ 개발은 되게 넓고 각 부분이 유기적으로 연결되었기 때문에. 하나만 붙잡는다면 연결할 다른 부분을 학습할 수 없다. 

3. 딥 다이브(Deep Dive)보다는 N 회 반복이 훨씬 효율이 높다.

▶ 딥 다이브 식으로 공부하면 굳이 깊게 파지 않아도 되는 부분, 일명 심연에 빠질 수 있다. 소설책을 읽듯이 3일 만에 책을 한 권을 훑어보면 대충 키워드가 머릿속에 박힌다. 아주 낯선 단어라도 한 번이라도 봤다면 머릿속에 얼추 박힌다. 몇 번 반복해서 읽을수록 머릿속에 그림이 그려지고, 그림을 구성하는 각 파편이 무엇인지 또한 감을 잡을 수 있다.  

4. 우리가 책을 읽고 코드를 직접 작성하는 동안 알게 모르게 내공이 쌓인다. 책만 붙잡았다가는 내공이 쌓이지 않는다.

5. 개발 분야 학습 속도 2배 올리기!
① 강의를 1.5~2배속으로 들으면서 코드를 따라 친다. 
② 한 번 정주행한 강의를 두 번 정도 반복해서 듣는다.  
③ 강의를 들으며 과제를 한다. 
④ 과제를 하다가 막히면 적어도 강의 몇 번에서 설명했는지는 기억나므로 그 부분만 다시 보고 과제를 이어간다. 

6. 이해하지 못했을 때 느껴지는 찝찝함을 무시가 아니다. 어차피 강의 다시 볼 테니까! 

7. 강의는 참고 자료일 뿐, 주객전도가 되면 안 된다.  

▶ 우리는 4개월 만에 아무것도 모르는 왕초보가 개발자가 되어 취업까지 성공하는 과정이다. 즉 시간이 엄청나게 적다. 미친 듯이 성장해야 한다. 그런 만큼 어떤 강의를 듣고 싶거든 2배속으로 들어라. 혹은 과제를 하다가 막히거든 그 부분에 해당하는 강의만 들어라. 

8. 자바(Java)를 어떻게 공부해야 할까?
① 영어나 스페인어처럼 자바도 언어이므로 문법과 문맥과 흐름이 있다. 
② 예를 들어 계산기를 만든다면 "뭐가 필요하지? 숫자를 입력받아야 하겠구나. 음, 그럼 뭘 사용해야 하지? 아, Scanner 클래스를 써야 하는구나!"라고 입 밖으로 말하라. 어느 정도 직접 하거든 굳이 입 밖으로 얘기하지 않아도 구상이 착착 이루어진다!

주석으로 구상한 내용을 미리 적어둔 다음, 코드를 작성하며 주석을 하나씩 지우는 방법 또한 학습 효과가 높다.

 

9. 개발은 원래 어렵다. 

10. 질의응답

강의를 휙 훑고 지나가는 느낌이 강해서 코드를 짤 때 어렵습니다. 
▶ 자바만 또는 스프링 부트만 6개월 하는 부트캠프도 있다. 우리는 이 둘을 전부 4개월 만에 해야 한다. 즉, 다른 데보다 몇 배는 더 앞서가야 한다. 그렇기에 "이거 해 봐. 어라, 살아남았네? 이것도 해봐. 오, 했네?'와 같이 강의가 진행된다. '쭉 달리다 보니 어느새 개발자가 되었다'는 식으로 진행되니 당연히 어렵다. 튜터님들은 바로 이렇게 부족한 부분을 채워주고자 특강을 진행해 주신다. 다시 말해 '일단 잘은 몰라도 해내는 상태에서 수준별 학습과 특강의 도움을 받고 깨달음을 얻는 구조'가 좋다. '강의 듣고 나중에 해야지'보다는 일단 부딪치다가 도움을 받는 방식을 추천한다. 

② 강의를 들으면서 진도를 나가는데 계속 제자리걸음만 하는 기분이 듭니다. 개념을 모를 때 다시 찾아봐도 이해가 잘 안되고, 시간을 두고 하려고 해도 다음 주 되면 진도가 쳐질 듯합니다.
▶ 조금 조심스럽지만, '이해하면서 개발하기는 어렵지 않은가.' 시간이 지나면 자연스레 이해되어 있다. 처음엔 잘 모르던 부분도 나중에 보면 '응? 이런 걸로 고생했다고?' 상태가 된다. 프로그래밍적 사고방식 또한 시간이 흐르며 체화되기 때문이다. 그러니 걱정 말고, 일단 하라. 

③ 2주 차 강의에 나온 힌트를 읽는 방법을 몰라 한참 헤맸습니다. 그런 걸 잘 읽는 방법을 간단하게나마 알려주면 좋겠습니다. 
▶그 힌트는 사실 많이 쓰이진 않는다. 강의를 들으면서 그런 걸 다 알 필요는 없다. 즉, 모로 가도 서울로 가면 된다. 라면을 잘 끓이면 되지, 구성 성분을 알 필요가 없듯이 말이다.

④ 개별 과제를 감으로 푸는 듯하고 누가 개념을 물어보면 답이 바로 나오질 않아서 걱정됩니다. 크게 신경 쓰지 않아도 되는 걸까요? 
▶ 내일배움캠프 강의는 기초까지 완벽하게 채워줄 수는 없다. 우리는 강의를 다 듣고 나면 외관이 으리으리하고 화려한 모래성을 짓는 거다. 텅 빈 성 내부는 수료 후에 채우고 메워야 한다. 다른 사람이 봤을 때 성장 결과치가 높아 보이도록 캠프가 진행되기 때문이다. 수료 후 기초를 채운다면 외관이 멋지고 속까지 알찬 성을 만들 수 있다. 냉철하게 보자면, 두 마리 토끼를 다 잡을 순 없다. 

⑤ 이번에 이론을 공부하면서 해당 기능을 언제 사용해야 하고 언제 사용하면 안 되는지 구분할 줄 알아야 한다고 느꼈습니다. 코드를 단순히 사용하기만 하는 방법으로는 잘 모르겠습니다. 특히 '추상화'는 장점이 있지만 때론 다른 문제를 일으킬 수 있다고 봅니다. 이론을 적재적소에 사용하는 능력은 어떻게 길러야 할까요? 
▶ 코더는 단순히 코드만 짜는 사람이고 프로그래머는 확장성을 고려해 잘 만들려고 코드를 짜는 사람, 즉 개발자이다. 프로그래머가 되려면 경험치가 필요하다. 따라서 지금 막 이론을 공부하는 학습 방향은 비효율적으로 보인다. 뭔지를 알아야 이론을 적용할 수 있으니까. 현실과 이론은 다르기 때문이다. 지금은 시기상조이다. 바로 이론을 적용할 생각보다는 코드를 작성하다가 '어, 여긴 이런 이론과 겹치는데?' 정도만 느껴도 충분하다. 심화 과정쯤 가면 이런 느낌이 올 거다. 

⑥ 챗GPT에 많이 의존하게 되어 고민이 되는데 괜찮나요?
▶ 개인적으로, 아주 긍정적으로 생각한다. 나중엔 챗GPT 활용 또한 개발자의 역량일 될 거다. 단, 알고 써야 한다. 너무 의존하면 안 되지만 적극 사용은 찬성한다. 

 

[기타 사항] 

댓글 본 순간 빵 터져서 기념으로 남긴다. 내일 아침에 3주 차 강의를 최대한 듣고 왔다 갔다 하는 시간엔 핸드폰에 저장한 강의 자료를 읽을 거다. 그럼, 최소 세 번은 눈에 담을 수 있지 않을까.