[회고] 우테코 2주차 회고

우아한 테크 코스의 두 번째 주를 돌아보며 연극, 첫 FE 수업, 페어 프로그래밍을 통해 배운 것들을 정리하였습니다.

업로드 날짜: 2026년 3월 8일


[회고] 우테코 2주차 회고

연극 🕺

화요일 오전이 되자마자 바로 연극을 했다. 주말 동안 대사를 외우고 팀원들이랑 연습도 꽤 많이 했었다. 막 엄청 떨리지는 않았던 것 같다. 그런데… 솔직히 말하면 그냥 너무 부끄러웠다. 연극이라는 걸 살면서 해볼 일이 얼마나 있겠나. 무대에 올라가서 연기까지 하려니 이상하게 웃기기도 하고 민망하기도 했다.

다행이도 우리 팀 순서가 생각보다 빨리 와서 금방 끝낼 수 있었다. 덕분에 마음 편하게 다른 팀들의 연극도 볼 수 있었다.

연극 단체 사진

연극을 준비하는 과정부터 실제로 무대에 올라가기까지의 경험 덕분에 우리 팀이 정말 많이 가까워졌다는 느낌을 받았다. 우테코에 와서 처음 느꼈던 부담감이나 긴장 같은 것들이 이 시간을 지나면서 확 풀린 느낌이었다.

처음에는 솔직히 "왜 이런 걸 하지?"라는 생각도 했었다. 개발 교육인데 연극이라니. 그런데 막상 끝나고 나니까 그 이유를 조금은 알 것 같았다. 짧은 시간이었지만 팀원들과 빠르게 친해질 수 있었고, 서로 편하게 이야기할 수 있는 분위기가 만들어졌다. 아마 이런 경험을 의도한 게 아니었을까 싶다.

연극이 끝난 뒤에는 바로 연극 회고 시간을 가졌다. 단순히 연극이 어땠는지를 이야기하는 시간이 아니라, 소프트 스킬적인 부분을 돌아보는 시간이었다. 언제 내가 좋은 모습을 보였는지, 언제 아쉬운 모습을 보였는지 팀원들과 포스트잇을 붙이면서 이야기했다.

나의 경우 처음에는 의견을 적극적으로 내려고 많이 노력했고 실제로도 꽤 많은 의견을 냈다. 그때 내가 냈던 아이디어를 기반으로 전체적인 틀이 만들어지기도 했다. 그런데 세부 대본을 수정하는 단계에서는 이상하게 많은 이야기를 하지 못했던 것 같다. 나름대로 의견을 내보려고 하긴 했지만, 솔직히 말하면 대부분 "다 좋은 것 같은데…?"라는 느낌이었다. 이 회고를 하면서 '나도 좀 더 내 주관을 가져야겠다'는 생각이 들었다.

또 하나 느낀 점은, 팀이 잘 굴러가고 있을 때 반대되는 의견을 잘 내지 못했다는 것이다. 사실 속으로는 다른 생각이 있었던 순간도 있었다. 그런데 '지금 내가 한 번 참으면 팀이 더 부드럽게 굴러가지 않을까?'라는 생각 때문에 말을 아꼈던 적이 있었다. 다행히 이런 이야기를 꺼냈을 때 다른 팀원들도 비슷한 순간이 있었다고 말해주었다. 서로 이해해주면서, 다음에는 조금 더 용기 있게 이야기해보자는 다짐을 하게 됐다.

나는 원래 내가 팀에서 어떤 모습이길 바랐냐면, 누군가 이야기하면 리액션도 잘 해주고 분위기도 띄우고, 리더라면 팀의 방향을 잘 잡아주고, 팔로어라면 그 흐름을 타면서 부스터처럼 힘을 더해주는 그런 사람이 되고 싶었다. 그런데 막상 돌아보니 나는 그런 스타일이라기보다는, 한결같이 흔들리지 않고 묵묵히 내 할 일을 하고 팀의 방향성이 크게 흔들리지 않도록 받쳐주는 느낌에 가까웠다.

그래서 나는 이걸 단점이라고 생각했다. 그런데 팀원이 오히려 그게 내 장점이라고 말해줬다. 괜히 다른 스타일을 흉내 내려고 하기보다는 지금의 모습 자체가 충분히 팀에 도움이 되는 모습이니까 그냥 이 방향으로 더 밀고 가보라는 이야기를 들었다.

그 말을 듣는 순간 조금 놀랐었다. 내가 스스로 부정적으로 생각하고 있던 모습이 사실은 강점일 수도 있다는 걸 깨달았다. 정말 감동적이기도 했고, 동시에 '아, 나도 생각보다 괜찮은 사람이구나'라는 생각이 들었다. 이번 연극과 회고를 통해서 내가 몰랐던 나의 모습을 하나 더 알게 된 것 같다.

첫 FE 수업

드디어 첫 FE 수업들이 시작됐다. 무엇보다도 수업 방식이 정말 마음에 들었다.

보통 수업이라고 하면 지식을 전달받는 형태를 떠올리기 쉬운데, 여기서는 전혀 그렇지 않았다. 먼저 질문을 던지고 스스로 생각해보는 시간이 주어졌다. 그 다음에는 페어와 이야기를 나누고, 또 다른 크루들과도 생각을 공유했다. 단순히 한 방향으로 정보가 흘러오는 구조가 아니었다.

어떤 개념이 나에게 들어오면, 그걸 그대로 받아들이는 것이 아니라 내가 가지고 있던 지식과 경험을 바탕으로 한 번 더 소화하게 된다. 그리고 그렇게 정리된 생각을 다른 크루들과 나누게 된다. 이 과정 덕분에 지식을 그냥 흡수하는 것이 아니라, 온전히 내 것으로 만들어가는 느낌을 받았다.

또 재미있었던 점은, 여기서는 "완벽한 정답"을 찾는 분위기가 아니라는 것이다. 스스로 생각하고 정리하면서 나만의 정답을 정의하는 시간을 많이 가졌다. 그러면서 "아… 학습이라는 건 원래 이렇게 하는 거구나."를 느낄 수 있었다.

지금까지는 무언가를 배우면 일단 정답을 찾고, 그걸 최대한 빠르게 이해하는 데 집중했던 것 같다. 그런데 여기서는 읽기(배우기)보다는 더 많이 생각하고, 본인의 생각이나 경험을 결합해서 정답을 도출해보고, 이후 이를 나눠보고 다시 읽고(배우고).. 이 과정 자체가 학습이었다. 앞으로도 이런 방식의 학습 습관을 의식적으로 만들어가야겠다는 생각이 들었다.

TDD 🤔

TDD 관련 수업 자료

이번 수업에서는 TDD에 대해서도 배웠다. 여러 아티클 중 나는 이 글을 읽었다.

https://wiki.c2.com/?TestDrivenDevelopment

읽으면서 내 생각을 정리하면서 읽어나갔다.

- 코드 작성시 `테스트 추가`, `테스트 실패 유도`, `테스트 통과 코드 작성`. 코드 작성 이후 `중복 제거` 루프를 통해서 개발하는 방식 - 내부 루프(inner loop punps) 외부 루프(outer loop). - 루프를 사용한 이유 : 반복. 일정한 프로세스를 반복하는 행위이므로 - 내부와 외부를 사용한 이유 : - 내부 : 코드를 작성하는 작은 활동 - 외부 : 코드 작성 그 다음 단계 - "지속적" 통합, "일일" 배포, "빈번한" 릴리즈 등등 - 지속적, 일일, 빈번한.. 이런 단어들로 인해서 "루프" 라는 단어가 성립함. 주기적인 활동임. - 테스트로 어떤 점을 얻을 수 있는가? - *기존 기능의 품질, 비용, 존재 여부에 관한 약속을 지키는 데 도움을 줍니다.* - TDD를 사용하면? - 모든 코드가 고도로 분리된다. 재사용이 쉽다. - 이미 두 명의 사용자가 있기 때문? - 테스트 코드에서도 해당 코드를 가져와 사용하고, 해당 코드를 다른 곳에서 사용할 테니. 재사용성이 어느정도는 보장됐다고 볼 수도. ⇒ 엄청난 인사이트..!! - *실제로 한 명의 사용자에서 두 명으로 전환하는게 어렵지, 두명에서 그 이상으로 전환하는 것은 쉽다!* - 중복 제거 단계는 잠재적 추상화를 코드에서 찾아내도록 강제. - 어떻게 하는거지? ⇒ 가상 메서드나 기타 기법을 통해 - 추상화를 하면 뭐가 좋은 거지? ⇒ 재사용성이 높아진다.

무엇보다 "실제로 한 명의 사용자에서 두 명으로 전환하는게 어렵지, 두명에서 그 이상으로 전환하는 것은 쉽다! 테스트를 작성하는 것은 해당 코드를 사용한 것과 더불어서 테스트를 하면서 한번 더 재사용한 것이므로 재사용성이 보장된다"라는 말이 정말 인상깊었었다.

테스트 코드를, 코드를 사용하는 사용자로서의 입장으로 생각해본 적이 없었다. 단순히 해당 코드를 테스트만 하는 존재로서 생각했지만, 테스트를 함으로써 해당 코드를 한번 더 재사용하게 되므로 재사용성에 있어서 장점이 있다는 것이 보장된다고 바라보는 것이 정말로 신선한 인사이트였다.

곰곰히 생각해보니 흔히 말하는 "테스트하기 쉬운 코드는 좋은 코드다"라는 말도 조금 더 깊게 이해가 됐다. 테스트를 한다는 것은 코드를 하나의 사용자 입장에서 사용하는 행위다. 그게 쉽다는 것은 외부 의존이 낮고, 독립적이며, 예측 가능한 코드라는 의미이기 때문이다.

읽으면서 계속 생각을 정리하면서 봤는데, 솔직히 아직 완벽하게 이해했다고 말하기는 어렵다. 그래도 이런 방식으로 "생각하면서 읽기"를 해보는 것 자체가 의미 있는 경험이었다.

AI 활용 수업!

수업에서 또 하나 신기했던 점은 AI를 활용하는 방식이었다.

이전 기수 크루들이 남겼던 PR 질문들과 리뷰어의 답변들을 전부 긁어 모아서 NotebookLM으로 정리해 주셨다. 그리고 그 내용을 기반으로 하나의 웹페이지를 만들어서 질문과 답변을 정리해두었다.

우리는 그 페이지를 보면서 실제 정리된 as-is 코드를 보고 직접 수정해보는 시간을 가졌다.

이걸 보면서 엄청 감탄했다.

"와… 데이터 기반으로 학습한다는 게 이런 거구나! AI를 학습에 사용하면 이렇게 쓸 수 있구나! AI를 잘 쓴다는 것은 이렇게 쓰는 것을 말하는 거구나!"

AI에 대한 생각 정리

프론트 수업을 들으면서 자연스럽게 AI에 대한 생각도 조금 정리됐다.

프론트엔드 개발자는 단순히 개발만 하는 직무가 아니다. 기획, 다른 부서와의 협업, 커뮤니케이션, QA 대응, 사용자 대응 등 생각보다 많은 역할을 한다. 실제로 일을 하다 보면 개발 자체가 차지하는 비중이 생각보다 크지 않을 수도 있다.

그래서 소프트 스킬이 정말 중요하다.

그리고 AI가 발전할수록 이 부분은 더 중요해질 것 같다. 단순히 코드를 작성하는 능력보다, 문제를 정의하고 방향을 잡고 사람들과 협업하는 능력이 점점 더 중요해질 것 같다. 이런 부분은 AI가 대체하지 못하는 부분이기 때문이다.

이와 더불어 더더욱 기본기가 중요하다고 느꼈다.

예전에 켄트 벡이 이런 말을 했다고 한다.

"스킬의 90%는 가치가 0이 되었고, 10%의 능력은 1000배의 가치를 갖게 됐다."

켄트 벡의 말

바뀌지 않은 10%의 능력. 그 부분에 집중하는 것이 정말 중요하겠구나라는 생각이 들었다.

jest와 같은 사용하는 도구는 상황에 따라서, 시대에 따라서 바뀌겠지만, TDD라는 방법론과 사고 방식은 바뀌지 않을 것이다. 이런 부분에 더욱 집중해서 흔들리지 않는 엔지니어로서 성장해나가야 할 것 같다.

페어프로그래밍!

페어프로그래밍 장면

드디어 진짜 페어 프로그래밍이 시작됐다.

처음 페어를 만났을 때는 조금 어색했었다. 처음 보는 사람과 같은 문제를 같이 풀어야 한다는 상황 자체가 정말 낯설었는데, 너무 방어적으로 있으면 내 의견을 제대로 전달하지 못할 것 같다는 생각이 들었다. 그래서 일부러라도 어색함을 티 내지 않으려고 했다.

연극 회고 때 팀원들이 실수하더라도 "전혀 위험하지 않다"는 느낌을 줄 수 있는 분위기를 만드는 것이 중요하다고 느꼈었는데, 그걸 페어 프로그래밍에서도 의식적으로 해보려고 했다. 그래서 최대한 리액션을 크게 하려고 의식적으로 노력했다.

다행히도 페어 분이 정말 리액션이 크고 성격도 좋으신 분이었다. 덕분에 분위기가 금방 풀렸고, 생각보다 훨씬 편한 상태에서 페어 프로그래밍을 시작할 수 있었다.

이번 페어 프로그래밍을 시작하기 전에 스스로 몇 가지 목표도 정리해봤다. 이번 페어프로그래밍에서 무엇을 얻어가고 싶은지, 어떤 부분을 의식적으로 노력해보고 싶은지를 생각해보고 시작했다.

그중 하나가 바로 넓은 시야였다.

같은 문제를 보더라도 사람마다 바라보는 방식이 다르다. 어떤 시각으로 문제를 바라보는지, 어떤 근거와 생각을 가지고 결정을 내리는지 그런 것들이 궁금했다. 그래서 페어 프로그래밍을 하면서 아래와 같은 질문을 스스로에게 던지면서 진행했었다.

  • "왜 이렇게 생각하는 걸까?"
  • "이 판단의 근거는 어디서 시작된 걸까?"

페어프로그래밍을 하면서 내 시각이 크게 바뀌었다.

이전까지는 validate 로직을 따로 분리하는 것이 좋은 구조라고 막연하게 생각하고 있었다. 그런데 페어와 이야기를 하면서, 단순히 validate를 분리하는 것이 항상 좋은 것은 아닐 수도 있겠다는 생각이 들었다.

오히려 책임과 역할에 맞게 각 객체가 자신의 validate를 책임지는 구조가 더 자연스러울 수도 있다는 시각을 가지게 됐다. 이런 관점의 변화는 혼자 코딩했다면 쉽게 얻기 어려웠을 것 같다.

반대로 나에 대해서도 하나 느낀 점이 있었다.

나는 내가 작성해오던 코딩 방식이나 구조가 "자연스럽다"는 느낌을 가지고 선택하는 경우가 꽤 있었다. 그런데 페어를 설득하려고 하다 보니, 단순히 "이게 더 자연스러운 것 같은데요?"라는 말로는 전혀 설득이 되지 않았다.

내가 맞다고 생각하는 것이라면 그에 대한 명확한 근거를 제시할 수 있어야 했다. 그리고 무엇보다도 내 주장 자체가 분명히 있어야 했다.

페어 분에게도 정말 많이 배웠다. 무엇보다 논점을 굉장히 명확하게 이해하고 정리하는 분이었다. 페어와 논쟁을 하다보면 명확한 논점을 잡지 못하고 다른 이야기를 하거나 서로가 하는 말을 명확히 이해하지 못하고 논점이 흐려지는 상황이 발생할 수 있는데, 이런 상황 자체를 차단하고 우리가 나눠야 할 대화에만 집중하게 만들어주었다. 이 부분은 최대한 배우고 흡수하고 싶은 소프트스킬이었고, 다음 페어 프로그래밍 때 연습해볼 예정이다!

또 기술적으로도 배운 점이 많았다. 페어분이 알고 계신 것이 정말 많았고, 서로의 지식을 잘 조합해가면서 여러 가지 시도를 함께 해볼 수 있었다.

예를 들어 빌더 패턴을 활용해서 유효성 검증을 하면서 사용자 입력을 하나씩 받아 최종적으로 하나의 인스턴스를 만드는 방식도 같이 고민해봤다. 짧은 시간이었지만 빠르게 개념을 공부하고 실제로 적용해보는 시간을 가졌다.

재미있었던 점은, 사실 우리 둘 다 이게 정답인지 모른다는 상태에서 시도했다는 것이다. 어느 순간부터는 "일단 해보고, 문제가 생기면 그 경험으로 배우자."라는 마인드로 접근하기 시작했다.

그리고 이후에 리뷰를 받으면서 정말 많은 걸 느꼈다.

우리가 꽤 오랫동안 고민하면서 "이게 맞는 것 같다"라고 찾아낸 답이 사실은 완벽한 정답이 아니었다는 것을 알게 됐다. 처음에는 조금 아쉽기도 했다. 하지만 동시에 그 덕분에 훨씬 많이 성장할 수 있었다. 우리 둘의 경험만으로는 부족했던 인사이트들이 리뷰를 통해 들어왔기 때문이다.

특히 리뷰가 정말 정성이 가득했다. 1000줄이 넘는 코드를 하나하나 다 보면서 코멘트를 남겨주셨다. 이렇게 많은 양의 코드에 대해 이렇게 밀도 높은 피드백을 받을 수 있다는 게 정말 감사하게 느껴졌다.

무엇보다 좋았던 점은 정답을 바로 던져주지 않았다는 것이다. 대신 질문을 던져주고, 참고할 만한 아티클이나 자료들을 함께 남겨주셨다. 덕분에 스스로 다시 고민해보고, 나만의 답을 찾아가는 시간이 생겼다. 이 과정 자체가 정말 좋은 학습 경험이었다.

또 하나는 효율적인 부분이었다.

솔직히 말하면 혼자서 집중해서 하면 4시간 안에도 충분히 만들 수 있을 것 같은 분량임에도 3일 동안의 가용 시간을 거의 전부 페어 프로그래밍에 써서 겨우 완성할 수 있었다. 어떻게 하면 더 효율적으로 페어프로그래밍을 할 수 있을지 스스로 고민을 많이 해보았다.

그런데 아무리 생각해봐도 시간을 더 줄일 수 있는 방법이 잘 떠오르지 않았다. 우리가 할 수 있는 최선의 방식으로 진행했던 것 같다는 생각이 들었다.

"빨리 가려면 혼자 가고, 멀리 가려면 함께 가라."

페어 프로그래밍은 분명 속도만 보면 비효율적으로 보일 수도 있지만, 함께 고민하고 서로의 생각을 나누고 그 과정에서 새로운 시각을 얻는 경험은 혼자 코딩할 때는 얻기 어렵다. 그래서 앞으로 페어 프로그래밍을 할 때는 빨리 끝내야겠다는 생각보다는 함께 프로그래밍하고 소통하는 과정에서 얻을 수 있는 것들에 더 집중해보려고 한다.

한 발짝 스터디 워크숍

이번 주에는 한 발짝 스터디 워크숍도 있었다. 우테코에서는 매주 소프트 스킬을 키울 수 있는 워크숍이 진행된다고 하는데, 이번 주가 그 첫 번째 시간이었다.

워크숍에서는 나의 강점과 약점을 돌아보고, 이를 바탕으로 앞으로의 소프트 스킬 성장 목표를 정하는 시간을 가졌다.

이때 인상 깊었던 문장이 하나 있었다.

"목표는 꿈꾸는 미래 또는 현재의 고통에서 탄생한다."

그래서 나도 그동안 내가 힘들어했던 순간들을 떠올려봤다. 어떤 상황이 나에게 불편했고, 왜 그게 고통스러웠는지를 생각해봤다.

생각해보니 나는 말해야 하는 타이밍에 말을 잘 못하는 순간이 꽤 있었다.

연극을 준비하면서 회의를 할 때도 내 주장을 충분히 말하지 못했던 순간이 떠올랐다. 또 새로운 사람들과 스몰토킹을 할 때도, 자연스럽게 대화를 이어가지 못하고 침묵이 흐르던 순간들도 생각났다.

그래서 이번 워크숍에서 이런 목표 문장을 만들었다.

"나는 새로운 사람들과 협업하거나 팀 안에서 방향이 필요한 상황에서, 분위기를 읽지 못해 침묵하거나 흐름에 수동적으로 따라가는 대신, 내 관점을 논리적으로 정리해 먼저 말을 꺼내고 팀이 나아갈 방향을 제안하는 모습을 보이겠다."

이 목표를 실천하기 위해 몇 가지 구체적인 방법도 정해봤다.

우선 3초 룰을 적용해보려고 한다. 어떻게든 빠르게 말할 주제를 떠올리고 먼저 말을 해보는 것을 정량적으로 연습해보려고 한다.

그리고 저강도 리더십 경험도 의식적으로 쌓아보려고 한다. 꼭 리더 역할이 아니더라도, 작은 상황에서 방향을 제안하거나 의견을 먼저 꺼내는 연습을 해보려고 한다.

또 하나는 할 말을 미리 많이 생각해두는 것이다. 대화 상황에서 바로 생각이 떠오르지 않아 침묵하게 되는 경우도 있었기 때문이다. 미리 생각을 정리하는 습관을 들이면 조금 더 자연스럽게 이야기할 수 있을 것 같다.

앞으로 바뀔 내 모습이 기대된다..!

정리

이번 한 주를 돌아보면서 "우테코는 사람을 만드는 교육을 한다." 라는 말을 이해할 수 있었다.

예전에 이런 말을 들었을 때는 조금 추상적으로 느껴졌었다. 그런데 이번 한 주를 보내고 나니 그 말이 꽤 공감이 됐다.

우테코에서는 단순히 지식을 전달하지 않는다. 지식을 얻는 방법을 알려준다. 정답을 바로 알려주기보다는, 스스로 고민하고 결국 나만의 정답을 찾도록 만든다.

우테코 OT 중 _ 앞으로 중요한 역량 : "정답이 없는 질문에 스스로 답을 찾아 나가기"

그리고 무엇보다 인상적인 점은, 자기 자신을 돌아보는 시간이 정말 많다는 것이다. 내가 어떤 사람인지, 어떤 생각을 하는지, 어떤 방식으로 행동하는지를 계속 언어로 정리하게 된다.

생각해보면 우리는 이런 시간을 많이 가져보지 못했다. 그냥 바쁘게 무언가를 해내는 데 집중했지, 나 자신을 이렇게 깊게 돌아볼 기회는 많지 않았던 것 같다.

그런데 신기하게도 단 한 주밖에 지나지 않았는데, 마치 "나"라는 사람이 조금씩 만들어지고 있는 느낌이 들었다.

앞으로도 계속 이런 시간을 통해, 더 멋진 나를 만들어가야겠다.