[네이버 부스트캠프] 웹·모바일 9기 챌린지 과정 3주차 회고
해당 내용 중 문제가 될 사항이 있다면,
rdyjun00@gmail.com 또는 댓글로 알려주시면 감사하겠습니다.
3주간의 과정을 마치고, 내일부터 새로운, 그리고 마지막인 한 주를 남기게 되었다.
여러 경험들을 하면서 느꼈던 감정들과 앞으로의 한 주에 대해 작성해볼 생각이다.
🚦 3주차 소감
3주차부터는 짝과 함께 서로의 코드에 대해 개선할 점에 대해 이야기 해주거나,
같이 프로그래밍을 해보면서 새로운 경험을 쌓을 수 있었다.
사실 지난 주에 이미 짝끼리 프로그래밍하는 과정을 이미 겪었어야 했지만,
개인적인 일이 있어서 그러지 못했다.
우선 이렇게 짝과 함께하는 과정을 겪으면서 많은 것을 얻을 수 있었다.
👓 새로운 시각(관점)
부스트 캠프에서 강조하는 것은 함께 성장이다.
지난 주 까지는 거의 혼자 문제를 해결하면서
공개적인 공간에서 다른 사람들과 자신의 고민을 나누고, 공유하며 함께 성장해 나갔다면,
이번엔 직접적으로 짝으로 구성되어 우선적으로 짝과 직접적인 교류 및 성장을 할 수 있었다.
여기서 직접적인 교류와 성장은 서로가 문제를 어떻게 이해했는지,
이해한 문제를 어떻게 접근하려 했는지, 코드는 어떻게 작성이 되었는지를
서로 설명하고, 이해하는 과정에서 느낄 수 있었다.
예를 들어, 나는 A라는 접근방법을 사용했다면, 나의 짝은 A라는 방식을 같이 사용할 수도,
아니면 B라는 새로운 방법을 사용할 수도 있다.
여기서 만약 짝이 나와 다른 B라는 방식을 사용했다면,
나와 짝은 서로 새로운 접근 방식을 습득할 수 있고,
이를 자신의 것으로 맏늘어 새로운 접근 방식으로 재구성할 수도 있다.
짝이 나와 같은 접근 방식이라고 하더라도, 코드는 같을 수 없기 때문에
결론적으로, 나와 다른 코드 작성 방식을 배우게 된다.
이렇게 짝 활동에서는 서로의 고민을 이해하는 과정에서
학습이 이루어지고 동시에 성장이 이루어진다.
이번 한 주의 미션을 수행하면서 많은 고민들을 이해하고 내 입장에서 생각해 본 것 같다.
💡 개선된 코드 작성 방식
짝과 그룹지어 활동하다보니, 지난 2주 보다 더 세밀하게 코드 작성 방식이 개선된 것 같다.
운이 좋게도 이번 주 팀도 좋은 분들을 만나, 나의 접근 방식에 궁금증을 가져주고,
새로운 개선사항들에 대해 이야기 해주시는 분들이 많았다.
어떤 점이 개선되었는지에 대해 몇 가지 예를 들자면,
자바스크립트에서 사용하는 상속을 실제로 적용하는게 약했는데,
어떤 상황에 적용해야 하는지에 대해 기준이 선 것 같다.
또한 클래스에 대한 인스턴스가 생성되지만 사용되지 않는 코드를 작성했었는데,
이러한 코드에 대해서는 팩토리 함수나 클로저와 같이 변형하여 사용하는 것이 좋다는 피드백을 받았다.
이후 피드백에 대한 개선을 하면서 팩토리 함수나, 클로저에 대한 사용 기준도 생긴 것 같다.
결과적으로 이번 한 주는 코드에 대한 개선점을 찾는 데 많은 도움이 되었다.
🤝 새로운 경험 - 페어 프로그래밍
서로의 코드를 개선해준다거나, 같이 프로그래밍을 한다는 것이 비단 처음은 아니다.
대학에서의 동급생과 코드를 리뷰하거나, 같이 프로젝트를 만들어나가면서 겪어봤다.
하지만 부스트캠프에서 느꼈던 특별함은 바로 드라이버와 내비게이터이다.
많은 분들이 팀 프로젝트를 하면서 각 기능에 대해 각자 구현하는 정도는 경험해 봤을 것이다.
내가 느낀 새로운 경험은 위에서와 같이 각자의 기능을 각자가 구현하는 데에서 나오는 것이 아닌,
두 명 이상의 짝이 드라이버와 내비게이터로 나뉘고, 또 특정 시간에 맞추어 돌아가면서 개발하는 과정에서 나왔다.
여기서 드라이버는 코드를 작성하는 사람을 의미하고, 내비게이터는 드라이버에게 맞추어 기능 구현을 주문하는 사람이다.
드라이버와 내비게이터로 나누어 개발할 때의 이점은 하나의 기능에 책임을 분리하여 구현할 수 있다는 점이다.
개발을 하면서도 각 기능에 대해 책임을 나누고 클래스에 책임을 부여했던 경험이 있을 것이다.
페어 프로그래밍도 마찬가지로 팀에서 책임을 나누어 각자의 책임에 충실하면 되는 문제이다.
이 프로그래밍 세계에서는 책임을 참 좋아하는 것 같다.
누구나 한 번쯤은 기능을 구현하다가 이어서 어떤 걸 구현해야 할지 까먹거나,
구현하다 좋은 방식이 떠올라 적용했는데, 나의 원래 코드와 맞지 않아서 헤맸던 경험이 있을 것이다.
여기서 페어프래밍을 적용한다면, 드라이버는 당장 구현해야할 코드에 대해 어떻게 구현할지만 생각하고,
이를 코드로 적어내면 되고, 내비게이터는 전체적으로 기능 구현에 필요한 사항들을 고려하면서
드라이버의 행동을 보고 올바른 방향으로 코드를 작성해 나갈 수 있도록 실시간으로 피드백하며 인도해주면 된다.
이 방식이 누군가에겐 별로라고 생각이 들 수 있다. 빨리빨리를 좋아하는 나도 처음엔 그렇게 생각했었다.
하지만 실제로 이런식으로 프로그래밍을 하다보면, 외딴섬에 혼자 떨어진 내가 아닌
어떻게든 머리채가 잡혀 앞으로 나아가는 나를 볼 수 있다.
여러명이서 하나에 집중하여 구현해 나간다는 것은 서로가 도로 바깥으로 넘어가지 않게 지켜주는 좋은 경험이다.
페어 프로그래밍이 길을 잘 따라 구현할 수 있도록 하는 방식인 건 알겠다. 그런데 그뿐만이 아니다.
부스트 캠프에서 강조한 것은 교대이다. 즉 한 명만 드라이빙 하는 것이 아니라, 돌아가면서 한다는 의미이다.
“왜 돌아가면서 할까?” 에 대한 답으로는 각자가 맡은 책임을 계속해서 수행할 때, 피곤할 수 있기 때문이다.
서로가 책임을 바꿔가면서 다시금 각자의 역할을 상기시키고, 수행하려고 노력하는 과정에서 뇌를 깨우게 된다.
나도 이 방식에 대해 동의하고, 이와 별개로 내비게이터, 드라이버를 돌아가면서 해봤을 때의 장점이
바로 서로가 가야할 방향을 한 명의 내비게이터만 생각하는 것이 아니라, 돌아가면서 생각할 수 있다는 점이라고 생각한다.
하나의 책임만 수행했다면… 드라이버는 분명 핸들을 잃고 엑셀과 브레이크만 밟는 사람이 될 것이다.
결론적으로 페어 프로그래밍을 하면서 너무 멀리만 생각하지 않고 지금과 다음을 고민해보면서 프로그래밍을 할 수 있었고,
비로소 더 나은 결과물을 만들어낼 수 있는 좋은 경험이라고 생각한다.
✍️ KPT
✅ Keep
내 행동에 있어서 만족하며, 계속해서 지켜나가야 할 것이다.
- 꼼꼼하게 체크포인트 작성하기
- 체크포인트 별로 커밋 관리하기
- 적절한 학습 선행하기
- 적절한 숙면 시간 지키기
⚠️ Problem
내 행동에 있어서 개선해야할 점이다.
- 학습에 대한 진도가 느리다.
- 상대방의 코드를 읽는게 느리다.
♻️ Try
당장 실행 가능한 개선할 점에 대한 해결책이다.
- 검색한 학습 자료에 대해 조급해하지 않고 천천히 이해하려고 노력한다.
- 상대방의 코드를 처음부터 한 줄 한 줄 읽지 않고 전체적인 흐름을 먼저 이해하려고 노력한다.
🚀 그래서?
결론적으로 이번 주도 새로운 경험을 가지면서 성장에 큰 도움이 되었다고 생각한다.
이러한 경험 자체가 이 다음의 경험을 만들어주는 시작점이 된다고 생각하기 때문에,
남은 한 주도 계속해서 배우고, 나의 학습 방식으로 습관이 남기를 바라고 있다!