챌린지는 CS 중심 학습 + 매일 주어지는 미션이라는 조합으로 진행됩니다.
챌린지의 가장 주요한 모토는 이론만 달달 외우는 게 아니라, 직접 만들어보면서 배운다는 Learning by Doing 입니다.
하지만 사람마다 최적의 방식이 다릅니다. 어떤 사람은 챌린지에서 추천하는 방식대로 대략적인 개념만 훑어보고 바로 코딩에 들어가서, 막히는 부분이 있으면 그때그때 찾아가며 배우는 방식이 맞을 수도 있고 저 또한 그게 더 효과적이라고 생각합니다.
그러나 저처럼 기초 지식이 없어 문제조차 이해하지 못하는 사람이라면 학습에 먼저 집중하고, 구현하며 학습을 복습하는 방식이 더 맞을 수도 있습니다. 실제로 저는 아는 전공 지식이 정말 첫 날에서 끝났기에 날마다 그 학습과 구현의 비율은 조금씩 달랐지만 아래와 같이 미션을 수행하려고 노력했습니다.
당일 키워드들을 빠르게 훑어봅니다. "아, 오늘은 이런 걸 다루는구나" 정도만 파악합니다.
피크타임(12시~7시) 중 상당 부분을 학습에 투자합니다. 미션에 따라서 거의 학습만 하기도 했습니다. 남들보다 구현하는 시간은 적었지만, 현재의 저에게 ai로 얼렁 뚱땅 구현하는 것보단 기초 지식을 탄탄히 하는 게 더 도움이 된다고 생각했습니다.
데이터 구조나 모듈화 등을 최대한 상세하게 정합니다. 사실 베이직은 주어진 체크 사항들에 맞춰서 구현을 하면서 설계를 작성하였으나, 챌린지에선 그 규모가 크고 계속해서 설계를 수정할 만큼의 여유가 없었기 때문에 스스로 어떤 부분을 어떻게 구현할지를 최대한 정하고 들어가려고 했습니다. (그랬음에도 많은 수정이 있었습니다,,)
구현을 하며 설계를 보완하고, 학습으로 돌아가기도 했습니다. 특히 뒤쪽 주차에선 피어 피드백에서 얻은 인사이트로 다시 설계부터 진행하기도 하고, ai와 학습 시간을 통해 제 코드를 기반으로 학습 정리를 돌아보기도 했습니다.
그런데 여기서 가장 중요했던 건, 야크털 깎기 레벨을 혼자서 결정하지 않았다는 점입니다. 저 같이 어디를 얼마나 공부해야 할지도 감을 잡지 못하는 사람에게는, "오늘은 어디까지 파고들어야 할까?"가 가장 큰 고민이었습니다. 이걸 AI와 함께 조절했습니다. AI가 최소한의 학습 목차를 제시해주면 그 안에서 깊이와 순서를 조정해가며 시간 내에 학습할 수 있도록 분배하였습니다.
저는 자신에게 적합한 학습 방식을 찾아서 앞으로의 성장에 적용하는 것이 챌린지에서 우리에게 주고 싶은 가장 큰 인사이트라고 생각합니다.
챌린지가 진짜 너무 힘들었습니다.
다른 분들이 "전공 수업에서 2~3주에 걸쳐서 내는 중간/기말 과제를 하루에 푸는 기분"이라고 하던데, 정말 그랬고 저에게는 더 했던 것 같습니다. 졸업/전공자 분들은 그래도 기본기가 있으니까 어느 정도 틀은 잡고 시작할 텐데, 저는 정말 맨 바닥에 매일 같이 헤딩하는 기분이었습니다. 하지만 그분들도 "전공에서 학습하거나 구현한 것보다 깊고 로우레벨에서 구현하는 것 같다"는 평을 남겼기에 얼마나 챌린지였는지 알 수 있었습니다.
당일 피크타임 종료(12시~7시)까지 학습만 하다가 구현은 ai와 애매하게 한 날이 대부분이었습니다. 최소한 7시, 최대 다음 날 새벽이 되어서야 "아, 이제 구현을 시작해야겠네"라고 생각하는 날들이 부지기수였습니다.
얼마나 학습을 할지, 얼마나 높은 완성도로 구현을 할지, 이 과정에서 어떻게 체력을 비축하면서 과제를 할 수 있을지가 모두 챌린지였습니다.
첫 주차에는 정말 "어떻게든 끝내겠다"는 마음으로 거의 자지 않으면서 버텼는데, 그러다 보니 오히려 금요일 저녁 회고를 놓치는 일도 발생했습니다...
그 후로는 전략을 바꿨습니다. 여전히 잘 자지는 못했지만, 적어도 맨정신으로 피어 피드백에 임할 수 있을 정도의 최소한의 수면시간은 보장하려고 노력했습니다. 아무리 급해도 완전히 정신을 놓고 하면 오히려 비효율적이라는 걸 깨달았기 때문입니다.
챌린지에서는 세 가지 팀 활동이 있었습니다.
그동안 저는 남의 코드를 적당히 대충 읽으면서 넘어가는 편이었습니다. "아, 대충 이런 식으로 했구나" 정도로 파악하는 게 저의 한계였습니다. 남의 코드를 읽고 각 항목별로 평가해야 하는 과제가 있었기에 가독성은 어떤지, 구조는 합리적인지, 주석은 충분한지... 등을 시간 내에 체크해야 했습니다.
이 과제 때문에 남의 코드를 끝까지 읽으려고 열심히 노력하게 됐습니다. 처음에는 한 줄 한 줄 따라가는 것도 힘들었는데, 점점 다른 사람의 사고 과정을 따라갈 수 있게 되었다. "아, 이 사람은 이런 식으로 문제에 접근했구나", "이 부분은 내가 생각하지 못한 엣지케이스를 처리했네" 같은 것들을 발견할 수 있게 되었습니다.
다른 팀원들 또한 제 코드를 읽어야 했기에, 가독성을 위해 변수명을 더 신경 쓰고, 폴더 구조를 더 직관적으로 만들고, 리드미를 더 친절하게 작성하려고 노력했습니다.
실제로 마지막 주에 한 팀원분이 "리드미를 읽는데 과정이 잘 보여서 재밌었다" 고 해주셨는데, 그 한마디가 정말 오래 기억에 남습니다.
제가 구현하지 못한 부분에서도 인사이트를 얻을 수 있었습니다. "아, 이 부분은 이런 식으로 접근할 수도 있구나", "이 기능을 쓰면 더 효율적이겠네." 등 그 다음 과제에서 활용할 만한 기능들을 알게 되기도 했고, 부족한 객체지향적 코드 작성 방식 같은 것들도 경험해볼 수 있었습니다.
특히 저는 가독성을 개선하는 것에 집중했지만 효율은 거의 따지지 않았는데, 성능 개선이나 알고리즘 반영 등을 통해 효율적으로 프로그램을 구현하신 분들의 코드를 보고 많이 배웠던 것 같습니다.
릴레이 프로젝트에서는 대화의 리듬을 리드하고, 그 전 주에 다른 팀원들과 나눈 이야기를 공유하거나, 활발하게 참신한 아이디어를 제안하도록 노력했습니다.
다들 "절대 I는 아닐 것 같다" 라고 하셨는데 저는 원래 파워 내향인입니다..😄 챌린지 기간 동안만큼은 서로에게 시너지를 얻고 많은 아이디어와 인사이트를 얻을 수 있도록 열심히 노력했던 것 같습니다.
챌린지를 시작하기 전부터 저는 다른 분들보다 AI를 다양하게 활용하고 있었습니다. 노래 추천 봇을 만들어서 취향에 맞는 음악을 찾아달라고 하거나, 영어 학습 봇으로 활용해서 회화 연습을 하거나... 하는 식으로 AI를 사용하고 있었습니다.
하지만 챌린지를 겪으면서 AI 활용의 폭과 깊이가 달라졌습니다. 여러 AI 도구들의 장단점을 제대로 알게 되었고, 더 다양한 도구들을 사용해볼 수 있었습니다.
주어진 자료만 가지고 답변하여 정보 오염을 줄이는 NotebookLM
이나, YouTube 영상을 분석해주는 Lilly
같은 도구는 처음 사용해보았는데 정말 유용했습니다.
AI와의 상호작용 방식도 다양화 하였습니다. 매번 새롭게 AI를 써보는 과제를 통해서, 단순히 제 질문에 대해 답변만 해주던 AI에서 벗어나 더 효율적인 활용 방식을 고민하게 되었습니다.
역할극을 활용한 티키타카, 학습 정리로 퀴즈 10개 만들기, 구현한 코드를 가지고 학습 정리를 복습하는 것 등이 기억에 남습니다. 학습했으니까 기억에 남았겠지~ 하고 안일하게 생각했던 부분들을 복습하면서 다시 기초를 탄탄하게 잡을 수 있었습니다.
AI가 만연한 시대에 AI와 차별점이 있는 개발자가 된다고 해서 아예 AI에서 벗어난 학습과 구현을 하는 건 현재 시대에 말이 안 된다고 생각합니다. 오히려 더 똑똑하고 효율적으로 AI를 활용하여 성장하는 게 중요하다고 생각하기에 뜻깊은 시간이었습니다.
가장 큰 아쉬움은 기초 지식이 없다 보니 피어 피드백이나 슬랙에서 나누는 이야기들을 가끔 알아듣기 힘들었다는 점입니다.
특히 성능 개선이나 알고리즘 활용 부분에선 고개만 끄덕이면서 나중에 찾아봐야겠다.. 라고 생각했던 것 같습니다. 현업에 가서도 동료들과 제대로 된 기술 토론을 하려면, 더 탄탄한 기초 지식이 필요 하기 때문에 앞으로도 기초 지식을 탄탄하게 해야겠다고 결심했습니다.
솔직히 말하면, 슬랙의 다른 분들처럼 챌린지를 즐긴다기보다는 버텨왔습니다. 마지막 날이 오기만을 기다리면서 하루하루 체력을 깎아 먹었습니다.
매일 새벽 2~4시간을 자면서 과제를 하고, 다시 아침 일과를 시작하는 패턴이 4주 동안 지속됐습니다. 챌린지라는 특성상 어쩔 수 없었다고도 생각하지만, 장기적인 학습을 위해서는 체력과 학습의 조화를 잘 지켜야겠다 고 반성했습니다.
처음에는 리드미를 정말 열심히 작성했지만, 가면 갈수록 구현 코드에만 집중하느라 저의 생각의 흐름은 생략된 채 간소화 되었습니다.
제가 추구하는 개발자는 다른 사람과 소통이 쉽고, 가독성이 좋고 친절한 문서를 작성하여 협업을 쉽게 하는 사람 입니다. 기술적인 실력도 중요하지만, 그것을 다른 사람들과 공유하고 함께 발전시킬 수 있는 능력이 더 중요하다고 생각합니다.
앞으로는 다시 초심으로 돌아가서 친절한 문서와 협업에 능한 사람이 되고 싶습니다.
이전부터 설계의 중요성을 알고는 있었지만 저는 문제가 눈 앞에 닥치면 구현부터 드립다 임하다가 설계를 수정하고, 수정하며 돌아가는 스타일이었습니다.
베이직에 이어서 더 복잡한 과제인 챌린지를 경험하면서, 설계, 그리고 작은 단계로의 분리가 얼마나 중요한지 다시 깨닫게 되었습니다.
무작정 코딩부터 시작하는 게 아니라, "지금 내가 해결하려는 문제가 정확히 뭔지", "시간과 자원의 제약은 어떤지", "이 과정에서 작성해야하는 테스트 코드는 무엇인지" 등을 먼저 정리합니다.
막히는 부분을 잘 파악하기 위해서, 시간 관리를 잘 하기 위해서, 또 성취감을 위해서라도 구현 단계를 최대한 자세하고 작게 나누려고 노력합니다. 사실 베이직 마지막까지도 체크 리스트가 주어졌기에 크게 신경 쓰지 않고 있었는데 챌린지에선 직접 작성하게 되면서 중요도를 깨닫게 된 것 같습니다.
단순한 검색 대신 단계 제시, 설계 검증, 시각화, 복습까지 AI와 함께 합니다. 물론 ai와 다른 개발자가 되기 위해선 더욱 더 스스로의 설계에 집중하고 원하는 바를 정확히 요구할 수 있는 개발자가 되어야하지만, 그렇게 되기 위한 과정에서 더욱 다양한 방법으로 ai를 활용할 수 있게 되었습니다.
챌린지 수료식 날 Butterfly 를 다 함께 들었습니다. 안 그래도 Grip! 이나 우리의 꿈 같은 옛날 애니메이션 노래들을 요즘 자주 듣고 있었는데, 왜 그런 노래들이 듣고 싶었을까 생각해보니 아마 "끝까지 포기하지 않고 버텨내자"는 말을 스스로에게 전하고 싶었기 때문인 것 같습니다.
매일 새벽까지 과제하고, 아침에 일어나서 다시 공부하고, 그러면서도 "오늘도 해내야 한다"는 마음으로 버텨온 4주였습니다. 그 자체로 힘들어서 관두고 싶었고, 다른 사람들은 다 잘하는데 나만 뒤처져서 앞으론 어떻게 할까, 재능이 없는 건 아닐까 불안함도 컸습니다.
중간에 컴퓨터도 고장나서 하루 종일 고치다가 미션도 놓치고, 노트북이랑 컴퓨터를 번갈아가며 쓰다가 미쳐 push 못한 코드도 날리고.. 했던 기억들이 떠오릅니다..
그럼에도 불구하고, 완벽하지는 않았지만 포기하지 않고 매일매일 최선을 다했기에정말 뿌듯한 기억으로 남을 것 같습니다.
이번 4주간 얻은 인사이트들을 앞으로의 평생 학습에 적용하고 싶습니다.
앞으로도 나만의 속도로, 나만의 방식으로, 하지만 꾸준히 성장하는 개발자가 되고 싶습니다.
읽어주셔서 감사합니다!
내일부터 멤버십도 화이팅!