루퍼스 프론트엔드 1기 회고

8분

이번에 루퍼스 프론트엔드 1기를 수료했다. 루퍼스는 멘토님들의 발제와 멘토링, 과제 피드백을 받으며 여러 개발자와 함께 공부하는 프로그램이다. 경험이 정말 좋아서 잊기 전에 회고를 적어보려고 한다.

(루퍼스 프로그램이 궁금하다면 → 여기)

루퍼스를 시작한 이유

루퍼스를 시작하기 전 나는 내 실력에 대해 고민이 많았다. 회사에서 열심히 일하긴 했지만 엔지니어로서는 제자리에 머물러 있는 느낌이었다. 이전 회사에는 많지는 않아도 사수와 동료들이 있어서 문제를 마주할 때마다 기술적인 이야기를 나누며 많이 배웠다. 반면 지금 회사의 동료 개발자는 한 명뿐이었고, React로 전환한 지 얼마 안 되셔서 함께 기술을 논의하거나 무언가를 배울 기회가 많지 않았다. 혼자서도 해보지 않은 방식을 시도하고 스스로 문제를 찾아 해결해보긴 했다. 강의나 책으로 틈틈이 공부도 했다. 하지만 내가 맞는 방향과 속도로 가고 있는지는 확신할 수 없었다.

그러다 우연히 루퍼스를 알게 됐다. 정확한 계기는 기억나지 않지만 항해 플러스처럼 여러 사람이 함께하는 프로그램을 찾아보다가 발견했던 것 같다. 혼자 개발하는 것에서 벗어나 다른 개발자들과 소통하며 성장하고 싶었던 나에게 딱 맞아 보였다. 열심히 하는 사람들이 모이는 곳이라면 좋은 분들과 친해지고 기술적인 고민도 털어놓을 수 있는 사람을 만날 수 있을 것 같았다.

다만 망설여지는 부분도 있었다. 검색해봐도 백엔드 후기뿐이었고 프론트엔드는 이번이 1기였다. 가격도 150만 원으로 적은 돈은 아니었다. 그래도 백엔드 후기들을 보니 다들 열심히 했고 내용도 알차 보여서 프론트엔드도 그렇지 않을까 기대하게 됐다. 해보고 아니다 싶으면 환불하면 되고, 성장을 위한 투자라고 생각하니 결정은 어렵지 않았다.

정리하면 내가 루퍼스에 기대한 건 세 가지였다. '내가 잘하고 있는 건가..?'를 확인해볼 수 있는 과제, 앞으로도 함께 공부할 동료, 그리고 겪어보지 못한 프론트엔드 엔지니어링에 대한 학습.

시작하며 세운 목표

적지 않은 시간과 돈을 들이는 만큼 시작하기 전에 목표부터 제대로 세웠다. 조금 부끄럽지만 나름 간절했다. 그때 적어둔 목표는 세 가지였다.

루퍼스를 시작하며 적어둔 세 가지 목표

첫 번째 목표는 '대충 하지 않고 제대로 하는 습관'이었다. 좀 추상적이지만 나에겐 가장 필요한 목표였다. 그동안 기능을 빠르게 구현하는 데만 치중하다 보니 나름 고민은 했어도 관성대로 처리한 부분이 분명히 있었기 때문이다. 한마디로 뇌에 힘을 쓰자는 거였다.

두 번째 목표는 네트워킹이었다. 기술적인 고민을 나눌 동료를 찾는 것도 루퍼스를 시작한 이유 중 하나였으니 처음부터 익숙한 방식대로 혼자 파고들면 이를 놓칠 것 같았다. 그래서 과정 내내 최대한 혼자 하지 않기로 했다. 오프라인 모임이 있으면 빠지지 않고 참여하고 온라인에서도 적극적으로 이야기를 나누기로 마음먹었다.

마지막으로 적당히가 아니라 최선을 다하기로 했다. 더 잘하고 싶었고 시간과 고통 없이는 배움도 없다고 생각했다. 퇴근 후 시간을 쪼개 써야 하는 상황이라 더더욱 마음을 단단히 먹어야 했다. 나를 죽이지 못하는 것은… 뭐시기, 니체적 마인드로.

루퍼스의 일주일

루퍼스는 10주 동안 매주 같은 흐름으로 진행됐다. 토요일 발제로 시작해 주말 피드백으로 끝나는 한 주다.

루퍼스의 한 주 진행 흐름
  1. 토요일: 멘토님이 해당 주차 과제와 관련된 발제를 진행하고 Q&A
  2. 팀별 주 1회, 1시간 멘토링: 발제 내용이나 개발 관련 질문 (총 세 팀이었다)
  3. 주 1회 라이브 세션: 발제와 별개인 보너스 개념
  4. 발제 관련 구현 과제 수행
  5. 라이팅 과제 수행
  6. 주말에 과제 피드백 받기

구현 과제는 컴포넌트의 책임과 경계 나누기, 화면 최적화, 쿼리 최적화, Dialog / Select 직접 만들어보기, 테스트 코드 작성 같은 주제로 이뤄졌다.

(1) 발제와 라이브 세션

발제는 구현부터 최적화와 테스트까지 넓은 범위를 다뤘다. 처음 알게 된 내용도 많았고 알던 것을 더 정확하게 이해하게 된 경우도 많았다. 개념적인 내용에 더해 멘토님의 실무 경험까지 들을 수 있다는 게 특히 좋았다. '와 저런 것도 고려할 수 있구나' '저런 게 있구나' 하면서 말로만 듣던 것들을 실제로 어떻게 하는지 감을 잡을 수 있었다. 보너스인 라이브 세션은 따로 과제가 없었지만 평소 잘 몰랐거나 '공부해야 하는데~' 하고 미뤄둔 주제를 알차게 설명해주셔서 유익했다.

(2) 멘토링

사실 루퍼스의 꽃은 멘토링과 피드백이 아닐까 싶다. (당연히 발제랑 세션도 좋지만)

텐트에서 함께 수업을 듣는 모습

멘토링에서는 그 주에 배운 내용과 과제는 물론 개발 전반에 대해 무엇이든 물어볼 수 있었다. 나는 궁금한 건 전부 묻고 싶었다. 이왕이면 단순한 질문보다 '이걸 실무에 적용한다면?'처럼 한 번 더 의심해본 질문을 던져서 생생한 답을 듣고 싶었다. 그래서 멘토링 질문을 위한 공부를 따로 했다 ㅋㅋ 고민해보지 않으면 질문할 거리도 떠오르지 않더라. 멘토링 전까지 발제 자료를 다시 보며 평소 고민을 싹싹 끄집어내고 내 생각도 정리해서 질문을 드렸다. 그러면 멘토님은 경험을 바탕으로 명쾌하게 답해주셨다. 가려운 곳을 싹싹 긁어주시니 너무 시원했고 새로 배우는 것도 많았다.

팀원들의 질문도 큰 도움이 됐다. 같은 주제인데도 관점이 달라서 내가 전혀 생각하지 못한 부분을 묻는 경우가 많았다. 혼자서는 아무리 여러 방면을 생각해봐도 한계가 있다. 그런데 가만히 있어도 다른 관점의 이야기까지 들을 수 있으니 혼자일 때보다 훨씬 알차게 멘토님을 뽑아(?)먹을 수 있었다.

무엇보다 좋았던 건 다른 팀 멘토링도 청강할 수 있다는 점이다. 내 질문에 팀원들의 질문과 다른 팀의 질문까지 더해지니 하나의 주제를 훨씬 다양한 관점에서 고민해볼 수 있었다. 1:1 멘토링 프로그램도 들어본 적이 있는데 이 점에서는 그룹 멘토링이 나에게 더 잘 맞았다. 질문이 10배가 되는 이벤트랄까

(3) 피드백

과제를 제출하고 나면 피드백을 받을 수 있다.

머리를 굴려 요구사항을 최대한 만족시켜도 내 판단과 접근이 괜찮은지는 사실 잘 모른다. 내 눈엔 맞아 보여도 다른 사람 눈엔 어떨지 알 수 없는 거다! 멘토님들이 바로 그 부분을 짚어주신다. 과제를 낼 때 질문을 500자 이내로 적을 수 있는데 여기에 고민을 많이 담을수록 더 도움이 되는 피드백이 돌아왔다.

과제 피드백 예시

다른 분들의 과제와 피드백도 볼 수 있어서 같은 문제를 어떻게 다르게 풀었는지 비교해볼 수도 있었다. 피드백이 20배가 되는 셈이다..! 다른 분들이 받은 피드백을 읽으며 '이렇게도 생각할 수 있구나' '이렇게 하려면 이런 것까지 고려할 수 있구나' 하고 많이 배웠다.

두 번의 계기, 그리고 달라진 것

멘토링과 피드백은 처음부터 열심히 챙겼지만 정작 과제는 조금 달랐다. 솔직히 1~3주차 과제는 관성대로 한 부분이 있었다. 코드를 리팩터링하고 일부 기능을 구현하는 과제였는데 평소 하던 일과 비슷해 보여서 '이 정도면 해볼 만하겠는데?' 싶었다. 루퍼스에는 잘한 과제에 칭찬 스티커 붙이듯이 RT(Rising Talent)라는 게 있는데 내심 기대도 했다.

(1) 첫 번째 계기: 멘토님께 보낸 DM

그런데 막상 리뷰를 받아보니 RT가 아니었고 피드백도 많았다. 토요일 발제 전 과제 리뷰 시간에 멘토님이 짚어주신 내용도 처음 보는 관점이 많았다. 피드백을 읽고 RT를 받은 분들의 PR도 찾아보며 공부했다. 그런데 그때는 RT에 신경이 쏠려 있었던 탓인지 어떤 점이 다른지 잘 감이 오지 않았다. 내가 무엇을 놓친 건지 알고 싶어서 결국 멘토님께 직접 메시지를 드렸다.

지난주 과제가 RT를 받지 못해서 어떤 부분이 부족했는지 여쭤보고 싶습니다. 혹시 이걸 더 했으면 RT를 받았을 것이라고 할 만한 부분이 있을까요? 짚어주시면 다음 과제에 꼭 반영하고 싶습니다!

멘토님이 보내주신 리뷰

그렇게 고봉밥 리뷰를 받았다. 읽으면서 꽤 놀랐다. 내가 본 것보다 고민해볼 수 있는 지점이 훨씬 많았던 것이다. 그때 느꼈다. '처음 마음가짐을 다시 떠올려야겠다. 좀 더 머리를 쓰고 내 코드를 의심해봐야겠다.' 그날 이후로는 하던 대로만 하지 않으려고 했다.

(2) 두 번째 계기: 엔젤과의 대화

루퍼스에는 멘토와 멘티 말고도 헬퍼분들이 있다. 팀마다 엔젤이, 전체로는 버디가 계셨다. 처음에는 '엔젤..? 뭐 하는 분들이지? 도움을 요청하면 되는 건가?' 싶었는데 정말 많은 도움을 받았다. 갓나현..

프로그램 초중반 RT 때문에 이런저런 고민이 생겨 나현님께 이야기를 꺼냈고 그 덕분에 따로 대화를 나눌 기회가 생겼다. 돌이켜보면 고민의 뿌리는 그 칭찬 스티커 하나에 너무 마음을 쓰고 있던 나 자신이었다. 나현님, 이전 기수 백엔드 멘티님과 햄버거를 먹으며 이야기를 나눴는데 두 분이 이런 이야기를 해주셨다.

RT에 너무 신경 쓰지 않아도 돼요. 상 받으러가 아니라 성장하러 온 거잖아요. 멘토님들의 발제와 세션, 멘토링이 진짜 꿀이에요. 과제를 잘하면 물론 좋지만 본인 성장에 더 의미 있는 곳에 에너지를 쓰면 좋겠어요.

그 말이 오래 남았다.

생각해보니 나도 모르게 대학생 때처럼 퀴즈와 과제와 시험을 치르듯 지내고 있었다. 그때는 그게 성적으로라도 남았지만 지금 내가 바란 건 이전보다 성장한 나였다. 멘토님의 리뷰와 엔젤님과의 대화 덕분에 생각과 태도를 다시 잡을 수 있었다.

(3) 그 뒤로 달라진 것

그 뒤로는 과제를 대하는 방식이 달라졌다. 발제 내용을 최대한 흡수하고 과제도 요구사항만 채우는 데서 그치지 않고 실제 사용자와 실무를 떠올리며 내 생각을 더 담으려 했다. 발제에서 중요하다고 짚은 부분도 그냥 넘기지 않고 '이걸 왜 중요하다고 하신 걸까?'를 한 번 더 생각하며 조금 더 신경 썼다.

가장 크게 바뀐 건 '왜?'를 붙이는 습관이었다. 예전에는 요구사항을 만족하는 방법을 하나 찾으면 바로 구현에 들어갔다. 이제는 결정할 때마다 '왜 이렇게 해야 하지?' '다른 방법은 없을까?'를 먼저 물었다. 판단이 바뀌면 무엇을 고려했고 왜 바꿨는지 남겼고 하지 않기로 한 것도 이유와 함께 정리했다. 무엇을 할지만큼 무엇을 하지 않을지도 중요한 결정이라는 걸 이때 배웠다.

답을 혼자 짐작하지 않고 근거를 찾아보려고도 했다. 잘 만들어진 라이브러리나 공식 문서가 같은 문제를 어떻게 풀었는지 들여다보고, 내 판단이 틀렸다 싶으면 기꺼이 번복했다. 되는 방법이 여러 개일 때는 '돌아가는가'보다 '이 상황에 맞는가'를 기준으로 골랐다. 그렇게 파고들다 보니 중첩 다이얼로그를 처리하면서 useImperativeHandle처럼 몰랐던 것들을 하나씩 알게 되는 재미도 있었다.

AI와는 역할을 나눴다. 코드 작성은 최대한 AI에게 위임하고 작성 전 설계와 그 근거, AI가 작성한 코드의 검토는 되도록 스스로 했다. 무작정 맡기면 엉뚱하게 구현할 때도 있고 나중에 들여다보면 말도 안 되게 해놓은 경우가 있기 때문이다. 실제로 AI가 짜준 테스트를 믿고 있다가 모든 테스트가 jsdom 위에서 돌고 있다는 걸 뒤늦게 발견하기도 했다. 아는 게 있어야 의심도 할 수 있다는 걸 느낀 순간이었다.

그랬더니 멘토님들도 조금 더 좋게 봐주셨고 나 스스로도 얻는 게 훨씬 많았다. 여러 방안을 놓고 트레이드오프를 따져 결정하는 과정 자체가 가장 큰 공부였다.

역설적으로 RT에 대한 마음을 내려놓으니 RT를 받기도 했다.

직장인으로 버틴다는 것

물론 이렇게 10주를 보내는 게 쉽지만은 않았다. 회사를 다니다 보니 퇴근하고 9시가 넘어서야 과제를 시작할 수 있었다. 특히 발제 복습과 지난주 피드백 반영에도 시간이 꽤 들어서 과제는 거의 화~목에 몰아서 해야 했다. 그래서 이때는 잠을 좀 줄였다 ㅜㅜ

나의 한 주 루틴

이렇게 발제 시간을 빼고도 일주일에 평균 20시간 정도를 썼다. 평일에는 퇴근 후 하루 3~5시간, 일요일에는 반나절을 들였던 것 같다.

루퍼스 기간의 플래너

게다가 중간에 부산으로 공연을 보러 갈 일이 있어서 부산에서도 과제를 이어갔다. 촬영 준비까지 겹치다 보니 체력적으로 많이 힘들었다.

솔직히 그냥 드랍할까 싶은 순간도 있었다. '내일의 나에게 미루자' '이번 것만 포기할까..?' 그럴 때 버티게 해준 건 ZEP이었다. 멘티들이 모여 같이 공부하던 온라인 공간인데 들어가 보면 다들 새벽 늦게까지 과제를 붙잡고 있었다. "해야 해..!!" 하며 서로 살짝 채찍질도 하고 잡담하면서 잠도 좀 깼다. 그 모습을 보며 '1시간만 더 하자' 하고 다시 힘을 낼 수 있었다.

멘티들이 모여 공부하던 ZEP

함께한 사람들, 그리고 배운 것

돌아보면 루퍼스에서 가장 크게 남은 건 사람이다.

멘토님들은 정말 갓갓이셨다. 면접이 잡혔다고 말씀드리니 모의면접까지 도와주셨다. DM이나 채널에 질문을 남겼을 때도 하나하나 다 받아주셨다.

엔젤과 버디 같은 헬퍼분들을 보면서는 나도 도움을 받은 만큼 누군가를 돕고 싶다고 느꼈다.

멘티들끼리는 평소 자발적으로 오프라인에서 모여 토요일 발제를 함께 들었다. 여기에 더해 프로그램 측에서 중네(중간 네트워크), 막네(마지막 네트워크)라는 오프라인 네트워킹 파티도 열어줬다. 중네 때는 멘토님들과 게임도 했다. 이런 자리 덕분에 멘티들과 더 친해질 수 있었던 것 같다.

마지막 수료식에서는 시상식도 있었는데 부끄럽지만 상도 받았다. 뿌듯했다.

이렇게 여러 사람을 만나며 느낀 건 역시 같이 하는 게 좋다는 것이다. 대학생 때 나는 혼자 공부하고 혼자 하는 걸 정말 좋아했다. 그런데 회사를 다니며 느꼈고 이번에 더 크게 느낀 건 혼자 하다 보면 사고가 굳고 나도 모르는 사이 우물 안에 머물기 쉽다는 것이다. 같이 하면 이야기를 나누며 다른 사람의 생각도 듣고 서로 응원도 하게 된다. 그 덕분에 버틸 수 있었고 그만큼 성취감도 더 컸다.

또 하나 크게 배운 건 결과보다 과정이 더 중요하다는 것이다. 앞에서 말했듯 AI에게 전부 맡겼다면 더 그럴듯한 결과물은 나왔을지 몰라도 과제를 하며 공부하고 고민할 기회를 잃었을 것이다. 성장은 결과를 내기까지 시행착오를 겪고 문제 앞에서 머리가 지끈지끈할 때 일어난다고 느꼈다. 그렇게 고민해서 낸 답이 틀렸더라도 그것 또한 다음 결정에 반영할 수 있다.

마치며

처음 세운 목표 돌아보기

글을 마무리하며 처음에 적어둔 목표를 다시 꺼내 봤다. 얼추 달성한 것 같다. '왜?'를 묻는 습관이 조금은 몸에 배었고 오프라인 모임과 ZEP에서 좋은 동료들도 만났다. 무엇보다 최선을 다했다. 솔직히 다시 하라고 하면 못 할 것 같을 만큼 열심히 했고 그만큼 배운 게 많아서 매우 만족한다!!

물론 아쉬운 점도 있다. 과제를 하면서 다른 분들과 이야기를 나누긴 했지만 원래는 서로의 PR에 리뷰도 달아보고 토론 시간도 가져보고 싶었다. 하지만 프로그램 중에는 그럴 여력까지는 없었다. 그래서 끝난 뒤에도 함께 스터디를 하며 이 부분을 채워보려고 한다. 기회가 되면 멘토님들과도 이야기를 더 나눠보고 싶다.

앞으로는 여기서 배운 내용을 토대로 이직 준비도 하고 사이드 프로젝트도 더 해보려고 한다. 루퍼스는 끝났지만 여기서 배운 건 계속 갈고닦아 보고 싶다.

마지막으로 10주 동안 함께한 최강 1팀 짱~!

(혹시 루퍼스를 고민하다가 이 글까지 오셨다면 댓글이나 이메일로 궁금한 점 마구 물어봐주세요)