우아한테크코스 7기 프리코스 4주 차 [BE]

Yehyeok Bang·2024년 11월 14일
8

회고

목록 보기
9/9
post-thumbnail

1~3주 차 회고에서는 미션을 수행하며 중요하게 생각한 부분과 다양한 사람과 주고받은 피드백을 중점으로 작성했습니다. 이번에는 약 4주 간 재밌게 몰입한 나에게 칭찬하며, 프리코스 과정이 제게 준 영향을 중점으로 돌아보려고 합니다.

4주 차 미션

어려웠습니다.

돌아가는 쓰레기를 먼저 만들고 개선하는 것이 아니라. 설계에 많은 시간을 투자하다가 마감 기간 때문에 돌아가는 쓰레기를 만들어버렸습니다...

지원 동기

저는 백엔드 개발자를 목표로 공부 중인 대학생입니다. 처음 전공과 개발 공부를 시작했을 때는, 모든 개념을 처음부터 끝까지 외우는 방식으로 학습했습니다. 하지만 학년이 올라가면서 점점 더 많은 시간이 소요되었고, 효율적인 시간 관리가 필요하다고 느꼈습니다. 그래서 다른 사람들은 어떻게 공부하고 시간을 관리하는지 궁금해졌고, 교내에서 운영하는 GDGoC(전 Google Developer Student Clubs)에 지원해 활동을 시작했습니다.

GDGoC 활동으로 깨달은 점은 누군가에게 배운 지식을 공유하는 경험이 학습에 큰 도움이 된다는 것이었습니다. 지식을 정리하고 공유하는 과정에서 제 자신도 다시 한 번 배울 수 있었습니다. 이 방식을 이어가기 위해 교내 멘토링 프로그램에 1년 동안 멘토로 참여하게 되었고, 지식을 나누고 피드백을 받는 과정이 즐겁다는 것을 깨달았습니다. 그래서 GDGoC의 서버 파트 운영진(코어)로 지원하여, 강의를 진행하거나 스터디를 진행했습니다.

대부분의 시간을 만족스럽게 보냈지만, 가끔 저에 대한 솔직한 피드백이 부족하다는 생각이 들었습니다. 제가 운영진이나 멘토 역할을 맡게 된 것은 단지 먼저 배울 기회가 있었기 때문이지 특별히 잘나서가 아니라고 생각했기 때문에, 저에 대한 날카로운 피드백을 원했습니다. 하지만 강의에 참여하는 분들 입장에서는 모르는 분야를 강의하는 운영진이나 멘토에게 솔직하게 피드백하는 것이 어려울 수 있다고 생각했습니다.

저는 제 자신이 제대로 성장하고 있는지에 대한 객관적인 피드백이 필요하다는 것을 깨달았고, 다양한 사람과 의견을 나누며 함께 성장할 수 있는 우아한테크코스에 큰 관심을 가지게 되었습니다.

프리코스 목표

저는 다양한 의견을 듣고 배울 기회를 소중히 여기며, 함께 성장하고 싶습니다.

목표 설정 및 달성

처음 프리코스에 지원하면서 다양한 의견을 듣고 배울 기회를 소중히 여기며 함께 성장할 것이라는 목표를 세웠습니다. 지금 생각해 보면 꽤 추상적인 목표였다고 생각합니다. 그럼에도 불구하고, 나아갈 방향만큼은 크게 다르지 않았고, 덕분에 대부분의 목표를 달성했다고 생각합니다.

상호 코드 리뷰

상호 코드 리뷰는 제 목표를 이루기 위해 가장 효과적인 방법이라고 생각했습니다. 특히 같은 문제를 다른 방법으로 해결하고, 그 이유를 듣는 것은 더 넓게 바라보고 비교할 수 있는 힘이 생기며, 누군가에게 도움을 주는 것뿐만 아니라 더 나은 답변을 작성하기 위해 학습하는 과정으로 함께 성장할 수 있다는 것을 체감했습니다.

저는 그중에서 검증 로직의 위치를 고민하면서 겪은 순간들이 기억에 남습니다. 3주 차 회고에서 각 미션마다 변화된 생각을 작성해두었습니다.

또한, 저와 리뷰를 나눈 분이 아니더라도 제출 PR을 확인하며 여러 사람의 의견을 보고 배우는 것은 매우 큰 도움이 되었습니다. 이처럼 제가 남긴 답변도 누군가에게 도움이 되지 않을까? 라는 생각으로 제 의도를 명확히 전달하고 더 나은 방향을 찾을 수 있도록 고민하고 답변을 남기려고 노력했습니다.

마지막으로 다양한 사람의 의견 덕분에 여러 방법을 경험할 수 있었으며, 이야기를 나누는 과정에서 저만의 이유가 생긴 것 같아서 뿌듯하고 재밌었습니다.

이런 생각을 가지고 있었습니다!

배운 것을 공유하기

부끄러움을 내려두고 함께 성장하기 위해 Java RecordEnum에 대해 공부한 내용을 공유했습니다. 공식 문서를 꼼꼼히 읽고 다른 분들이 이해하기 쉽게 정리하는 과정이 쉽지는 않았지만, 제가 이해한 내용을 더 깊이 생각할 수 있었고, 생각보다 블로그에 반응이 좋아서 학습과 나눔이 주는 기쁨을 경험하게 되었습니다.

좋은 경험이었던 대면 토론

같은 학교 학우와의 대면으로 모여 마감된 미션을 수행하며 중요하게 생각한 부분(설계, 요구 사항 분석, 학습할 키워드 등)에 대해 이야기하는 시간을 가졌습니다. 상호 코드 리뷰는 온라인 특성상 피드백 주기가 길고, 상대방의 컨텍스트를 완벽히 이해하기 힘들다고 느꼈습니다. 그래서 직접 만나서 코드를 작성할 때의 고민과 의도를 듣고 실시간으로 궁금한 부분을 물어볼 수 있었기 때문에 매주 만날 수 있었던 것 같습니다.

우아한테크코스의 프리코스를 경험하며 '함께 성장한다'는 것이 단순히 지식을 나누는 것 이상임을 다시 한번 깨달았습니다. 서로의 코드를 읽고, 피드백을 나누고, 때로는 가르치고 배우는 과정 자체가 우리 모두를 성장시키는 원동력이었던 것 같습니다. 덕분에 처음에는 추상적으로 느껴졌던 목표가 이제는 구체적인 실천 방법들로 채워져 있음을 느꼈고, 대부분 달성했다고 생각합니다.

목표를 조정하기, 생성형 AI 활용에 대한 관점 변화

처음에는 "AI 사용을 지양하자"라는 단순한 생각을 가졌었는데, 중간 회고 이후 이 관점이 바뀌었습니다. 토론 채널에서 다양한 의견을 접하면서, AI를 무조건 피하는 것이 아니라 '어떻게 하면 학습에 도움이 되는 방향으로 활용할 수 있을까'를 고민하게 되었습니다.

이러한 관점의 변화로 시간을 효율적으로 사용할 수 있었던 것 같습니다. 예를 들어, 새로운 개념을 처음 접했을 때 AI를 통해 간단한 예시를 요청하고, 공식 문서로 검증하는 방식으로 활용했습니다. 이렇게 하니 학습 시간은 단축되면서도, 정작 중요한 코드 설계와 구현에 더 많은 시간을 투자할 수 있었습니다.

무엇보다 "이런 상황에서 AI를 사용하면 왜 좋고 나쁜지"를 구체적으로 체감할 수 있었고, 도구는 결국 어떻게 사용하느냐가 중요하다는 것을 배웠던 과정이었습니다.

추가로 미션 단위의 작은 목표 중 하나인 구현 기능 목록을 살아있는 문서로 관리하라는 공통 피드백처럼 목표도 단순히 정해두고 달려가는 것이 아니라 지속해서 고치면 더 좋은 방향으로 성장할 수 있겠다고 생각했습니다.

미션 수행 전략과 그 효과

미션을 수행할 때 사용한 전략에 대해 돌아보려고 합니다.

공통 피드백을 통한 학습

저는 매주 공통 피드백에서 언급된 키워드들을 먼저 학습하는 전략을 세웠습니다. 이 피드백들이 더 나은 코드를 위한 방향성을 제시한다고 생각했기 때문입니다. 실제로 각 키워드의 장단점을 이해하고 나면, 어떤 상황에서 활용해야 할지가 자연스럽게 떠올랐던 것 같습니다.

반례 중심의 설계 접근

문제를 읽을 때마다 어떤 경우에 이 프로그램이 실패할 수 있을까?를 먼저 고민했습니다. 이런 접근은 검증 로직의 위치나 객체의 책임 범위를 결정하는 데 큰 도움이 되었습니다. 단순히 예시 테스트만 통과하는 것이 아니라, 실제 현장에서 발생할 수 있는 다양한 상황에서도 문제가 덜 발생하는 견고한 프로그램을 만들 수 있었습니다.

아쉬움과 깨달음

하지만, 이런 접근이 때로는 양날의 검이 되기도 했습니다. 미션의 난이도가 올라가면서 고려해야 할 사항도 많아졌고, 다른 분들의 의견을 들으며 새로운 반례와 구조적 단점들이 계속 떠올라 설계에 지나치게 많은 시간을 투자한 적도 있었습니다.

특히 TDD와 같은 새로운 방법론을 시도하지 못한 것이 아쉽습니다. 문제가 복잡해질수록 새로운 방식을 도입하는 것이 부담스러워졌지만, 지금 돌이켜보면 오히려 그런 상황에서 공통 피드백에 영상자료로 학습할 수 있던 TDD가 더 도움이 되지 않았을까 하는 생각이 들었습니다.

이번 프리코스를 통해 완벽한 설계보다는 점진적인 개선이 때로는 더 현실적인 접근일 수 있다는 것을 배웠습니다. 앞으로는 새로운 도전을 두려워하지 않고, 실패를 통해서도 배울 수 있다는 마음가짐으로 임하고 싶습니다. TDD와 같은 새로운 방법론도 쉬운 것부터 시도해 보면서 점차 시야를 확장해 나가는 것이 중요할 것 같습니다.

몰입이란?

프리코스를 진행하면서 경험한 가장 큰 변화는 문제를 해결하는 과정과 이를 위해 학습하고 나누는 과정이 즐거워졌다는 것입니다. 프리코스의 각 미션 자체가 하나의 도전 과제였고, 그 안에서 로직을 구현하거나 오류를 해결하는 과정들이 모두 작은 도전이었습니다.

이전에도 블로그 글을 작성하거나 동아리에서 강의를 진행한 경험이 있었지만, 그때는 상황에 따라 해야만 하는 일이라는 생각으로 임했습니다. 지금 생각해 보면 즉각적인 피드백을 받을 수 없어서 지쳤던 것 같습니다.

그러나 프리코스는 달랐습니다. 같은 목표를 가진 사람들과 일정 주기로 문제를 해결하고, 그에 대한 피드백을 쉽게 받을 수 있는 환경이었기 때문입니다. 자신만의 이유를 가지고 문제를 해결하고, 함께 성장하기 위해 피드백을 주고받는 과정은 매우 만족스러웠습니다.

또한, 이번 프리코스를 통해 앞으로 어떻게 학습하고 성장해야 할지에 대한 방향을 잡을 수 있었습니다. 앞으로도 프리코스의 구현 기능 목록 문서처럼 살아있는 목표를 가지고, 다양한 사람들과 함께 성장하고 서로 부담 없이 질문하고 도움을 주고받을 수 있는 개발자가 되도록 노력할 예정입니다.

4주 차 미션

이번 과제를 수행하면서 가장 크게 배운 점은 완벽한 설계보다 진척이 중요한 순간도 있다는 것이었습니다. 처음에는 요구사항을 완벽하게 이해하지 못한 채로 설계에만 과도하게 집중했습니다. 흔히 말하는 클린 코드, 객체지향 원칙과 같은 이상적인 목표에 사로잡혀 있다 보니, 정작 기본적인 기능 구현에 충분한 시간을 할애하지 못했던 것 같습니다.

또한, 돌아가는 쓰레기가 낫다는 조언을 들었지만, 저는 먼저 돌아가는 코드를 만들고 이를 개선하는 방식이 아니라, 완벽한 설계를 고민하다가 시간이 부족해져서 급하게 구현한 것 같아서 많이 아쉽습니다.

이 경험으로, 설계보다 요구사항을 꼼꼼히 파악하는 것이 우선이며, 시간은 한정적이므로 프로그램 규모에 맞게 우선 돌아가는 코드를 작성한 후 점진적으로 개선하는 것이 더 효율적일 수 있음을 배웠습니다. 특히, 설계에 과도하게 집중하면 오히려 유연한 변경이 어려워진다는 것도 큰 배움이었습니다.

마지막

듣고 배웠던 내용을 적용하여 다시 미션을 풀어보려고 합니다.

긴 글 읽어주셔서 감사합니다.

profile
부담 없이 질문하고 싶은 개발자가 목표입니다.

0개의 댓글