우아한테크캠프 6기 교육생들의 7월 회고

Aug.22.2023 박현선

우아한테크캠프

6월 말 풋풋한 오리엔테이션으로 처음 인사를 나눈 우아한테크캠프 6기가 시작된 지 벌써 한 달이 훌쩍 지나가고 있습니다.
이번 우테캠은 Java 언어 기반의 백엔드 교육으로 구성되어, 지난 7월 동안 강의와 함께 미니 프로젝트를 개발하는 형식으로 활발히 진행되었는데요.
뜨거웠던 7월을 마무리하는 시점에 교육생 각자의 관점으로 바라본 캠프 활동을 회고에 담아내었습니다.
솔직하고 진솔한 경험의 흔적이 담겨있기도 하고, 스스로 느낀 성공과 실패, 어려움과 극복의 순간들이 그려져있기도 합니다.

우테캠 6기 교육생분들의 생생한 7월 회고 글을 소개합니다 🙂


박예림 “열정 치사량”

1. 시작 전

우아한테크캠프 시작 전의 나는 졸업을 앞둔 취업 준비생이었다. 처음 취업 준비를 시작할 때만 하더라도 금방 원하던 기업에 입사할 수 있을 것이라고 생각했다. 그러나 현실은 기대와는 달랐고, 나는 연이은 불합격 소식을 맞이하였다. 이러한 상황으로 스스로의 부족함을 깨닫게 되었지만, 어떻게 부족함을 메워야 할지 해결책이 떠오르지 않았다. 더군다나 주변에 개발자로 취업 준비를 하는 친구도 없어서 이러한 고민을 나누기도 어려웠다.
당시의 나는 함께 개발 이야기를 나눌 수 있는 친구가 필요했고, 개발자로서 성장하는 방법을 알려줄 멘토가 필요했다. 그러던 중 우아한테크캠프 6기가 모집 중인 것을 알게 되었는데, ‘개발자로서의 성장을 위해 어떤 것들이 필요하고 어떤 것을 배워야 하는지 궁금하고 경험해 보고 싶은 분들을 환영합니다’라는 문구를 보고 내가 찾던 그대로의 활동이라는 생각이 들어 곧바로 신청하였다. 운이 좋게도 우아한테크캠프 6기에 합류할 수 있었고, 캠프가 끝난 후 성장해 있을 내 모습을 기대하며 캠프 생활을 시작하였다.

2. 현재의 라이프

나는 무엇을 목표하는가

이전에 두 달간 인턴 생활을 한 적이 있다. 꽤 규모가 크고 실력 있는 개발자들이 많은 회사였기에, 인턴 생활만 하면 엄청나게 성장해 있을 줄 알았다. 그런데 지금 그때의 생활을 되돌아보면 내가 인턴으로 일한 두 달간 무엇을 얻었고, 배웠는지 전혀 모르겠다. 분명 잠을 줄여가며 주말에도 열심히 일했는데 아무것도 남은 게 없다. 그렇기에 이번 우아한테크캠프에 참가하면서, 이번에도 두 달이라는 시간 동안 아무런 성과를 내지 못하면 어떡하지 하는 불안감이 가득했다.

‘어떻게’ 하면 성과를 남길 수 있을지 조급한 마음이 들어 한 멘토님께 질문을 드렸었는데, 오히려 이번 캠프에서 ‘무엇을’ 달성하고 싶은지 역질문을 받았다. 이때 상당히 머리를 맞은 듯한 기분이 들었는데, 왜냐하면 머릿속에 ‘그럴듯한 기록 남겨서 빨리 취업하고 싶어요’ 외의 아무런 생각도 들지 않았기 때문이다. 취업에 대한 압박감으로 마음은 조급한데 정작 특별한 행동을 취하고는 있지 않았던 것이다.

이 대화를 계기로, 계속해서 내가 목표하는 게 뭔지 고민하는 시간을 가졌다. 이전과는 다르게 취업을 위한 그럴듯한 스펙이 아닌, 나의 흥미를 끄는 분야에 집중하고 싶었다. 고민 끝에 ‘대용량 데이터 다루기’와 ‘매일 공부한 내용 기록하기’라는 목표를 수립하였고, 현재는 목표 달성을 위해 조원들과 SQL 최적화 스터디를 꾸준히 진행하고 있다. 남은 기간 동안 목표를 전부 달성할 수 있을까 의구심도 들지만, 어차피 조급해 한다고 문제가 해결될 것도 아니니 그냥 지금 상황을 즐겨보기로 했다!

열정적인 동료들과 함께 한다는 것

누군가 우아한테크캠프에서 가장 만족스러운 게 무엇이냐고 묻는다면, ‘함께 하는 캠프원들’이라고 말하고 싶다. 이런 틀에 박힌 말을 선호하는 편은 아니지만, 사실이 그렇다. 나는 주변에 개발자 친구가 없었기에 함께 개발 이야기를 나눌 수 있는 사람이 필요했다.

우아한테크캠프에는 어떻게 이런 사람들만 뽑아왔지 싶을 정도로 다들 개발에 진심이다. 캠프 과제를 수행하면서 가장 어려웠던 부분이 객체지향적으로 설계하는 것이었는데, 이럴 때마다 교육장을 한 바퀴 돌면서 다른 분들은 어떻게 했는지 여쭤보면 각양각색의 의견을 들을 수 있다. 심지어 때때로는 어떤 설계가 좋은지 토론이 벌어지기도 한다. 이렇게 캠프원들과 함께 의견을 공유하면서 내가 쓰고 있는 방법의 장점과 단점을 더 명확히 알 수 있었고, 종종 새로운 관점을 얻을 때도 있었다.

캠프 시작 전만 하더라도 채용과 연관되어 있기 때문에 경쟁적인 분위기가 있을 것이라고 생각했는데, 막상 참여해 보니 그런 분위기는 전혀 없었다. 오히려 다들 본인의 지식과 생각을 공유하고 싶어 한다.

실력 있고 열정적인 캠프원들을 보면서 지식적으로 얻어 가는 것도 있었지만, ‘나도 저렇게 되고 싶다’는 성장 욕구도 많이 받고 있다. 또한 나의 가치관에도 영향을 주었는데, 이전에는 좋은 회사의 기준이 연봉과 회사 규모였다. 그러나 우아한테크캠프에 참여한 지금은 이것들 못지않게 함께 하는 동료들도 중요하다고 생각한다. 열심히 공부하고 발전해서 캠프원들 같은 동료들과 함께 일할 수 있는 환경에 속하고 싶다!

그렇다면 어떻게 성장할 것인가

캠프 생활을 하면서 가장 많이 고민했던 것은, 어떻게 두 달간의 우아한테크캠프를 의미 있게 보내고 성장할 수 있을까였다. 사실 캠프 초반에는 과제 진도 따라가기에도 바빠서 이러한 고민을 잊고 있었는데, 주변에 실력 좋은 캠프원들이 많이 계셔서 다시금 떠오르기 시작했다. ‘그래서 캠프를 통해 어떻게 뛰어난 개발자로 성장할 수 있는지 방법을 찾았는가?’ 하면 그건 아니다. 애초에 그동안 쌓아온 빈약한 지식을 기반으로 두 달 만에 뛰어난 개발자가 되고 싶다는 생각 자체가 너무 큰 욕심이었을지도 모른다. 그렇지만 그동안의 학습 방법이 무엇이 잘못되었고, 어떻게 개선해야 하는지는 알아낸 것 같다.

지금까지의 나는 남들이 찾아낸 지식을 아무런 의심도 없이 수동적으로 받아들이고 있었다. 이전에 한 멘토님이 ‘인강으로 정제된 내용을 배우는 것도 좋지만, 직접 공식 문서를 읽고 디버깅해보면서 파악해 봐야 공부하는 방법을 얻을 수 있다’라고 말씀하신 적이 있다. 처음 멘토님의 말씀을 들었을 때는, ‘아니 해야 될 것도 많은데 이렇게 세세하게 파고들 시간이 있나?’ 싶었는데, 다른 캠프원들을 둘러보니 이미 인간 디버거가 되어 에러가 생겼을 때마다 열심히 디버깅을 실천하고 계셨다. 그렇기에 나도 조급함을 버리고 차근차근 해결해 보자 다짐하게 되었고, 지금은 에러나 모르는 부분이 생겼을 때 바로 인터넷에 검색하기보다는 일단 중단점을 찍고 디버깅해보는 게 습관화되었다. 인터넷에서 누군가 정리해 놓은 정답을 찾는 것보다는 오래 걸리지만, 학습 방법을 배운다는 생각으로 꾸준히 실천하고 있다.

생각해 보니 우아한테크캠프에 참가한다면 이러한 변화는 당연한 수순인 것 같다. 혼자 개발을 진행하는 게 아니라 페어 프로그래밍을 하기 때문에 페어를 설득하기 위한 타당한 이유가 필요하고, 리뷰어님의 ‘왜 그렇게 구현하셨어요?’라는 질문에 대한 답도 찾아야 한다. 계속해서 ‘왜’를 고민해야 하는 상황에 놓이기 때문에, 어느 순간 디버깅을 통해 내부 흐름을 뜯어볼 수밖에 없다.

3. 정리

앞으로 남은 한 달 동안은 최종 팀 프로젝트를 진행하게 된다. 지금까지도 충분히 벅찼지만 앞으로는 더 바빠질 것 같다. 그럼에도 매일 틈틈이 시간을 내 ‘매일 공부한 내용 기록하기’ 목표에 소홀하지 않도록 노력할 것이다. 또한 최종 팀 프로젝트에서는 필수적으로 100만 개의 데이터를 다뤄야 하는데, 이에 대비하여 팀원들과 SQL 최적화 스터디를 진행하고 있다. 함께 공부했던 내용들을 적용해 팀 프로젝트를 성공적으로 수행하여 ‘대용량 데이터 다루기’라는 목표도 달성하고 싶다.

캠프가 끝나고 지금을 되돌아봤을 때, ‘나 정말 열심히 살았다!’는 생각이 들었으면 좋겠다. 캠프 초반에는 제대로 하고 있는지 고민이 많이 되었는데, 요즘에는 어느 정도 갈피를 잡은 것 같다. 남은 한 달도 최선을 다해 보내자!


배찬우 “폭풍 성장 중!”

[우테캠에 합류하다!]

우아한형제들에서 아주 오랜만에 백엔드 교육형 인턴을 뽑았다. 방학 동안 성장과 현업의 경험을 얻고 싶어 공고를 찾던 와중에 반가운 소식이었고 정규 채용까지 이어질 수 있다고 하니 일거양득이었다.
우테캠에 제시한 내용은 ‘교육을 통한 성장과 신입 개발자 채용 기회’이었다. 주변 지인들의 대기업 인턴 경험을 말로 어느 정도 들어왔기 때문에 아무리 성장을 추구한다고 해도 인턴들에 대한 역량 측정과 평가를 신경 쓸 것으로 생각했다. 그렇다 해도 상관은 없었다. 함께 일할 사람을 뽑아야 하기 때문에 역량 측정이나 평가를 위주로 할 수도 있다는 것은 어쩌면 당연한 것일 수도 있다.
성장에 대한 열망은 누구에게 지지 않을 자신이 있었고 나의 지금까지의 스토리를 잘 정리해서 우테캠 채용 과정에 임했다. 2번의 테스트 합격이 있었고 좋게 봐주셨는지 면접까지 통과하여 우테캠에 합류하게 되었다.

[한달을 회고하며..]

이 과정을 지금까지 수행하면서 인상 깊었던 것은 마주쳤던 대부분의 직원들이 우리를 정말 교육의 대상, 성장의 대상으로 보아준다는 것이었다. “그래도 인턴인데..?”라는 말은 우리끼리에서만 나왔던 것 같다. 어느 순간부터 정말 나의 성장에 집중할 수 있게 되었다. 지금부터는 한 달 동안 과정 중 성장한 부분을 소개하고자 한다.

[내 인생의 첫 페어 프로그래밍]

세상에는 다양한 사람이 있고 우아한테크캠프에 합류한 동료들 사이에서도 그 다양성이 드러난다. 그것은 설계, 코드 작성 스타일까지 이어지는데 우리는 하나의 잘 동작하는 프로덕트를 완성하기 위해 합의 도출 과정이 필요하다. 그 도출 과정 중의 마찰을 극강으로 끌어올리는 것이 페어 프로그래밍이 아닐까 생각한다.

페어 프로그래밍은 책으로만 봤던 내용이었다. 우테캠 과정을 진행하면서 과제 수행의 절반을 페어 프로그래밍을 통해 해결해야했다. 한 번도 실제로 해보지 못했었기 때문에 나에게는 너무나 신선하고 재밌었던 방식이었다.

함께 코드를 작성해나가면서 많이 배웠던 부분은 커뮤니케이션이었다. 단축키 사용부터 컨벤션, 변수명, 설계 방식, 리팩토링 스타일 등 모든 부분을 맞춰나가야 했다. 내가 작성하던 코드 스타일을 바꿀 때도 있고 상대의 스타일을 바꿀 때도 있다. 어느 중간지점에서 합의를 볼 때도 있다. 이런 과정이 내 동료와의 의견의 합을 맞추며 공동의 목표인 하나의 프로덕트를 향해가는 과정으로 느껴졌다.

이해의 커뮤니케이션도 필요했다. 나의 의견에 대해서 객관적으로 잘 설명하고 상대가 이해할 수 있는 근거를 제시할 수 있는지를 고민하는 과정에서 나의 논리가 명확한 논리인지 회고할 수 있었다. 그리고 5분마다 키보드를 번갈아 가며 코드를 작성했기 때문에 한쪽에서 이해가 되지 않으면 코드 작성이 잘 되지 않는다. 내가 상대를 혹은 상대가 나를 이해시키기 위해 명확한 의견을 제시해야 했다.

결국 설계, 코드는 내 페어, 남이 이해할 수 있는 코드로 조금 더 발전할 수 있었다. 항상 페어 프로그래밍을 할 수는 없지만 남이 이해할 수 있는 설계, 코드에 대해서 다시 한번 생각해보고 작성할 수 있는 계기가 되었다.
이 과정 중에 한쪽이 느릴 때도 있고 빠를 때도 있었다. 이 상황에서 상대에 대한 이해심과 기다림은 소프트 스킬의 성장까지 가져다줄 수 있었다.

[정답은 없지만 최선의 판단이 있다]

지금까지는 내가 만든 서비스를 사용자에게 제공하는 것에만 집중해왔었던 것 같다. 하지만 문제 상황은 단 한 번만 발생하는 것이 아니었고 추가적인 요구사항과 문제 상황들이 발생했다. 이런 상황에서 지속적으로 문제를 해결하고 높은 가치를 제공할 수 있는 프로덕트를 만들 수 있는 개발자가 되고 싶었다.

우테캠에서는 좋은 프로덕트에 관해 계속해서 고민할 수 있는 주제를 제시해주었다. 객체지향, 단위테스트와 통합테스트, 다양한 상황들에 대해 고민해가며 유연하면서 견고한 프로덕트에 대해 스스로 공부하고 과제에 적용해보는 과정을 겪었다. 좋은 설계에 대한 정답은 없지만 최선의 선택을 해야 한다. 현재 내가 가지고 있는 역량과 배움을 조합하여 최선의 기준을 정해보았다. 나의 기준은 동료 혹은 리뷰어와 다를 때가 있었다. 그럼 나의 기준과 그들의 기준을 비교해본다. 그리고 과제를 진행하며 다시 한번 생각해보는 과정을 거치며 내가 더 나은 판단을 할 수 있었는지 회고한다.

그 과정에서 나의 부족함을 느끼는 동시에 더 나은 판단에 대한 욕심이 생겼다. 더 성장하기 위해 책을 더 많이 읽고 공부하기 시작했다. 이 선순환 사이클은 나를 더 성장시키고 있다. 현재의 나는 아직 많이 부족하고 나의 최선의 판단이 절대적인 Best practice가 된다고 생각하지 않지만, 이 사이클 속에서 더 성장하고 발전하고 있다

[폭풍 성장 중!]

네트워킹 시간에 우아한테크캠프를 앞서 수료하신 분이 한 말씀이 생생하게 기억난다. 그분은 ‘이 과정이 끝났을 때 후회하지 않았으면 좋겠다’고 하셨다. 이제 절반 정도가 지났고 앞으로 해온 만큼 또 해나가야 하지만 이 과정이 끝났을 때 스스로 후회하지 않을 만큼 최선을 다하여 몰입할 것이다. 앞으로도 화이팅!!

네트워킹 세션


안건 “열심히 살자!”

지원을 결심한 계기

우아한테크캠프라는 교육과정이 있다는 사실은 굉장히 우연한 계기로 알게 되었다. 코딩 테스트 문제를 제공해주는 웹사이트에 여느 날과 다름 없이 문제를 풀러 들어갔다가 우아한테크캠프 배너가 보여서 무심코 눌러봤던 기억이 난다. 소개 페이지에는 간단한 커리큘럼이 적혀 있었고, 이를 읽으면서 클린 코드, TDD, OOP와 같이 개념적으로만 알고 있던 내용들을 개발 미션을 통해 깊이 배울 수 있을 것이라는 기대가 생겼다. 또 캠프 후기를 담은 블로그 글들을 읽으면서 다른 교육생들과 깊이 있는 협업을 해볼 수 있을 것이라고 생각했다.
나는 팀 프로젝트 경험은 한 번 있지만, 프로젝트가 전부 온라인으로 진행되었기 때문에 소통과 협업의 깊이가 얕은 편이었다. 그래서 오프라인 교육을 통해 다른 교육생들과 개발에 관련된 이야기를 많이 나누고, 한편으로는 개발자 네트워크를 넓힐 수 있겠다는 생각에 망설임 없이 캠프에 지원했다.

현재의 생활

지금은 1~2주 단위로 진행되는 개발 미션을 수행 중이다. 한 대의 컴퓨터로 2명이 협업하는 페어 프로그래밍을 통해 기능의 절반 정도를 완성하고, 혼자 나머지 절반을 완성하는 형태로 진행된다. 코드를 작성하는 방식이 개발자마다 다르기 때문에 미션을 진행하면서 의견이 필연적으로 많이 갈리게 되는데, 이때 의견 차이를 좁히기 위해 많은 노력을 기울여야 한다. 이 과정에서 정신력 소모가 굉장히 커서 페어 프로그래밍을 진행한 날이면 저녁만 되어도 기진맥진했지만, 힘들었던 만큼 얻는 것도 많았다. 이야기를 많이 나누면서 페어의 좋은 개발 가치관을 배우는 한편, 내 의견에 대한 근거를 곰곰히 생각해보는 계기가 되었다.

미션마다 2번씩 우아한형제들 개발자 분들이 코드 리뷰를 달아주시는데, 매번 부족했던 부분을 굉장히 잘 짚어 주셨다. 나 같은 경우에는 클래스의 역할과 책임, 테스트에 관련된 피드백을 많이 받을 수 있었다. 피드백을 기반으로 리팩토링을 진행하면서, 역할과 책임이 분명한 클래스를 작성하고 의존성 주입을 활용하면 코드를 테스트하기 쉬워진다는 사실을 깨닫게 되었다. 세세하게 작성한 단위 테스트는 리팩토링 안정성을 높여 줘서 리팩토링 절차가 한결 쉬워졌다.

기술 서적을 읽고 이야기를 나누는 스터디도 함께 진행 중이다. 지난 주까지는 코치님이 추천해 주신 클린 코드 관련 도서를 읽으면서 가독성, 재사용성, 유지보수성, 테스트 용이성이 좋은 코드를 작성하는 여러 가지 방법에 대해 배웠다. 이번 주에는 SQL 튜닝 관련 도서를 읽기 시작했는데, 스터디 시간에 다른 팀원의 프로젝트 경험에 대해 들으면서 평소에 개발에 대한 고민이 부족했다는 생각을 많이 했다. 특히 데이터베이스 관련 지식과 경험이 많이 부족한 것 같아서 스터디와 팀 프로젝트를 진행하면서 이런 부분을 보완하고 싶다.

캠프를 진행하면서 좋은 점

캠프의 최대 장점은 교육생들과 오프라인으로 오랜 시간 자유롭게 소통할 수 있다는 것이다. 나는 비전공자이고 졸업 후에 혼자 백엔드 공부를 해왔기 때문에 다른 개발자들과 접점이 거의 없었는데, 교육을 같이 듣고 미션을 진행하면서 개발에 국한되지 않은 주제로 많은 이야기를 나눌 수 있었다. 캠프 전에는 우아한형제들의 일 잘하는 방법 중 하나인 ‘잡담을 많이 나누는 것이 경쟁력이다’라는 문구가 정말일지 궁금했는데, 실제로 잡담을 나누다가 개발 관련해서 유익한 대화가 시작될 때가 종종 있었고, 무엇보다 서로 친해지니까 페어 프로그래밍 도중 아이디어를 내기 훨씬 쉬워졌다.

매일 조금씩 회고를 적으면서 기록의 중요성을 깨닫고 있다. 평소에 배운 내용을 글로 남겨야겠다고 생각만 하고 실천은 한 적이 없다. 캠프를 진행하면서 이전에 무엇을 배웠는지 기억이 잘 나지 않는 경우가 많은데 이럴 때 회고나 강의를 들으며 남긴 기록을 읽으면 기억을 되살리는 데 도움이 많이 된다. 우테캠이 끝나고도 조금씩 공부 기록을 남기면 좋을 것 같다.

캠프를 진행하면서 아쉬운 점

미션을 수행하는 데 시간을 많이 투자해야 해서 개인적인 공부를 할 시간이 부족한 것은 좀 아쉽다. 아무래도 2달이라는 시간이 짧은 편이다 보니 미션(JAVA, Spring), 스터디(클린 코드, SQL), 개인공부(컴퓨터구조)를 모두 병행하는 게 굉장히 어렵고, 하나의 주제를 깊이 있게 파고들 여유가 없다. 주말 시간도 거의 공부하는 데 할애하고 있는데 미션에 집중하는 게 오히려 나았을 것 같다는 생각도 든다. 그래도 배우는 내용들이 다 재미있어서 후회는 없고, 캠프가 끝나면 더 많은 시간을 투자해서 깊이 있는 공부를 하고 싶다.

교육 전후로 달라진 부분

테스트에 대한 인식이 많이 바뀌었다. 강의와 미션을 통해 테스트 작성에 대한 지식을 습득하고, 테스트의 중요성을 깨달을 수 있었다. 특히 요구사항을 모두 커버하는 테스트를 작성해 둠으로써 리팩토링이 편해진다는 점이 가장 좋았다. 한편으로는 어떤 방식으로 테스트를 작성할지 고민도 많아졌다. 테스트 간 격리를 위해 테스트 조건을 각 테스트마다 명시하면 테스트 작성에 드는 수고가 커진다는 점, 요구사항을 꼼꼼하게 확인하면서 중복 없이 효율적으로 테스트하기 위한 방법 등 여러 고민이 생기는데 나중에 관련 도서를 찾아 읽으며 인사이트를 얻고 싶다.

열심히 살자! (한 달 동안의 소감과 앞으로의 각오)

교육 전에는 나름 열심히 살고 있었다고 생각했는데, 지금에 비하면 낭비하는 시간이 굉장히 많았던 것 같다. 최근 몇 년 간 이렇게 열심히 살았던 적이 있었나 싶을 정도로 많은 시간을 배움에 투자하고 있다. 힘든 만큼 많이 배우고 있고, 다른 분들과 같이 공부하고 소통하는 게 재밌다.

앞으로의 한 달은 더 즐거웠으면 하고, 남은 미션과 팀 프로젝트도 성공적으로 끝마칠 수 있었으면 좋겠다. 특히 팀 프로젝트를 진행하는 동안 부딪히는 문제가 많을 텐데, 그 문제들을 해결하기 위해 팀원들과 소통하고 깊이 고민하는 경험을 많이 했으면 좋겠다. 개발자로서 훨씬 더 성장하고 싶다.


최정규 “정답은 없다”

어쩌면 남은 인생의 마지막이 될 여름 방학을 앞두고 이번만큼은 미친 듯이 개발에 몰입하고 싶었다. 그러나 시골쥐에게 주어진 기회는 제한적이었기 때문에 “어떻게 하면 폭발적으로 성장할 수 있을까”라는 고민만 늘어갔다. 이러한 막막함을 뒤로한 채 알고리즘 문제를 풀러 프로그래머스에 들어갔다. 그때, 우아한테크캠프와 마주쳤다.
평소에 즐겨보던 우아한테크 채널엔 프로그래밍에 몰입한 사람들이 있었다. 더 나아가 자신의 지식과 경험을 다른 사람들과 나누는 것을 즐기는 사람들이 그곳에 있었다. 그래서 우아한테크캠프를 보자마자 가슴이 뛰기 시작했다. 그들과 함께 몰입하고 싶었기 때문이다. 그들과 함께 나누고, 함께 나아가고 싶었다.

오리엔테이션때 사람들을 만나며 처음에 든 생각은 "왜 다들 비슷한 것 같지?"였다. 이야기하면 할수록 비슷한 점이 많았다. 내가 생각하는 고민을 그들도 하고 있었고 개발에 대한 내 마음가짐이 그들의 것과 비슷했다. 무엇보다도 우리는 나누는 것을 좋아했다. 아침마다 현재 상태를 공유하고 겪고 있는 문제는 없는지, 어제 배운 것은 어떤 건지 매일매일 나누었다.

한편 교육이 시작되자마자 처음 들은 말은 경쟁이 아닌 협력이었다. 돌이켜보면 지금까지 배움은 경쟁 속에 있었다. 수업을 듣고 나서 쪽지 시험을 치고 중간고사와 기말고사를 거쳐 성적을 받아야 끝났다. 교육과 관련된 모든 것들이 그랬고, 심지어 우아한테크캠프에 오는 과정조차 경쟁이었다. 그러나 이곳에선 달랐다. 매번 주어지는 미션에 정답은 없었다. 심지어 미션에 마감 기한도 없었다. 성적도 없다. 다만 어제의 나와 비교하여 배움을 통해 얼마나 성장했는지 돌아볼 뿐이다.

그렇게 첫 페어 프로그래밍을 시작했다. 친구와 하던 오락실 게임도 아니고 프로그래밍을 같이하다니. “이게 좋은 방법일까?”, “비효율적인건 아닐까?”라는 의문이 들었다. 무엇보다도 페어의 환경에 적응하고 페어와 발걸음을 맞추기란 여간 어려운 일이 아니었다. 그러나 함께 나아가다보니 혼자할 때 보이지 않던 것들이 보이기 시작했다. 나의 부족한 점을 페어가 채워주고 반대로 페어가 생각하지 못한 부분을 내가 알려주기도 했다.

페어 프로그래밍을 하면 할수록 역설적으로 나 자신과 대화를 더 많이 하게 됐다. 의견이 다를 때 페어를 설득하기 위해선 나부터 설득해야 했기 때문이다. “지금까지 그렇게 해와서”, “누가 그렇게 하라던데”는 통하지 않았다. 우리가 처한 상황에 어떠한 이유로 인해 이 방법이 나아 보인다고 말해야만 비로소 설득할 수 있었다. 그러기 위해선 "내가 알고 있는 것이 진짜로 알고 있는 것이 맞나?" 라는 의문을 나에게 끊임없이 던질 수밖에 없었다.

캠프 초기에는 집에 일찍 가곤 했는데 요즘에는 대부분 남아서 부족한 공부를 채우고 간다. 활동하면 할수록 내가 몰랐던 것들이 보이기 때문이다. 나는 “모른다는 것을 안다”라는 말을 가장 좋아하는데 무엇을 모르는지 아는 순간 배울 수 있기 때문이다. 그러나 문제는 적용이었다. 배운 것을 적용하려고 하면 항상 여러 선택지가 나뉜다. 그럴 때마다 어떤 것을 골라야 할지 물어보면 돌아오는 대답은 항상 “정답은 없다”이다. 상황마다 적절한 선택지가 모두 다르기 때문이다. 생각해 보면 우리는 지금까지 정답이 정해진 문제를 보고 달려왔다. 그렇기 때문에 나도 모르게 정답을 원하고 있었다. 그러나 개발자로서 풀어야 할 문제는 정답이 없다. 요구 사항을 만족시키는 방법은 수도 없이 많기 때문이다. 그저 현재 상황에 가장 적절한 선택지를 고를 뿐이다.

오리엔테이션에서 서로 어색한 인사를 나누며 저녁을 먹었던 것이 엊그제 같은데 벌써 한 달이라는 시간이 지났다. 한 달 동안 그토록 원했던 몰입을 경험할 수 있었다. 앞으로의 한 달도 후회 없이 몰입하고 싶다. 그러나 나아가는 것도 중요하지만 잊지 않는 것도 중요하다. 그동안 익힌 하드 스킬과 소프트 스킬을 잘 다듬어 남은 활동을 이어가려 한다. 또, 내가 올바른 길을 걸을 것이라 생각하지 않는다. 애초에 그런 길은 존재하지 않을지도 모른다. 다만 매 순간 이유 있는 최선의 선택을 하며 최고의 결과를 만들어 낼 것이라 굳게 믿는다.


최지원 “숟가락 얹기”

우아한테크캠프 6기를 참여한 지 벌써 한 달이 지났다.
지난 한 달을 돌아보면서 다음 한 달을 어떻게 보낼까 생각하기 위해 회고를 적는다.

첫 번째로 우아한테크캠프를 어떤 계기로 참여하게 되었는지 적어보겠다.
계속되는 채용 한파에 얼어붙은 나는 졸업을 하고 계속 취업 준비를 하고 있었다.
꾸준히 취업 준비를 하던 어느 날 프로그래머스에서 우아한테크캠프 모집 글을 우연히 보게 되었다.
모집 글에서 가장 눈에 띈 부분은 다음과 같았다.
“팀 프로젝트로 서비스를 개발하면서 협업하는 방법을 배우고, 서비스를 운영하며 유지, 보수까지 경험할 수 있습니다.”
서비스를 운영하고 유지, 보수하는 경험은 신입 개발자가 가지기 쉬운 경험이 아니었고, 우아한테크캠프에서 만나는 훌륭한 사람들과 이 경험을 함께 할 수 있다고 생각했을 때 참가 신청을 안 할 이유가 없었다. 그렇게 우아한테크캠프에 지원하고 정말 운 좋게 참여하게 되었다.
우아한테크캠프에 참여할 때 가진 마음가짐은 단 한 가지었다.
우아한테크캠프를 가서 만나는 동료들의 장점을 다 흡수하고, 내가 가진 장점을 다 나눠주자.
내가 우아한테크캠프에서 이 한 가지만 확실하게 지킬 수 있다면 캠프를 수료하고 더 좋은 개발자가 될 수 있을 거라 생각했기 때문이고 아직도 이 생각은 변하지 않았다.

그러면 이제 내가 우아한테크캠프에서 어떻게 한 달을 보냈는지 적어보겠다.
우아한테크캠프의 교육은 기본적으로 페어 프로그래밍과 미션 기반으로 운영된다.
1주 또는 2주 동안 페어와 함께 미션을 진행하면서 미션을 완료해야 한다.
페어와 내가 가진 생각과 알고 있는 지식이 전부 다르다 보니 미션을 진행하면서 정말 많은 이야기를 해야 한다. 미션의 요구사항을 함께 해결하면서 왜 이렇게 설계해야 하는지, 기술적으로 문제를 어떻게 해결할 것 인지 등 단 한 줄을 코딩하더라도 계속 이야기를 할 수밖에 없다.
내가 페어 프로그래밍을 하면서 가장 많이 했던 말은 ‘왜?’이다. 절대로 페어와 싸우고 싶은 마음에 ‘왜?’를 한 것은 아니고 진짜 순수하게 왜 그렇게 생각하는지 궁금해서 계속 물어봤던 것 같다.
다행히도 지금까지 만난 모든 페어는 나의 집요한 질문에도 불구하고 친절하게 자기 생각을 잘 설명해 주었고 모든 내용이 나에게 큰 도움이 되었다.
이렇게 페어와 우당탕탕 미션의 요구사항을 해결하면 리뷰어님에게 우리가 해결한 미션에 리뷰를 요청해야 한다.
리뷰어님에게 우리가 한 미션의 코드를 리뷰 받기도 하고, 미션을 진행하면서 생긴 궁금한 부분에 대한 질문도 가능하다.
리뷰어님들도 각자 성향이 다르기 때문에 나와 페어가 같은 코드일지라도 다른 리뷰가 오게 되는데 이 과정도 정말 재밌다. 페어와 내가 받은 리뷰를 공유하면서 우리 코드의 문제점을 같이 볼 수 있고, 이 과정에서 새로운 방법이 떠오르기도 한다.
리뷰어님의 피드백을 바탕으로 코드를 수정하고 다시 리뷰 요청하여 티키타카를 하다 보면 미션이 완료된다.
물론 이렇게 계속 미션만 온종일 하지는 않는다. 매주 월, 수, 금 아침에는 강의를 진행하는데 코치님들이 미션을 진행할 때 알아야 할 지식을 알려주기도 하고, 미션을 진행하면서 공통으로 발생한 질문 사항에 대한 공통 피드백을 진행해주기도 한다.

이런 교육 방법은 대한민국에서 살아온 사람이라면 대부분 처음일 것이다. 그래서 다들 이런 교육을 처음 받을 때 걱정을 많이 하는데 오히려 이런 자유로운 방식의 재밌는 점이 많다.
정말 자유롭게 해도 되기 때문에 만나는 페어마다 방식을 새롭게 정해서 미션을 할 수도 있고, 미션의 요구사항을 페어와 마음대로 구현할 수 있어서 평소에 써보지 못한 여러 방법을 활용할 수 있다.
나는 이런 자유로운 방식이 우아한테크캠프의 핵심이라고 생각한다.

아직 교육을 전부 이수한 것은 아니지만 그래도 교육을 받기 전 나와 지금의 내가 어떤 부분이 크게 달라졌나 생각해보면 다음과 같다.
개발 과정에서 고민이 늘었다.

  • 기능 구현 시 어떤 방법으로 구현할지 깊게 고민할 수 있게 되었다.
  • 하나의 기능에서 발생할 수 있는 예외가 무엇이 있을까 고민할 수 있게 되었다.
  • 주로 TDD를 통해 개발하게 되는데 이 과정에서 요구사항을 더 세세하게 분석할 수 있게 되었다.
    소프트 스킬이 늘었다.
  • 페어 프로그래밍을 하다 보면 페어에게 내 생각을 전달해야 하는데 이 과정에서 어떻게 해야 내 생각을 잘 전달할까 고민을 정말 많이 하게 된다.
  • 페어와 의견이 다를 경우 합의를 해야 하는데 이 과정에서 페어가 어떤 의견을 가졌는지 잘 이해해야 하므로 듣는 스킬이 늘게 된다.

마지막으로 한 달간의 교육에 대한 소감을 짧게 표현하면 숟가락 얹기이다.
황정민 배우가 2005년 청룡영화상에서 수상 소감으로 한 말이 있다.
“60여명의 스태프들이 차려놓은 밥상에서 나는 그저 맛있게 먹기만 하면 되기 때문입니다.”
이 수상 소감이 지금 내가 교육받으면서 느낀 감정이랑 정확하게 일치한다고 생각한다.
나는 한 달 동안 우아한테크캠프가 차려놓은 밥상을 숟가락만 얹어서 맛있게 먹기만 했다.
이런 감정이 느껴질 정도로 우아한테크캠프는 훌륭하고 좋은 교육 프로그램이고 앞으로 남은 한 달도 편식하지 않고 맛있게 남은 밥상을 비울 예정이다.

이런 좋은 기회를 저에게 준 우아한형제들에 압도적 감사를 표하면서 글을 마치도록 하겠다.


소개드린 5분 이외에도 모든 교육생분들이 “우아한테크캠프 6기의 7월은 OOOOO이었다!”의 빈칸을 유쾌하고 다채롭게 채워주셨는데요.

동기들에 대한 찐한 애정과 그로부터 얻은 열정이 드러나기도,
우아한테크캠프의 개발 문화와 협업에 대한 진심이 느껴지기도 했습니다.

벌써 한 달?
모티베이션
새로운 자극
0과 1 사이
아는게 없네
나만의기준
주관과 존중
문화와 성장
클린 코드로
혼란 속 성장
우아해질 나


이 글을 통해 더 많은 분들께 우테캠 6기의 뜨거웠던 7월의 에너지가 전해졌길 바랍니다!