-
우아한테크코스 6기 리뷰어 회고회고, 생각 2024. 10. 13. 18:02반응형
작년에 이어 두 번째 우테코 안드로이드 리뷰어 활동을 진행했다.
똑같은 과정, 얼마나 다르겠어라는 생각을 한 자신이 머쓱할 정도로 비슷하면서도 또 다른 6기 리뷰어 기간을 보냈다.
우테코 후기를 검색하면 우테코 학생들이 쓴 후기 글들이 쏟아지기도 하고, 그 후기를 보고자 하는 사람이 훨씬 많아, 누가 우테코 리뷰어의 후기가 궁금할까 하는 생각이 든다.
하지만 남의 인생과 생각을 엿보고 간접 경험하는 것을 좋아해 에세이를 자주 읽는 나처럼, 누군가는 이 소수의 경험을 궁금해하는 사람이 있지 않을까. 이런 분야에 흥미가 생겼을 때 아무런 후기도 찾아볼 수 없다면, 나는 내심 섭섭하지 않을까 하는 생각이 든다. 그런 사람들과 나중에 다시 읽어볼 나를 위해, 이 생생한 기억이 더 무뎌지기 전에 이 후기를 적는다.
리뷰어 소집!
작년에 함께 리뷰어를 하셨던 분들이 당연히 모두 합류하시는 줄 알았지만, 각자의 사정으로 참석하지 못하신 분들이 몇 계셨다. 새로 세 분이나 합류하셔서 또 새로운 시각과 이야기를 나눌 것에 설레는 기분과 이전에 함께했던 사람들을 보지 못하는 아쉬움이 공존했다.
여담으로, 리뷰어 기간이 끝나고 회고 때 모여 이야기 나누는 시간이 있었다.
9시 쯔음 자리가 정리될 때, 역시 개발자들이라 그런지 다들 개발 이야기 더 하고 싶은 아쉬운 마음이 표정에 떠나지 않았다. 그래서 필자가 재직 중인 회사의 공간을 빌려, 작게 퇴근길 밋업 느낌으로 리뷰어들과 지인들을 초대해 마음껏 이야기를 나누었다.
아쉽게도 시간이 맞지 않아 코치분들이 못 오셔서 많이 아쉬움이 남았다. 다음엔 꼭 오시길 바라며.
리뷰어 활동, 이전과 다르게 시도한 것
이번 리뷰어 기간에는 저번과는 뭐라도 다르게 진행하고 싶었다.
뭐든 똑같이 하면 결국 일처럼 느끼고, 상투적이고 기계적으로 리뷰이들을 대할 것 같아 계속 변화를 주려 했다.
아카이빙 한 것 거의 사용하지 않음.
작년에는 넥스트스텝의 이펙티브 코틀린, 안드로이드 아키텍처 리뷰어를 수행했을 때 아카이빙 해두었던 내용을 잘 다듬어서 새로 우테코용 아카이빙을 만들어서 재활용했다. 다음 리뷰어 활동 때 재사용을 하기 위해서라도 더 공들여서 아카이빙을 해두었다.
그런데 이번에는 그 아카이빙해둔 것을 거의 활용하지 않았다.
아카이빙한 내용에는 문법적인 교정 내용이 가장 많았다.
문법보다는 더 상위 수준의 설계나, 전반적인 코드의 짜임새를 짚어 알려주는 게 더 좋은 피드백이란 생각이 들었다. 더 나아가서는 그런 것들을 더 잘 짚어내는 나의 리뷰 능력을 단련하고 싶었다. 문법이 조금 이상한 걸 지적하는 것은 그리 어려운 일이 아니기에.
언어를 잘 다루지 못하는 친구들이기에 정말 눈에 밟히는 내용은 꼭 짚고 넘어갔고, 모든 리뷰이들에게 공통적으로 발견할 수 있는 내용은 아카이빙한 내용을 가끔 쓰기도 했다. 똑같은 내용을 여러 번 만들어내는 건 비효율적이니..
좀 더 해당 크루(리뷰이)에 맞춤 피드백을 주고 싶었다.
크루들은 둘씩 짝을 지어 페어 프로그래밍으로 한 미션을 구현하고 리뷰를 받는다. 즉, 한 미션에 두 리뷰어가 서로를 모른 채 리뷰를 진행한다. 그리고 교장에서 자신이 받은 피드백을 크루들끼리 공유한다. 그러다 보면 내가 남긴 리뷰가 복붙이었다는 것이 들통난다 (?)
사실 공통적으로 발견되는 요소에서 복붙이 들통나는 건 걱정하진 않았다.
가장 큰 목적은, 크루가 리뷰어를 어렵게 생각하지 않았으면 하는 마음이 가장 컸다. 환경이 환경이다 보니 크루가 리뷰어를 어려워하는 건 어쩔 수 없는 상황이라 생각한다. 여기에 내가 할 수 있는 가장 따뜻한 방법은 그 크루에게 온전한 관심을 가지는 것, 마치 자신이 코드를 짤 때 옆에서 본 사람처럼 그때 고민했던 내용을 정확히 집어 질문하고 피드백하는 것이었다.
크루가 리뷰어로부터 관심과 사랑을 받는다는 느낌을 들게 한다면 리뷰어를 좀 더 친근하게 생각하지 않을까 한다.
물론 평소보다 리뷰하는 시간이 더 들어 정말 힘들긴 했지만, 리뷰어 피드백에 이런 마음을 알아본 이야기들이 있어서 뿌듯했다.
이번엔 뭐가 좋았나?
코드 리뷰 과정에 대해 좋았던 점들은 작년과 여전히 동일하다. 여기에 다른 좋았던 점들을 생각해 적어보았다.
우테코 교장 방문
우테코 교장은 1, 2레벨 기간, 3, 4레벨 기간에 최소 각 한 번씩 방문하는 것을 개인적인 목표로 잡고 있다. 코드 리뷰를 온라인으로만 하다 보니 크루들이 텍스트로만 보던 리뷰어들을 어려워하는 경우가 많다고 개인적으로 느끼고 있다. 그래서 리뷰어는 무서운 존재가 아니며, 똑같이 사는 사람이란 걸 느끼게 해주려고 방문한다.
그러면 좀 더 편하게 나에게 질문하고 의견을 주고받을 수 있게 되지 않을까. 나를 거쳐 간 사람이 더 많은 것을 깨닫지 않을까 한다. 그리고 참 좁은 업계이기도 하니, 나중엔 언젠가 동료로도 마주할 수 있을 거란 생각도 있다. 어차피 어딘가에서 다시 마주할 사람이라면, 서로 좋은 관계로 남기를 바라는 마음이 크다.
이번에 방문했을 때는 작년과는 다른 분위기를 느꼈다. 뭔가 말로 표현하기 어려운… 뚜렷한 색깔의 다름이었다.
작년엔 리뷰어한테 말을 먼저 꺼내긴 힘들었지만, 물어보고 싶은 건 많은 친구들이 일단 나와서 내 앞에 있기라도 한 친구들이 많았다. 그래서 한 명 한 명 궁금한 것이 무엇인지 콕콕 찔러 보면 모두가 어딘가에 숨겨 뒀던 말을 하나씩 꺼내와서 귀엽다는 생각이 들었다.
올해는 리뷰어의 방문에 관심이 있고 없고가 무척 뚜렷했다. 나와 이야기하고 싶은 크루들이 적극적으로 나에게 질문하고 즐겁게 이야기를 나누었다. 이 크루들의 수가 꽤나 적어서 닉네임을 모두 기억할 수 있을 정도였다. 다른 크루들이 나에게 관심이 없는 건 매우 아쉽고 섭섭했지만.. 어쩌겠는가. 연이 된다면 언젠간 닿겠지, 하며 스스로를 달랜다.
코치분들과의 티타임
우테코 교장에 방문하는 것을 매번 흔쾌히 허락해 주시고, 방문할 때마다 점심 식사와 커피를 늘 대접해 주셔서 우테코 코치분들께 항상 감사하다. 나는 휴가를 쓰고 가거나 놀러 가는 것에 더 가깝지만, 그들은 본업 중인데 말이다.
우연한 계기로 연이 닿아 지금껏 꾸준히 인연을 이어가고 있는데, 참 소중하다. 좋은 분야에 몸담을 수 있게 해주시고, 관련 고충이나 아이디어의 공유, 개발 이야기, 그뿐만 아니라 사람 사는 일상 이야기를 나누는 등등.. 정말 친근하게 이야기 나눌 수 있는 좋은 우주가 곁에 있음에 정말 소중하고 감사함을 느끼고 있다.
가끔은 수업을 대신 해달라는 날로 먹는(?) 부탁을 받을 때도 있어서 참 재미있다. 기회가 된다면 뭐든 가르쳐주고 싶지만, 지금 내가 무얼 가르쳐야 할지 정말 모르겠다. 장난으로 하는 말씀일 수도 있지만 (아닌 것 같다) 가끔은 정말 대신 자리를 빛내 드리고 싶은데, 정말 뭘 알려주면 좋을지 떠오르지 않아서 미안한 마음이 들 때가 종종 있다.
오랜 시간이 지났을 때 이 사람들이 어떤 삶을 살아낼지 기대가 되기도 한다. 분명 멋지게 살아낼 거라 믿어 의심치 않는다. 그러니 나도 그들의 옆에서 자랑스러운 사람이 되고 싶은 마음이 크다. 이런 마음이 들게 좋은 에너지를 내어주는 참 좋은 인연이다. 이들이 내 곁에 있다는 것이 큰 행운이자, 커다란 감사이다.
이번엔 뭐가 힘들었나?
교육 방식에 대한 고민
나는 교육자로서 정답 혹은 답이 존재하지 않아 나만의 생각으로 결론 내린 것들을 교육생에게 직접 알리는 것을 지양한다. 우테코 또한 리뷰어에게 정답을 정확히 짚어 알리는 것을 원하지 않는다.
리뷰를 하다 보면 대안책들을 왕왕 제시해 주고는 하는데, 이것을 왜 제안 내용으로 대치해야하는지 이유와 설명을 요구받는 피드백을 낮은 점수와 함께 종종 받는다. 참 안타깝다.
이런 과정을 자기 자신이 직접 겪으면서, 본인 스스로 깨우치게 하는 것이 교육 방식의 의도이다. 왜 이런 리뷰를 했을지 스스로 반문하고, 찾아보고, 기존과의 장단점을 비교해 나가는 과정에서 나타나는 모든 고민과 지식들이 자기 자신의 것이 된다. 코드 한 줄 한 줄에 대해 누군가 “왜?”라는 질문을 했을 때 백마디도 할 수 있는 힘을 길러 준다.
이것을 건너뛰고 편하게 리뷰어가 생각하는 답을 받아 카피하면, 과연 그 과정들이 머릿속에 온전히 남을 수 있을까? “왜 이렇게 짰어요?”라고 물어봤을 때, “이 리뷰어가 알려줬는데요?”라는 말 이외에 떠오르는 것이 있을까?
또, 다른 환경과 상황에서 그 코드를 그대로 사용할 수 없을 때가 오면, 과연 그 코드를 해당 상황에 맞춰 스스로 변경해 낼 수 있을까? 오히려 “리뷰어가 이런 상황도 고려를 못 하다니, 형편없는 리뷰어였네.”라고 생각하진 않을까 걱정된다. 물론 내가 아닌, 그러한 크루가 걱정된다.
리뷰를 하는 당시에는 정말 마음고생이 심했던 때가 있었다. 내가 취해야 할 자세가 무엇이었을까 하는 고민과, 내가 지금 하고 있는 게 맞는 걸까 하며, 자신감이 많이 떨어져 있었다. 앞으로는 교육자와 리뷰어 활동 자체를 그만둬야 하는 건 아닐까 하는 마음까지 들었다.
지금 생각해 보면 그렇게까지 큰 고민거리가 아니었는데, 이렇게나 큰 아픔으로 느꼈던 자신이 참 안쓰럽다. 그럼에도 소신을 잘 지키고 포기하지 않았던 자신이 대견하고 자랑스럽다. 개인 사정으로 정신 건강이 그리 좋지 못했을 때라 더 그렇게 크게 느꼈다는 생각이 든다. 너무나 건강하다 못해 넘치는 지금은, 소신껏 잘했으니 그걸로 됐다는 생각이다. 극단적인 선택을 하지 않은 스스로에게 고맙다.
안드로이드 교육 범위에 대한 고민
xml이냐 Compose냐. MVP냐 MVVM이냐. 그것이 문제로다.
요즘 안드로이드 세계관에서 가장 인기 있고, 구글 공식 문서에서 가장 두드러지게 볼 수 있는 것들은 단연 Compose와 구글 권장 아키텍처라고 할 수 있겠다. 요즘 구글에서 가장 밀고 있는 형태이고, 안드로이드 라이브러리들이 거기에 맞춰서 개발되고 있다.
그러나 이 컨셉이 나타난 것은 그리 오래되지 않았다. 그렇기에, 지금 현 회사에서 Compose와 MVVM 혹은 MVI 컨셉의 코드 베이스로 프로젝트가 구성되어 있을 확률은 그리 높지 않다. 특히 기업이 크고, 앱의 규모가 크면 클수록 더욱 그렇다. 규모가 작은 회사라도 이 최신 기술을 접목하는 것이 정말 어려운 환경일 경우가 흔하다.
그렇다고 해서 안드로이드 교육 과정에서는 레거시 영역을 유지보수를 할 수 있는 개발자를 배출해 내기 위해 반드시 xml과 옛날 컨셉만을 가르쳐야 할까?
Compose를 도입하고 있는 회사는 점점 많아지고 있다. 이런 곳에는 새로운 화면은 Compose로 개발하거나, 비교적 주요 기능이 아닌 화면을 Compose로 마이그레이션 하기도 한다.
그럼 이런 곳에서 안드로이드 개발 신입에게 맡겨지는 업무는 주로 무엇일까? 과연 xml만을 할 줄 안다고 해서, 주요 기능들이 즐비한 레거시 코드의 유지보수를 흔쾌히 맡기는 팀이 과연 몇이나 될까?
게다가 아직 라이브러리의 성숙도 미달로 개발이 불가능한 부분을 제외하고 100% Compose로 구성하고 있는 곳들도 심심치 않게 보인다. 여기에서 xml을 아는 것은 업무를 처리하는 데 과연 얼마나 큰 도움을 줄 수 있을까?
그렇다고 해서 Compose를 안드로이드 필수 교육 과정에 추가해야 할까?
시간만 많다면 교육 과정에 무엇을 끼워 넣든 무슨 상관이랴. 시간은 항상 제한적이기에 머리가 아파온다.
다른 플랫폼도 마찬가지이겠지만, 안드로이드 프레임워크를 실무에서 다루기 위해서는 알아야 할 라이브러리들이 너무 많다. CS같은 기초 컴퓨터 공학 지식만을 알아서 될 문제가 아니라, 라이브러리 자체의 활용법을 알아야 한다는 게 특이하다고 느낀다. (물론 CS 지식도 필요하다)
안드로이드 시스템에 대한 이해부터, 코틀린 문법, 네트워크, 직렬화, 이미지 로딩, DB, 코루틴 등등… 서버와 통신할 수 있는 앱 하나 만들기 위한 필수 지식만 공부하기에도 알아야 할 게 넘친다. 사용법만 알면 그걸로 다일까? 깊게 탐구하며 원리도 깨우치려고 노력해야 한다. 그런데 여기에 Compose까지 끼워 넣으려면, 대체 얼마나 많은 시간을 들여야 하는 걸까?
xml이냐 Compose냐, 이런 양립하는 생각에 아직도 결론을 내리기가 어렵다.
시점을 잠시 돌려서, Compose도 xml도, Canvas, Paint 같은 하위 단계의 도구를 사용하니, 사실상 가장 근본이 되는 Canvas Paint를 가르쳐야 하는 게 아닐까 하는 생각도 든다. 그림판을 만드는 것은 꽤 어렵지만, 가장 밑바탕을 다질 수 있는 좋은 예제가 되겠다.
결국 라이브러리에 구애받지 않고 개발을 수행할 수 있는 능력이 중요한데, 일단 안드로이드 앱을 개발하려면 라이브러리를 알아야만 시작할 수 있으니.. 참 아이러니하다.
개발자가 되기 위해 누가 알려주지 않더라도 개발 지식을 스스로 계속해서 학습해야 하듯이. 교육 과정에서는 이런 것이 있음을 알리고, 학습자 스스로 습득할 수 있도록 유도하는 게 가장 합리적인 방법일까.
피드백 들여다보기
“어떤 문제가 생길 수 있는지 구체적으로 남겨달라”, “피드백과 함께 그에 대한 자료를 달라”, “왜 바꿔야 하는지 알려달라”
여전히 이 피드백은 수용할 생각이 없다. 이것들은 스스로 찾아야 의미가 있는 법. 버그가 생겼는데, 디버깅하기가 어렵다는 이유로 버그를 고치지 않고 그대로 서비스를 운영할 것인가?
실무에서의 버그 찾기는 대부분 눈 가리고 미로찾기를 하는 것과 비슷하다. 나는 기꺼이 크루들을 미로에 던지고, 눈가리개를 채워주겠다.
“리뷰가 늦는다”
늦음은 참 상대적이다..
안드로이드 리뷰어 중에서 리뷰가 늦었음을 완전히 인정한다. 정신 건강이 정말 온전치 않았기도 했지만, 업무량에 치이기도 했다. 주말에 근무하는 경우가 많을 정도였으니… 그래도 리뷰 요청한 지 30시간을 초과하지 않으려고 정말 갖은 노력을 했다. 24시간 이내에 하는 것이 룰이지만.. 변명 아닌 변명을 늘어놓는다.
사실 우테코 전체로 따지면 안드로이드 리뷰어가 압도적으로 리뷰 시간이 빠르다. 48시간을 초과하는 리뷰어는 본 적이 없다. 이 점을 알아주면 참 좋을 텐데… 어쨌든 룰을 지키지 못한 것에 미안함을 느낀다. 내년에는 좋은 정신 건강과 함께 업무량이 적기를 기대하며…
“대화를 많이 나누지 못해 아쉬웠다” “핑퐁이 적어 아쉬웠다” “여러 번 리뷰 받지 못해 아쉽다”
나 또한 아쉽다. 샤이보이 샤이걸들이 많아서 그런가 코멘트에 코멘트가 달리는 경우가 적다. 코멘트가 달리면 그 크루에 대한 생각을 엿보기가 더 수월해진다. 더욱더 어떤 생각으로 이런 코드가 나오게 되었는지 유추하기가 쉬워진다. 그리고 어디서 막혔는지도 눈에 보인다. 나 또한 그랬기에.
오히려 코멘트가 많이 없는 친구들은 내가 역방향으로 슬랙 DM을 남겨보는 건 어떨까 하는 생각이 든다. 바빠서, 미션 요구사항 맞추느라 시간이 없어서 깊은 고민을 하지 못해 코멘트를 못 쓰는 것 같았다. 사실 그냥 떠오르는 생각을 적어도 상관없는데 말이다. 내가 좀 더 따뜻하게 먼저 다가가려고 시도해야겠다는 다짐을 했다.
아쉬움을 이야기하는 피드백도 있었지만, 소중한 피드백들도 많다. 덕분에 깨달음을 많이 얻을 수 있었다, 생각을 더 발전시킬 수 있었다, 비유가 적절했다. 등등.. 내가 의도한 내용들이 크루들에게 잘 닿았다는 생각에 뿌듯하기도 하고, 그것으로 본인이 더 좋은 생각을 할 수 있게 되었다는 점에서 보람을 느낀다.
리뷰어에게 좋은 점들을 느끼더라도 그것을 잘 표현하지 않을 수 있는데, 이렇게 진심을 담아 꼭꼭 표현해 주는 것이 얼마나 고맙고 소중한지. 크루들에게 참 감사함을 느낀다.
마무리
저번보다 주저리가 참 긴 글이었다.
작년에는 우테코 자체에서 벌어진 상황들을 중심으로 다뤘다면, 이번에는 리뷰어를 하면서 느꼈던 내 생각과 감정에 대해 더 초점을 맞춰 이야기를 써보았다. 쓸데없이 길게 쓴 건 아닐까 하는 생각도 든다.
안드로이드에 입문하려는 친구들을 만나고, 내가 여태껏 헤쳐왔던 것을 조금은 다듬어 전달하고, 그것들을 잘 활용해서 성장하는 크루들을 보고 있노라면 참 즐겁고 보람차다. 언젠가 이 업계에서 동료가 될 친구들을 마주하고 그들의 우주를 엿보는 것도 참 즐거운 일이다. 그들을 위해서라도 내가 더 좋은 영향력을 만들어 내어주고 싶은 생각이 드는 이 활동이 나의 또 다른 삶의 원동력이 되기도 한다.
부디 나의 영향을 받은 크루들이 어떠한 경로로든 좋은 도움이 되었길 바라며 글을 마친다.
반응형'회고, 생각' 카테고리의 다른 글
필자의 소통에 노력하기 위한 방법들 (1) 2024.11.10 29살, 2023년 회고 (1) 2024.10.27 우아한테크코스 5기 리뷰어 회고 (0) 2023.07.08 사내 인터뷰 (0) 2023.03.20 28살, 2022년 회고 (1) 2022.12.31