Mini Challenge2가 끝났다.
사실 끝난지 꽤 오래됐지만 회복할 시간이 필요해서 후기를 늦게 작성하게 됐다. 욕심 안부리려고 해도 다 쏟아내버리게 된다.
개인적인 일들 때문에 가장 힘든 시기에 시작되고 끝난 MC2는 약 6주 정도 동안 가장 바쁘게 지나갔고, 가장 생각을 많이 한 챌린지였다.
그리고 처음으로 개발 팀장을 맡아서 했었는데, 나에게 실망을 많이 하기도 한 챌린지였다.
발표 전부터 지금까지 약 2주 동안을 정말 정말 정신적으로 힘들게 보냈던 것 같다. 지금은 다 털어내고 "그래서 다음은 어떻게 할거야?"라고 스스로에게 묻고 있는 중이고 어느 정도 답을 찾아내고 있다.
이와는 별개로 정말 정말 가족같은 팀원들을 만나서 (내가 아빠다) 정말 따뜻한 하루 하루를 보낼 수 있는 챌린지이기도 했다.

애끼고 애끼고 또 애끼는 우리 택이네 팀원들!

1. 디자이너와 기획자가 없는 팀
MC1에서는 믿음직한 기획자 출신 형님이 있었고, UI/UX 개발은 해본적 없었지만 믿음직한 디자이너 출신 누님이 있었다.
그리고 또 MC1은 첫번째 프로젝트인 만큼 기대치도 많이 낮았던 것이 사실이었다.
정신없이 지나갔었고, 이 때문에 기획, 디자인, 개발 과정 보다 오히려 사람에게 집중한 시간이었고 다른 사람에게 처음으로 우리를 보여주게 되는 발표 준비에 가장 열정을 쏟기도 했었다.
하지만 MC2에서는 마법처럼 팀원 6명 모두 개발자 출신이었다.
처음에는 "우리 엄청난걸 만들어낼 수 있는거 아니야?"라고 서로 좋아했지만, 그때는 알지 못했었다... 개발 들어가기 전에 모든 체력을 다 써버릴 것이라는 것을...
원래 팀의 목표는 아카데미 세션이 끝나면 칼퇴하는 것이었고 기획 단계까지는 그것이 잘 지켜졌다.
폭주기관차 같은 팀원이 한명 있었고 그 팀원 컨디션이 안좋은 날에는 나와 다른 사람들이 적절하게 바통을 이어받아서 하루 하루 처리함으로서 기획 과정은 어느정도 순조롭게 이루어졌었던 것 같다.
하지만 Low-Fi, High-Fi 과정에서부터 파국이 일어났다.
팀원들간의 갈등이 있었던 것은 아니지만, 조금 더 나은 UX와 UI를 위해서 대부분의 것들에서 의견이 갈리고 부딪혔고, 때로는 그날 해야할 것들을 다 미뤄둔채로 하루종일 토론만 한 날도 있었다.
칼퇴는 커녕 점심 저녁 다 같이 먹고도 그날 할 일을 끝내지 못하는 날의 연속이었다.
왼쪽에 페이지 개수가 보이나.. 이건 정말 일부분이다.
팀원 모두 수백장씩 그려가면서 조금이라도 더 나은 UX와 UI를 위해 노력했다. 대화도 정말 많이 해서 밤에 집에 돌아 오면 목이 아플 정도였던 것 같다. 하루종일 모니터 보고 있으니까 눈이 아파서 초점이 안맞다는 증상을 호소하는 팀원도 있었다.

서로의 주장을 전달하기 위해서 HIG문서를 꼼꼼하게 읽어보고, 수십개의 앱을 뜯어보고 고민한 결과 팀 나름대로의 앱 디자인 기준도 생겼지만, 대부분의 팀원들이 개발 과정에 들어가기도 전에 많이 지쳐보여서 안쓰럽기도 했다.
나 또한 앱 디자인을 하면서 많이 지치기도 했고, 또 아카데미 외부의 개인적인 일과 겹쳐서 과도하게 스트레스를 받으면서 정신력을 정말 빠르게 소모해버렸던 것 같다.
2. 처음 해보는 개발 팀장
개발 기간 10일동안 팀원들과 함께 정말 많은 것들을 배울 수 있었다.
개발 팀장은 이번이 처음이었다. 대학교 다닐 때 과제 팀플에서 팀장을 해본적이 몇번 있었지만 이렇게 욕심이 생기는 프로젝트의 개발팀장을 맡은 것은 처음이었고 그래서 그 전과는 무게가 정말 많이 달랐다.
지금은 생각이 많이 달라졌지만, 내가 생각했던 팀장은 팀원들보다 기술적으로 항상 한발 더 앞서가야 하고 팀원들을 동기부여 시켜주어야 하고 모든 팀원의 코드를 읽고 개발 진행 상황을 알고 있으면서 방향을 제시해주는 사람이었다.
팀원 모두가 일관되고 수준 높은 코드를 만들어내기를 바랬었고,
그래서 모든 팀원의 코드리뷰를 수행했고, 팀원들이 원활하게 협업할 수 있도록 Git을 꽤 깊게 알려주는 시간을 가졌다.
모든 코드를 다 읽었고 하나 하나 제대로 구현해내길 바래서 정말 많이 노력했던 것 같다.
우리 팀은 개발 과정에 앞서서 전형적인 Norm을 세우고 들어갔다.
먼저 팀원 각자의 모든 업무는 Issue를 생성하고, Branch를 생성한 후에 작업을 하도록 했고,
각자의 업무가 끝나면 PR을 날리고, 반드시 팀장인 나와 다른 한명의 코드리뷰 즉, 최소 두명의 코드리뷰를 받고 나서 메인 브랜치에 합치는 것이 가능했다.
당시 클린코드 스터디를 운영하고 있는 입장에서 프로젝트의 코드가 일관성 있고 유지보수하기 쉽길 바랬고, 내가 iOS를 팀원들에게 수업 할 수 있는 상황이 되지 않기 때문에 코드리뷰를 통해 팀원들의 실력이 향상되었으면 좋겠다는 생각도 있었다.
우리팀의 Issue와 Pull Request


우리 프로젝트의 결과물
GitHub - DeveloperAcademy-POSTECH/MC2-Team4-Techome: 행복한 택이네 🏡
행복한 택이네 🏡. Contribute to DeveloperAcademy-POSTECH/MC2-Team4-Techome development by creating an account on GitHub.
github.com






프로젝트는 목표한 MVP 모델까지는 완성할 수 있었다.
하지만 결과와 상관 없이 팀장으로서 나는 내 스스로의 기대치에 많이 미치지 못한 것 같아서 아쉬웠다. 더 잘할 수 있었을 것 같다는 아쉬움이 정말 크게 남았다.
3. 무엇이 문제였을까?
몇주 동안을 정말 힘들게 고민도 하고 주변 사람들과도 이야기를 많이 나눴던 것 같다.
내가 생각한 문제점은 크게 네가지였다.
첫번째로 책임감을 과도하게 안고 가려고 했다.
아카데미에서 나에게 개발 팀장을 시킨게 아니라 팀원들이 나를 믿어줘서 맡게 된 업무였기 때문에 정말 잘 해보고 싶었던 것 같다.
팀원들이 나에게 무언가를 요구하지는 않았다. 하지만 내 스스로 "팀장이면 이렇게 해야해!" 라는 기대치가 높았던 것 같다.
개발 기간 10일이라는 시간은 무언가를 새롭게 도전하기에 결코 긴 시간이 아니었다.
그 상황에서 지금껏 내가 하던 개발 방식과 다른 방식을 시도하는데 이를 완벽하게 잘해내야 한다는 의무감을 가지면 안됐다고 생각한다.
여전히 가장 어렵다고 생각하지만 조금 책임감을 내려놓는 시도를 했으면 어땠을까 생각이 든다.
두번째로 스트레스 관리에 실패했다.
아카데미 밖에서 힘든 일이 있었다. 이 일은 현재 진행중이지만 그 당시가 가장 힘든 상황이었던 것 같다.
팀원들과 함께 있으면서도 마음 한켠에는 계속 그 개인적인 일이 남아있었던 것 같다.
팀원들은 내게 그런 일이 있었다는 것을 전혀 눈치채지 못했다고 위로했지만, 개인적인 일을 프로젝트까지 끌고 오게 된것은 큰 문제라고 생각한다.
세번째로 욕심에 비해 능력과 시간이 부족했다.
기획과 디자인을 떠나서 개발에만 집중할 수 있는 시간은 단 10일이었다. 지금 돌이켜보면 10일이라는게 믿기지가 않는다. 한달은 한 것 같은데 말이다.
그 중에서 나는 개인적인 사정으로 3일 정도를 아카데미에서 빠져있어야 했다.
틈틈히 코드리뷰를 했지만, 정말 짧은 시간동안 상대적으로 긴 시간을 빠져있으면서 팀원 모두의 코드를 책임진다는 것은 거의 불가능했다.
또 처음이기 때문에 당연히 시행착오 할 것도 고려했어야 했는데, 내 욕심이 과했던 것 같다.
네번째로 인적자원 활용을 제대로 하지 못했다.
정말 좋은 팀원들을 두고 나 혼자 다 해내려고 했던게 가장 큰 문제였던 것 같다.
코드리뷰도 팀원들 서로 해주는 것으로도 충분히 좋았을 것 같고, 어려운 컴포넌트를 만들어내는 작업도 나 말고도 다른 팀원들이 도울 수 있도록 했으면 충분했을 것 같다.
그리고 코드에 문제가 있을때는 그 코드를 짜는 사람을 바꾸거나 다시 짜오라고 해도 아무도 기분 나빠하지 않았을거고 충분히 서로 해낼 수 있는 팀원들이었는데 이게 팀원을 배려하는 것이라고 잘못 생각하고 문제 있는 그 코드에서 어떻게든 해내보려고 하다보니 프로젝트가 느려지고 나도 힘들었던 것 같다.
나름 이렇게 4가지로 원인 분석을 해봤는데,
아마 책임감을 많이 가지는 것은 성격적인 문제이기 때문에 고치기 쉽지 않을 것이고, 외부 요인에 의한 스트레스도 내가 컨트롤 할 수 있는 문제는 아니기 때문에 세번째와 네번째를 해결해서 다음 팀장을 할 때는 후회가 적게 남도록 해보고 싶다.
4. 앞으로는 어떻게 해야할까?
다음 프로젝트에서도 팀장을 맡게 될 확률이 높은 상황에서, 똑같은 실수를 반복하고 싶지 않아서 몇가지 대비를 하려고 한다.
두번째는 달라야하니까.
첫번째는 시간과 능력에 관한 문제에 대한 해결 방법이다.
한정된 시간이라면 기획과 디자인에 덜 집중하고, 개발을 미리 준비하는 시간을 가지려고 한다.
프로젝트가 시작하기 전에 미리 써야 할 기술들을 조사하고 Git 환경설정을 하고 아키텍처와 같은 큰 뼈대들을 미리 잡아놓으면 좋을 것 같다.
늘 그랬듯이 개발 기간이 넉넉하지는 않을텐데 내가 원하는 코드 품질을 위해서는 미리 미리 준비 해야할 것 같다.
두번째는 인적자원 활용에 대한 해결방법이다.
개발에 들어가기에 앞서 기획과 디자인 단계에서 팀원들과 함께 개발 스터디나 세션을 진행해서 어느정도 일관된 코드가 나올 수 있는 환경을 조성하려고 한다.
내가 조금 더 준비해서 팀원들에게 사용할 아키텍처를 미리 이해시키고, 프레임워크에 대한 이해도를 올려놓으면 개발에 착수했을 때 훨씬 수월할 것이라고 생각한다.
다음 프로젝트에서는 아마 Ribs 아키텍처와 Combine을 사용하게 될 것 같은데, 이를 미리 공부해서 팀원들에게 설명하는 세션을 계속 가질 계획이다.
그리고 일정 관리나 기록 등 내가 취약한 부분에서 이를 잘하는 팀원과 업무를 나눠서 하는 것도 중요한 것 같다.
5. 후기를 마치며
사실 블로그라는 공개적인 장소에 글을 쓰는 것이기 때문에 생각을 꽤 많이 정제해서 썼지만,
최근에 꽤 자괴감에 빠져있는 와중에 더 힘들었으면 좋겠다는 은연 중의 생각도 있었다.
사람이 정말 힘들 때 성장한다고 하는데, 이렇게 힘들거 차라리 더 힘들어서 정말 많이 성장했으면 좋겠다는 생각도 있었기 때문이다.
내 스스로에게 실망을 많이 하더라도 항상 다음 기회가 있어서 다행이라는 생각을 한다.
다음에는 좀 더 잘하겠지.
'애플 개발자 아카데미' 카테고리의 다른 글
[Apple Developer Academy @ POSTECH] Mini Challenge 3 후기 (1) | 2022.08.11 |
---|---|
[Apple Developer Academy @ POSTECH] Mini Challenge 1 후기 (2) | 2022.04.19 |
[Apple Developer Academy @ POSTECH] 최종 합격 후기 (4) | 2022.02.07 |