부스트캠프 멤버십 1주차 회고
느낀 점
챌린지라는 조금은 익숙한 환경에서 멤버십이라는 낯선 환경으로 넘어가는 것이 꽤나 힘들었다. 스케줄, 문제 해결 단위, 작업 도구 등 다양한 방면에서 새로운 요구가 생겼다. 때문에 챌린지에서 조금씩 쌓았던 것들을 챙길 여유도 없이 적응하기 바빴던 한 주였다.
챌린지보다 멤버십이 여유롭다는 후기를 많이 봤는데 일단 내 경우엔 아니었다.
이번 주차에서는 특히 다음의 어려움들을 겪었다.
- 계획 세우기
- 낯선 것에 대한 거부감
계획 세우기
챌린지에서는 하루 단위로 작업을 나누고 최대한 수행해나갔다. 그때는 대략 13시부터 익일 05시까지 식사나 잠깐의 낮잠을 제외하면 계속 책상에 붙어있었다. 그럼에도 세운 계획을 끝내지 못하는 경우가 많았고, 그게 조금은 당연하게 여겨지는 기간이었다.
멤버십에서는 크게 두 가지가 달라져야 했다. 하나는 계획이 4일동안 이어져야 한다는 것. 다른 하나는 지속 가능한 형태의 계획이어야 한다는 것이다.
첫 번째 문제로 우선 미션이 한 번에 큰 분량으로 주어졌다. 이를 월요일부터 목요일까지 수행해나가도록 계획을 세워야 했는데, 여기서 챌린지와 가장 큰 차이가 발생했다. 오늘 못다한 계획이 있다면 내일 이어서 해야 한다. 그동안 챌린지에서 얼마나 무책임하게 계획을 세워나갔는지 깨닫게 되었다. 첫 주차 내내 당일에 처리하지 못한 작업들이 계속 빚처럼 쌓여나갔다.
두 번째는 하루 단위의 계획이 앞으로 며칠이든 몇 주든 이어질 수 있어야 한다는 점이다. 챌린지에서는 한 달 간 16번의 미션만 수행하면 끝이었다. 때문에 내 삶의 중요한 부분도 잠시 내려두고 몰입하는 순간을 가질 수 있었다. 그러나 멤버십에선 단순 기간만 22주이며, 멤버십에서 수행하는 활동의 목표는 현업에서도 이어질 수 있는 경험들을 쌓는 것이다. 즉, 이번 과정에서 앞으로 개발자로 살아가며 가져야 할 일과 삶의 균형을 맞추는 능력을 길러내야 한다고 생각됐다.
이 두 조건을 충족시키는 과정에서 하루에 투자할 수 있는 시간은 자연히 챌린지보다 줄었는데, 단순하게 계산했을 때 하루 평균 490분의 가용 시간이 나왔다. 문제는 멤버십에서 학습해야 할 지식의 가짓수와 깊이가 훨씬 늘어났다는 점이다. 더불어 구현할 사항도 많이 늘어났다. 그런데 하루에 투자할 수 있는 시간은 훨씬 줄어들었으니 최대한 촘촘하게 작업을 배치하게 됐다.
어쩌면 당연하게도 멤버십 첫 주차의 4일동안 여느 챌린지의 하루처럼 자연스럽게 그날의 목표를 달성하지 못했다. 그러다보니 아침에 가장 먼저 할 일은 전날 끝내지 못한 일들을 반영해 계획을 수정하는 작업이 되었다. 챌린지 기간동안 단순하게 할 일을 쪼개보고, 우선순위를 짐작해서 정해보는 정도를 연습했다면 멤버십에서는 진짜 내가 처리해나갈 수 있는 계획을 세워야 했다는 점이 가장 큰 변화라고 생각됐다.
낯선 것에 대한 거부감
멤버십을 시작하며 스토리보드에 대한 사용이 요구되었다. 나에게 스토리보드는 이미 불편함을 느끼고 사용을 꺼리던 도구였다. 이렇게 기술을 편식하면 안 된다는 점을 들었지만 스토리보드는 다시 만나도 여전히 답답했다. 직관적으로 쓸 수 있을 것 같은 UI에 대한 기대감에 비해 너무 필요한 기능을 찾기 힘들었다. 코드로 작성한 부분과 충돌되는 지점을 찾아내기도 힘들었다. 물론 익숙하지 않아서 계속 헤메게 되는 영향도 컸을 것이다.
이번 주차에서 스토리보드를 사용하면서 몇 번이고 코드로 처리하고 싶은 갈망이 느껴졌다. 특히나 정말 사소한 것 하나를 놓치거나 못 찾아서 계속 시간을 쏟아 부을 때면 이렇게 억지로 하는 게 맞나 싶기도 했다.
그러나 회고를 작성하면서 “코드로 처음 작업할 때는 안 그랬을까?”, “코드로 작업했으면 버그 하나를 해결하지 못해서 몇 시간을 매달리고 버텨야 하는 상황이 절대 없었을까?”와 같은 질문이 떠올랐다.
또, 이런 낯섦과 불편함이 스토리보드에만 국한되지 않는단 생각도 이어졌다. 가령 RxSwift에 너무 익숙해지면 Combine의 장점이 있다고 한들 새로 익히려고 하지 않을 수 있겠다. 내부 동작을 이미 명확하게 아는 UIKit을 두고 잘 추상화 된 SwiftUI를 꺼리는 경우도 생길 수 있겠다. 또는 집에 구축된 개발 환경이 너무 좋아서 회사나 카페에서 작업하기 싫어할 수도 있지 않을까.
결국 스토리보드를 사용하면서 스트레스를 받고, 불편함을 계속 느낀 건 코드로 하면 쉬울 것이란 내 마음이 가장 큰 원인이란 생각으로 이어졌다. 그리고 자연스럽게 JK님이 말씀하신 말랑한 사고방식이 떠올랐다. 새로운 것·다양한 관점을 유연하게 받아들일 수 있으려면 낯섦과 불편함을 잘 견뎌내는 능력이 필수적일 것이다. 하지만 모두가 알고 있듯 고정관념을 깨기란 어렵고, 스스로를 불편한 상황에 내던지는 것도 절대 쉽지 않다.
불편함에 익숙해지려면 결국 반복적으로 노출될 수 밖에 없다. 이번엔 스토리보드였지만 앞으로는 새로운 기술, 아키텍처, 디자인 패턴, 언어, 회사 등 다양한 낯섦이 기다리고 있을 것이다. 피할 수 없으면 즐기라는 말을 따르기 위해서라도 새롭고 낯선 것들에게서 어떤 즐거움을 찾아낼 수 있을지 계속. 예를 들어 어떤 점에서 내가 불편함을 느꼈는지, 어떤 부분에선 흥미를 느꼈는지 기록해본다면 나에 대해 좀 더 잘 이해하는 과정으로 바꿔나갈 수도 있지 않을까.
개선해보기
수행 가능한 계획
실행 가능한 계획으로 세우는 것은 결국 내가 어떤 작업에 얼마의 시간을 쏟아야 하는지 명확한 인지가 필요할 것이다.다행히 지난 챌린지 미션동안 하루의 모든 작업을 기록해뒀기에 작업마다 얼마나 시간을 쓰는지 대략적으로 알 수 있었다. 새로운 개념을 하나 학습할 때면 대부분 2–3시간을 소모했다. 이때, 학습은 깊이 파고들기보다 넓게 개념을 연결지어보는 식으로 진행했고, 실습으로 이어지는 경우도 거의 없었다. 구현과 설계는 가능한 1시간 단위로 목표를 잡았다. 다만 작업하다 보면 2시간에서 길게는 3시간까지 연장되는 경우가 잦았다. 테스트를 추가로 고려하거나 유지·보수가 쉬운 설계를 고민하는 것도 시간이 1시간씩은 소모되었다.
하루 490분이면 학습과 구현, 설계를 통틀어 2–4개정도를 처리해낼 수 있다고 예상된다. 다음주엔 이를 바탕으로 확실하게 수행 가능한 계획을 세워보는 것을 우선 순위로 잡아보려고 한다. 그럼 아마도 계획에서부터 미션을 다 못 하겠다는 선언이 보이겠지만, 내 능력을 확실히 인지하고 못 하는 걸 명확히 말하는 것도 필요하지 않을까…
또, 실제 구현이나 학습에 대한 소요 시간은 아래와 같이 생산성 측정 도구를 활용하려고 한다. 이런 프로그램들은 xcode로 작업할 때 어떤 프로젝트 파일을 열고 있었는지까지 측정해준다. 때문에 단순히 시간만 기록하는 것보다 더 정확한 정보를 토대로 개선해나갈 수 있으리라 기대된다.

낯섦에 익숙해지기
의식적으로 낯선 것을 하나씩 수행해보면 어떨까 싶다. 가령 터미널만으로 파일 작업, Git 작업을 모두 처리해본다거나 구현과 문서 작성의 순서를 바꿔보는 등의 시도는 낯설면서도 개발에 도움이 될 수 있는 지점이 아닐까. 언젠가 한 번은 AI없이 한 주 보내기도 시도해보면 재미있을 것 같다.
이번주에는 공식문서들을 번역기 없이 학습 정리해보는 시도로 시작해봐야겠다. 의역되면서 조금씩 의미가 달라지는 단어들을 좀 더 명확하게 인지할 수 있을 거란 기대가 있다.
DAKI
Drop
- 시간 단위로 하루를 계획하지 말 것
- 구체적인 시간 단위로 하루를 계획하니 실패하는 날들이 많았다.
- 아침마다 다시 계획을 수정하는 데에도 시간이 많이 소요되었음
Add
- 실제 소요 시간을 기반으로 한 단위 계획
- 하루 목표를 완료 가능한 단위 작업으로 한정 짓기
- 데이터를 쌓아가며 수행 능력 수치화 해나가기
- 생산성 측정 도구 사용
- 낯선 것 시도 루틴화 하기
- 주마다 1개 이상의 낯선 도구나 접근 방식 의도적으로 시도하기
- 터미널 기반 워크 플로우, 문서 작성 순서 변경 등
Keep
- 매일 30분 개발 서적 읽기
Improve
- 하루 종료 시 동료 PR 훑어보기
- 금요일 컴파일링 시간이나 피드백 시간을 위해서 더 자세히 살펴볼 필요가 있어보임
- 코드 읽는 연습이 되어야 한다고 느껴짐
- clone 후 지속적으로 pull 받아서 업데이트 하는 것에 익숙해지기