참고 - 5/21 두번째 KPT 회고
[ keyword ]
소통
, 개발진행속도
, 개발난이도
, 어려운점(개인적인 이슈 또는 전체적인 어려운 점)
소통
Keep
[ 1차 회고 ]
- 스몰 토크
- 저희는 날선 사람이 없어서, 항상 스무스한 분위기
- 특별히 누군가의 감정이나 예민한 부분이 있는지 걱정하지 않고 이야기 할 수 있다는 점 좋다
- 화이트보드로 스크럼 시간 절약 (10분)
[ 2차 회고 ]
- 가벼운 문제라도 생기면 바로 채팅을 통해 1차 알림 후 소통을 이어나간 점
- 화이트 보드 많이 활성화시킨 점
- 변경사항 등 있으면 이야기 한 것도 반드시 적어두었다
- 린트 rule을 바꾸고자 할 때 슬랙에 바꿔야 하는 이유를 남긴 점
- 소통을 좀 더 확실하게 한 점
- 텍스트로 전달하는게 어려움을 느껴서, 노션 칸반 보드를 활용하여 소통의 좋은 도구로 사용
1차 회고 때 나왔던 소통 관련 문제점들이 대부분 해결되었다.
Problem
- 문서로 해결되는 소통이 구두로 변환되는 문제
- 이중 시간의 소요 (문서작성시간 + 구두설명 시간)
Try
- 싫은 소리 하는 사람이 없당.. 개선을 위해 조금 더 이야기 해볼 것.
- 문서 확인을 우선으로 하자
개발 진행 관련
Keep
- 첫 페이지를 구현한 다음에는 PR단위를 줄인 점
- PR 등록 시 30분 이내 같이 리뷰하는 시스템 도입
- 필요한 기능 위주로 우선 순위 선정을 잘했음
- issue + PR 연결, epic등록까지 이슈 분할을 잘했음
- git(장)의사님이 있어서 매끄러운 git 그래프가 그려진 것
- CSS/styledcomponent 의견
Problem
- 코드의 통일성이 없음
- 폴더명, 파일명들의 prefix, postfix가 제각기 다른 문제
- 통일된 디자인 시스템이 없는 문제
- (마감)시간에 쫓김
- 리뷰가 제대로 짚고 넘어가야 하는 것들도 그냥 넘어가게 되는 문제
- 코드와 PR의 가독성이 부족했음
- 이슈와 커밋 단위가 일치하지 않았음
- 스타일 재사용을 못했음
기타 (어려운점, … )
Keep
- 큰 갈등없이 원활히 2주를 마쳤다.
- 스스로 할 수 있는 일을 미루지 않고 잡아서 해내는 문화?
Problem
- Form 쪽을 hooks등을 통해서, 로직 코드량을 줄이고 싶었는데, 쉽지 않았다.
- 라이브러리 사용에 있어서 원리를(어떻게 동작하는지 정도라도) 모르고 사용하면 의미가 없다는 것을 느낌
- 처음에 Formik 공식 문서의 예제 코드만 활용하다보니 제대로 된 라이브러리 사용을 하지 못함
- 이후에 원리를 파악하고 사용하면서 원하는 방향으로 코드를 짤 수 있었음
- react-router도 마찬가지
- React-Slick 사용할 때 documentation을 제대로 읽어보지 않아 먼 길을 돌아갔다
- 대신에 git code를 분석하는 좋은 경험은 했다
- 뱃지 구현 시 커스텀 값을 순조롭게 추가할 수 있도록 재사용성을 높이고 싶었는데, 가독성이 특히 부족한 것 같다.
- 가독성의 문제
- 함수 당 라인 수 50줄만 넘어가도 안 읽힘
- 실력의 문제일 수도 있지만 현재 코드 상에서는 리팩토링이 필요함
- 개발 시간의 문제도 포함됨
Try
- 함수형 컴포넌트
- 세부 구현 함수(순수 함수)화 + 좋은 함수명
- 리팩토링시, 항상 의존도를 낮추고, 응집도를 높이는 방향으로 설계를 고려하자.
- 하나의 함수(컴포넌트)가 단일 책임의 원칙을 위반하지 않는지 늘 주의하자.
- 가독성을 늘릴 수 있는 여러 방법이 존재한다. 생각하고 공유하고 시도하자!
- 복잡한 로직을 변수명등으로 표현
프로젝트 + 회고 후의 소감 (제출 시 해당부분은 안올려요!! 자유롭게 작성 ㄱㄱ)
- 리마인더 연습 ( 껄끄러운 일.. 누구한테 뭐해라… 팀장은 매니지먼트 직무다! ㅋㅋㅋ)
- 리얼 자유
인수
- 공개되면 부끄러우니까 댓글로 작성했음당. → 해당 부분은 편집에서 올릴게요 ㅋㅋㅋ
준혁
개인 회고
맘에 들었던 점
[ 소통 부분 ]
- 팀원간 서로 양보할 부분은 양보하고, 의견을 표출할 때 모두 해당 의견에 대하여 경청한 점
- 반대 의견이 있다면 합리적인 이유를 제시하고 토론을 진행
- 아이디어를 제시하기에 너무나도 자유로운 분위기였다. 코어타임 진행 중에 궁금한 사항이나 막히는 부분이 있다면 바로 마이크를 키고 말하거나, 그게 어려우면 디스코드 팀 채팅방에서 자유롭게 채팅을 날리는 문화를 확립했다. 다른 팀원분들도 어려움이 있을 때 다 같이 모여서 해당 이슈에 대하여 의견을 자유롭게 제시하고, 여러 방법들을 시도해 보면서 이슈들을 해결할 수 있었다.
- 어떠한 의견도 의미 없는 의견이거나 무시할 만한 의견이라고 생각하지 않고 모두 경청해 주어서 너무 감사하다.
- 칭찬을 아끼지 않음
- 우리 팀원 분들 모두가 성격이 좋으시다. 그래서 잘했다고 하는 부분 에대하여 항상 감사함을 표출하고, 박수를 쳤다. ㅋㅋㅋ 칭찬은 고래도 춤추게 한다는 말이 있는 만큼, 칭찬을 받으면 더 열심히 하게 되는 부분이 있어 개인적으로 동기 부여가 많이 되었다.
- 팀 화이트보드 도입
- 2주간의 짧은 개발 기간 때문에 시작과 마무리 스크럼을 모두 진행하는데, 여러가지 이슈들을 생각하다 보면 의미없이 보내는 시간이 정말 많았다. 그런데 팀 화이트보드를 도입하고 나서, 끝나거나 생각나는 이슈들, 다루고 싶은 주제들을 자유롭게 팀 화이트보드에 적어두면, 마무리 스크럼 또는 다음날 오픈 스크럼에서 팀 화이트보드에 써있는 주제들을 가지고 이슈들을 다루니, 스크럼 시간도 줄어들면서 중요한 부분만 빠르게 논의가 가능했다.
[ 개발 부분 ]
- PR의 단위를 짧게 가져갔음
- 처음에 페이지 단위로 개발을 하다 보니 PR의 길이가 너무 길어졌다. 그래서 읽는 사람도 부담이 되고, PR 리뷰 기간이 길어지면서 반영이 늦어지는 악순환이 발생했다.
- 해당 부분을 해결하고자 이슈 자체를 작은 단위로 가져가고, PR 코드 양도 200자 정도로 매우 적게 가져가기로 정했다. 그리고 basic 기능들을 개발하기 때문에 코드의 반영이 빠르게 이루어져야 하므로, PR을 올리면 30분 이내로 리뷰가 끝나게끔 룰을 정했다. 사실 해당 부분은 나의 경우는 코드를 작성하다가 흐름이 끊기는 것을 별로 좋아하지 않아서 반대 했던 부분이다(마무리 스크럼 1시간 전에 PR을 리뷰하는 시간을 갖는 것이 어떠냐고 제안했었다) 그러나 돌아보니 해당 부분은 나의 잘못된 생각임을 깨달았다. PR리뷰를 빠르게 하고 빠르게 반영함으로써 개발 시간을 크게 줄여 지금의 위치에 올 수 있었다고 생각한다.
[ 개인 부분 ]
- 조금이나마 단일 책임 원칙을 준수하고, 컴포넌트의 의존도를 낮추고 응집도를 높이기 위하여 이를 의식적으로 생각한 것
- 이전부터 코드를 작성하면서 가장 고민했던 부분 중 하나이다. 특히 오브젝트라는 책을 읽으면서(아직 시간이 없어서 챕터 1밖에 읽어보지 않았지만) 가장 첫 챕터에 나오는 부분이 바로 이 단일 책임 원칙 준수와 의존성을 줄이고 응집도가 높은 클래스를 만드는 것이 중요하다는 내용이었다.
- 해당 부분은 Java로 쓰여졌기 때문에 컴포넌트인 리액트와 Java와는 다른 패러다임을 갖기 때문에 완벽히 이론을 적용할 수는 없었지만, 원칙 자체는 동일하므로, 최대한
하나의 컴포넌트가 하나의 역할을 하는가?
를 우선적으로 생각하여, 해당 컴포넌트 내부에 다른 역할을 하는 함수, 분리 가능한 함수가 있다면 이를 우선적으로 분리하려는 시도를 하였다. 완벽하진 않았지만, 그래도 어느정도 가독성 향상과 유지보수하기 쉬운 코드를 만드는데 기여할 수 있던 것 같다. - 다만 시간이 부족하여 팀 내부에서 일단 구현에 집중하고 재사용성은 추후에 고려하자고 했으므로, 응집도나 의존성을 낮추는데 크게 힘쓰지 못한 것이 다소 아쉽지만, 이 프로젝트는 접지 않고 계속 리팩토링 및 서비스를 개발하자고 팀원들과 확정했으므로 앞으로 해결될 것이라 기대한다 🙂
- 큰 → 중 → 작 방향으로 개발을 진행한 것
- 나의 평소 개발 진행 방향은 보통 핵심이라고 생각되는 부분의 로직을 생각해 둔 뒤, 각이 나온다 싶으면 세부 사항을 개발하는 방식으로 진행해왔다. 이런 방식은 먼저 큰 것부터 정리해두고 나머지 부분을 정리할 수 있어 심적 여유가 생긴다는 점에서는 좋지만, 전체적으로 봤을 때 처음에 잘 풀리지 않으면 개발 진행 속도가 점점 늦어진다는 단점이 있고, 이를 인지하고 있었다. 이번에는 큰 틀로 먼저 로직들을 짜고(이를 함수명으로 반영하는 것이 정말 가독성이 좋았다), 그 큰 틀 안에서 가져야 할 책임들을 나누고 다시 해당 책임 내에서 다음 책임을 나누는 방식으로 진행했다. 이렇게 트리구조로 접근하는 것이 생각의 흐름과 일치하기 때문에 개발 속도도 증가되었고, 가독성도 향상되었다고 생각한다.
아쉬웠던 점
[ 소통 부분 ]
- 개인적으로 소통 부분에 대해 크게 아쉬웠던 점은 없었다. 가끔 의견 차이가 있긴 했지만, 그것이 감정적으로 발전하진 않았다. 우리 팀 자체가 일단 타인의 말을 경청해주는 문화가 있었고, 이유가 합당하면 수용하는 오픈 마인드를 가지고 있기 때문이었다.
[ 개발 부분 ]
- 통일된 디자인 시스템의 부재
- 공통적인 부분이 많았음에도 불구하고, css 는 일단 동작만 하면 돼!라는 생각에 emotion 기반의 컴포넌트를 사용하였음에도 불구하고 잘 사용은 못했던 것 같다. 이번 프로젝트에서
QuizSolvePage
와QuizResultPage
를 담당했는데,QuizResultPage
는 지금 컴포넌트를 봐도 그냥 닫고 싶을 정도로 너무 막 짰다.(사실 가장 처음에 만들어진 부분이라 더 그런것도 있다) - 오히려 리팩토링할 수 있는 여지가 많아서 좋다(?). 우리팀은 이번 2주가 지나간 뒤 조금 여유를 두고 리팩토링을 우선 진행한 뒤, 우리가 생각한 advanced를 구성하기로 했다.
- 아마도 우선 공통적으로 사용하는 부분 button, input 등등의 스타일을 디자인 시스템으로 만든 뒤에 사용하지 않을까 싶다!!
- rule 적인 부분이 완벽하지 않았던 것
- 시간적인 이슈 때문에 완벽하게 팀 룰을 정하지 않아 파일명의 prefix가 다 제각각이었고, 폴더 구조도 애매한 부분이 많았다. 좀 더 짚고 넘어가야 할 부분이 꽤 있었음에도 불구하고 일단은 구현이 목표이다보니 잘 짚고 넘어가지 않았던 점이 조금 아쉽다. 해당 부분 다음주에 있을 팀 회의 때 정해나가려고 한다.
- 이슈와 커밋 단위의 불일치
- 이슈단위로 개발하는 것이 아직 익숙하지 않다 보니 해당 이슈 범위를 벗어나게 되는 경우가 종종 발생했다. 처음에는 페이지 기반을 닦다보니 PR 단위가 커져버려 더욱 이런 문제가 심각했다. 중반 부분에는 그래도 신경 써서 개발을 해서 해당 문제가 좀 덜 했지만, 후반에 시간에 쫒기면서 다시 해당 문제가 드러나게 되었다.
- 해당 문제를 해결하기 위한 방법…으로는 더 실수(?)를 많이 하여 익숙해지는 방법 말고는 없지 않을까 싶다. PR도 단일 책임으로!
[ 개인 부분 ]
- 로직과 컴포넌트의 분리를 시도하고자 하였으나, 잘 되지 않았음
- 페이지에 많은 기능들이 들어가게 되고 api 요청 함수들과 util로 뺄 수 있는 순수함수들을 제외하고 나머지들에 대하여 로직 분리를 해보고 싶었으나, 리액트 상태에 묶여있는 부분들이 많아 리팩토링이 쉽지 않았다. 상태를 custom hook으로 묶기에는 재사용성도 떨어지는 부분이라고 생각해서 custom hook 방식으로는 리팩토링 하지 않았다. 실력의 문제이기도 하고, 시간의 문제이기도 한 것 같다. 리팩토링 기간에 좀 더 로직을 분리하여 순수함수로 내보낼 수 있는 부분이 있는지 확인하고, 코드 다이어트를 시도해 보고자 한다. (잘 안될 수도 있지만, 일단 해보는 거지 뭐…) → 해당 과정에 대해 기록으로 남기기
- 초반에 엄청난 git 실수
- git 사용법이 아직 익숙하지 않아서 초반에 중대한 git 실수를 저질렀다. develop 브랜치를 기본 브랜치로 사용하고 있는데, merge 하면서 conflict를 처리하다가 rebase를 잘못하여 develop 브랜치가 현재 작업하고 있는 브랜치에 머지되었다… 덕분에 그래프가 많이 꼬여버렸다 ㅜㅜ. 덕분에 git 작업하면서 명령어도 조금 더 잘 숙지하게 되었고, 실수를 다시 하지 않으려고 두 번 세 번 확인한 결과, 그 이후로 중대한 실수는 발생하지 않았다.
내가 배운 것
- 팀 단위 소통 방식(문서화 및 리뷰)
- 팀 단위의 소통은 개인 프로젝트를 진행할 때보다 훨씬 어렵고 중요함을 깨달았다. 우리 팀원과 함께 하면서 문서화의 중요성을 배웠다. 기록을 중시하는 팀원분들 덕분에 늘 스크럼 하기 전에 회의록부터 만드는 습관을 가지게 되었다. 의사 소통 비용을 줄이는데 가장 큰 기여를 했다고 생각했다. 그때 그때 기억나는 좋은 아이디어들도 기록하지 않으면 소멸되거나, 스크럼하면서 이런 저런 좋은 아이디어나 의사 결정을 하더라도 뒤돌아서면 까먹기 일상이었다. 근데 회의록을 기록하면서 이러한 부분이 많이 개선되었다고 생각한다.
- PR은 내 코드를 남에게 보여주는 것이다. 나 역시 리뷰를 통해 더 좋은 코드를 작성하고자 리뷰를 받는 것인데, 상대방에게 이 코드가 무엇인지 설명을 제대로 하지 않으면 무엇을 하고자 하는지 잘 모를 것이다. 나 역시 이러한 피드백을 받았으므로 더 성심 성의껏 PR을 작성하는 연습을 했다. (물론 코드 가독성이 일순위이다)
- 그리고 팀에 기록되지 않는, 프로젝트를 진행하면서 무엇을 했는지 간단히 기록하는 TID를 개인 노션에 작성했다. 작성에 공들일 시간이 별로 없어 간단히 무엇을 했는지, 어떤 이슈가 있었는지, 해당 이슈를 해결했다면 어떤 방식으로 해결했는지, 해결하지 못했다면 앞으로 어떤 방식으로 접근해볼 수 있을지 간단하게 적어놓았다. 그러면 다음번에 같은 실수나 오류가 발생했을 때 훨씬 찾아보기 쉬울것이다.
- 가독성의 중요성 (코드 길이 및 변수명, 상식적인 흐름, 단일 책임)
[ 엄청난 난제, 사실 지금도 잘 모르긴 함 ]
- 팀 프로젝트다보니, 내 코드만 담당하는 것이 아닌, 타인의 코드를 편집해야 하는 경우가 필연적으로 생길 수 있다. 그런데 코드가 제대로 책임이 분리되어 있지 않고, 가독성이 너무 떨어져 어디서부터 고쳐야할 지 몰라 방치된다면?? 정말 최악의 경우 해당 코드를 전부 드러내거나 같은 작업을 여러 번 반복하게 될 수 있다.
- 나 역시 팀원분의 코드를 보면서, 내 코드를 볼 때도 사람들이 쉽게 편집할 수 있는가? 에 대하여 의문을 갖게 되었고, 해당 부분에 좀 더 신경쓰면서 코드를 작성했다.
- ex) 사용자가 의도한 동작을 통해 해당 페이지로 접근했는지 →
isAppropriateAccess
- 함수의 길이는 50줄 이내로 작성하기
- 잘 이해가 안될 때에는 코멘트 작성하기
- 상식적인 흐름 같은 경우는 다음과 같은 경우이다
- 일반적으로 물건을 사기위하여 손님이 점원에게 돈을 지불하지, 점원이 손님의 가방으로부터 돈을 빼가지 않는다.
- 상식적인 흐름을 위해서는 구현 부분과 api 영역의 분리가 필요하다.
- 분명 더 있던거 같은데 까먹었다….ㅎㅎㅎ휴ㅠ
소감
- 개발자로 나아가는 첫 번째 프로젝트였다. 그래서 데브코스에 처음 지원했을 때에도 나는 팀 활동을 하고싶다고 강력하게 어필했던 기억이 있다. 막상 팀 프로젝트를 시작하려니 기대도 되긴 했는데 그보다 불안감이 더 컸다. 팀장이라는 역할을 달고 있었기 때문에 약간의 부담감도 있었다.
- 그러나 기획부터 마감까지 같이하면서, 불안감은 사라지고 데브코스에 참여하길 정말 잘했다는 생각밖에 안든다. 내가 혼자 프로젝트를 진행했다면, 데드라인이 명확하고, 기획이 명확한 서비스를 만들 수 있을까? 아마 못했지 싶다. 역시 사람은 데드라인이 정해져있어야 일을 한다(?)
- 내가 기여한 부분보다는 팀원분들로부터 배운 점이 훨씬 많았다고 생각한다. 이 역시 첫 팀프로젝트였기 때문에 많은 기대는 하지 않았다. 그래도 앞으로 리팩토링을 진행하면서 내가 팀에 기여할 수 있는 기여도가 좀 더 높아졌으면 한다.
- 우리팀 밸런스는 정말 좋았다. 각각 다른 부분에 강점을 가진 분들이 모이니, 이것이 모여
-
가 아닌+
가 되는 효과를 보았다. 우리 팀은 정말 오랫동안 기억에 남을 팀이다.
- 하도 기록을 많이 하니까, 이제는 기록을 하지 않으면 뭔가 찝찝한 마음이 있다. 덕분에 이번달 데브코스 기록왕에 선정되었다. 정말 기쁘다 😀
창민
- 개인적인 회고? 생각?과 함께 소감 몇 마디입니다
- 지극히 개인적인 의견임을 미리 밝힙니다 :)
개인 회고
시간 흐름에 따라 작성을 해본다
[ 이번 프로젝트에서 나의 목표 ]
- 팀에 도움이 되는 팀원이 되고 싶었다
- 이전에 10일 기간 정도의 팀 프로젝트를 한 번 경험했다
- 과거의 경험을 교훈 삼아 발전하고 싶었다
그 때는 기술과 협업 스킬도 부족해서 팀에 도움을 많이 주지 못했다고 생각한다
[ 초반 : 기획 및 역할 분배 ]
- 기획 실패
- 아이디어와 기획 자체는 실패라고 생각하지 않는다
- 2주 내에 구현 가능한 기능이 아닌 더 많은 기능을 염두해두고 그것을 잊지 않으려고 했던 점이 아쉽다
- 기간이 짧아 하루가 소중한데 이 때문에 조금 허비하지 않았나 싶다
- 그래도 빠르게 해야할 일을 리스트 업하여 진행에 차질이 생기지 않게 한 점은 좋았다
- 실무에서도 데드 라인이 존재하는 경우가 발생할 텐데 이러한 경험을 잊지 않고 생각하자
[ 중간 회고 : 기능 절반 정도 구현 ]
- 팀원과 소통의 문제
- 갈등이 발생하지는 않았지만 소통이 원활하지는 않다고 팀원 모두가 느꼈다
- 소통을 위한 소통을 많이 시도했다
- 자유롭고 편하게 소통하기 위한 텍스트 공간, 팀 공식명칭인 화이트보드를 도입하자
- 코드 리뷰의 일정한 시간 텀을 정해 누락되거나 딜레이가 생기지 않게 하자
- 개인의 흐름이 끊긴다고 생각할 수 있지만 팀 개발 속도를 높이기 위해 빠르게 하자
- 모여있는 시간에는 이슈 공유를 바로 전달하자
- 코드 리뷰의 허들
- 2주라는 시간에 코드의 퀄리티를 높이기가 정말 힘들었다
- 실제로 리뷰의 허들을 어느 정도로 할지 의견 갈림(충돌?)이 있었다
- 퀄리티와 기능 완성 중 후자가 우선순위가 높다고 생각했다
- 퀄리티를 높이기 위해서는 머지 속도가 엄청 느려지고 이로 인해 개발 속도도 느려지고 기능 완성이 기간 내에 불가능하다고 판단했다
- 솔직하게 이 판단이 맞는지 틀린지 모르겠다
- 중요한 것은 이를 위해 서로의 생각을 이야기하는 과정이 있었다는 것이라고 생각한다
[ 최종 회고 : 완성 ]
- 코드의 완성도
- 코드 리뷰의 허들을 낮췄기 때문에 발생한 문제라고 생각한다
- 2주간의 데드라인에 맞추어서 필요한 기능을 완성했지만 이후에 리팩토링하면서 코드 리뷰의 허들을 높여 퀄리티를 높여보기로 했다
- API 수정 불가
- API가 주어지고 사실상 커스텀이 불가능했다
- 이 때문에 프로젝트가 API에 끼워 맞춰진 느낌이 드는 것은 어쩔 수 없다
- 그래서 새로운 API를 만들기로 했다 :)
[ 소감 ]
- 첫 목표가 팀원으로서 도움이 되고 싶다 였는데 잘 모르겠다
- 가장 표면에 드러난 것은 git?
- 이외에 무엇이 있었을까
- 기술적으로 많이 성장했는지도 모르겠다
- 소통을 위한 소통을 한 것은 잘했다고도 그리고 필요하다고도 생각한다
- 이번 팀원들이 아니었다면 가능했을까 하는 생각도 든다(운이 좋았다)
- 극심히 반대하는 사람이 있었다면 포기? 또는 그냥 넘어갔을 수도?
- 데드라인이 잡힌 개발을 다시 하게 된다면 이번보다 조금 더 발전한 나로 참여하고 싶다
루나3
- 프로젝트 일단 끝난 날 감성으로 주저리주저리 쓴 글임을 미리 밝힙니다..! 휘발되기 전에 모든 내용을 써보자 싶어 엄청엄청 기니까 안 읽으시는걸 추천합니다!! ㅋㅋㅋㅋ
개인 회고 + 생각
- 정말 열정적으로 보냈던 2주였다!
프로젝트 들어가기 전 생각
- 팀원들의 발목만 잡지 말자! 가 제일 큰 목표였다. 제대로 된 팀 프로젝트를 해본 경험도 없었을 뿐더러, 개발 경험 자체도 팀원들에 비해 많이 부족하다는 생각을 하고 있었다. 같이 개발했을 때 내가 맡은 부분만 퀄리티 차이가 날까, 민폐가 되지 않을까 사실 많이 두려웠던 것 같다.
- 평소에 의견을 주장하지 않고 YES만 말하는 편이라서, 프로젝트를 하며 의견을 말하는 연습을 하고 싶었다.
기획 단계의 생각
- 기획 아이디어는 많았고, 미리 의견 정리도 약간은 해봤었는데 Figjam에서 기획 브레인스토밍할때 제대로 적고 + 말하지 못했다. 이때까지만 해도 의견 말하는게 지금보다도 엄청 더 소극적이었던 것 같다. 물론 이때 결정된 CheQuiz 아이디어가 너무 좋아서 주제에 대한 불만은 없다! 다만 다음에 브레인스토밍 하면 의견을 더 적극적으로 내고 싶다.
- FigJam을 브레인스토밍 단계에서 도입한 건 너무 좋은 생각이었던 것 같다! 다양한 의견들을 화살표로 연결하다가, 2개의 주제가 하나로 합쳐져 지금의 주제가 나왔다. 어디가 시작이었죠? 하면서 시작 지점을 못찾았었는데, 그만큼 브레인스토밍이 잘 되었다고 생각한다!
- 와이어프레임할 때 Figma를 사용했었는데, Figma에 미리 와이어프레임 도구를 찾아서 다운해 두었고, 그래서 다른 어떤 팀보다 예쁜 와이어프레임이 되었던 것 같다! 이건 내가 잘한 점!
- 다만 Figma가 초반에 익숙해지는게 어려워서, 팀원들이 직접 디자인을 하는데 조금 힘들어했던 것 같다. UI시스템 등에 익숙하지 않아 열심히 검색하고 도입해봤는데, 디자인시스템은 효율적으로 사용되지는 않았던 것 같다. 초반에 고른 색의 조합이 별로인가 싶기도 하다.
- 디자인을 잘한다고 생각해본적은 없었는데,, 팀원들이 띄워주셔서 정말 감사했다. 나도 모르게 디자인총괄자가 되어있는..? 의견을 주장하는데 익숙하지 않아서 좀 소극적으로 굴다가 ( 디자인 알아서 하세요..!) 커피챗 때 디자인 시안이 없어서 힘들다는 댓글을 보고 막무가내로 밤새서 지금의 디자인 최종본 ( 제안이라고 쓰기는 했는데..) 를 Figma에 올려드렸다. 진짜 제안일 뿐이었는데 그대로 구현해주시고, 변경할 필요가 있을 때는 디스코드 등으로 의견을 물어봐주셔서 감사했다. 덕분에 조금은 의견을 말할 수 있게 된 것 같다.
- 개발 이어가기 전에 리팩토링을 하기로 했는데, 그때 UI 디자인 시스템을 전반적으로 바꿔야 할 것 같다. 그때는 지금보다 더 적극적으로 의견을 내보고 싶다..! 전체적으로 자신감이 많이 붙었다. 무슨 의견을 말하든 꼼꼼히 들어주시고 반영 OR 더 좋은 의견을 알려주는 팀 분위기 덕인 것 같다.
개발 단계의 생각
- 정말 본격적인 팀 프로젝트다! 하는 생각이 들었다. eslint 룰도 잘 모르고 github에서 rebase를 해본적도 없고 feature/00 이렇게 브랜치를 파본 적도 없고 모든게 새로웠다.
- rebase 하다가 실수해서 커밋이 2배가 되기도 했고, reset —hard 위치 잘못잡아서 내용 날려먹어서 팀원분이 1시간동안 도와주기도 했고 force push 만 하면 완료되는 상황인데 겁먹어서 팀원들에게 SOS를 치기도 했다. 경험이 많은 팀원분들이 도와주셔서 정말 다행이었다..
- 가끔 다같이 이거 어떻게 하는 게 좋으신가요 / 해결방법 아시나요? 라고 의견을 물어볼 때가 있다. Axios에서 Error을 어떻게 처리하는게 좋은지, AuthRouter을 어떻게 하는게 좋을지 AxiosInstance 에 대한 말들 등에 대한 의견이었다. 개발자로서 아주 나쁜 습관인데, 나는 잘 모르는 용어가 나오면 되묻기 보다는 침묵을 택하는 것 같다. 개발자 동료로서 팀원들이 답답해하지 않았을까 가장 걱정되는 부분이 이 부분이다. 앞으로 프로젝트 이어나갈때는 이 나쁜 습관을 없애려고 더 노력해야 할 것 같다!
- 사다리타기를 통해서 4등이 걸렸고, 유저 정보 페이지를 맡게 되었다. 사실 운좋게도 제일 관심 있던 페이지도 이 페이지였다. 퀴즈 기능보다는 캐릭터 자체에 대한 관심이 많았었다. 처음 이 페이지를 맡았을 때는 금방 구현될 거라고 생각했는데, 생각보다 생각할 거리가 많았다. 뱃지 부분에 대해 코드의 중복을 줄이고 뱃지를 자유롭게 추가할 수 있게 하고 싶었다. 또한 생각해보니 퀴즈 상세보기 페이지도 필요했고, 퀴즈 수정/삭제도 원래는 필요했다.
- 뱃지 부분 코드가 개인적으로 제일 마음에 든다. 레벨이 10이상 50이상 100이상 / 댓글이 0개일때, n개 이상일때에 따라 각기 다른 색상과 멘트가 보여지는 부분을 구현해야 했다. 처음에는 if문 switch 문을 떠올렸는데, 보기도 좋지 않고 나중에 값을 자유롭게 추가하려면 해당 컴포넌트 내부를 찾아가야 한다는 문제가 있었다. 이 부분에 대해서, Breakpoints 라고 변수들을 담은 파일을 만들고 breakpoint 객체 배열을 가져와서 forEach 를 돌리는 식으로 구현했다. 정확히 0개 매치되는 경우까지 딱 고려해서 구현했을 때, 새벽 3시였음에도 너무 즐거워했던 것 같다.
- 이 로직을 응용해서 레벨에 따른 이미지도 구현해 두었다. 이 코드를 나만 쓰고 있었는데, 다른 부분에서도 필요하다는 말을 듣고 바로 빼서 PR을 올릴 수 있었다. 미리 로직을 분리해놔서 가능한 일이었다. 다른 분들에게 조금이라도 도움 되었다는 사실에 굉장히 뿌듯했다.
- 또한 오늘 정환님 코드쪽 색을 변경했다고 말하자마자 바로 내 쪽에서 breakpoints 변수 1개의 색만 바로 딱 변경해서 반영할 수 있었다. ㅎㅎ
- 나중에 뱃지 관련 부분을 전부 별도 함수로 분리해서 한 곳에서만 분리하면 모든 곳에서도 적용될 수 있도록 변경하고 싶다! + 지금은 뱃지 간격, 레벨 간격 등이 너무 느슨하고 경험치통이 같은데, 이 부분 레벨 시스템도 아예 체계적으로 변경하고 싶다. 기왕이면 사람 불러오는 API 분석해서 사람 변경 + 옷 시스템 + 랭킹 때 반영되는 액자(?) 시스템까지 구현하고 싶다.
- 코드 리뷰를 하고 & 받으면서 많이 배웠다. 오류를 제보하기도 하고, 더 나은 코드 로직이나 변수명 리뷰를 받기도 했다. Array.some 관련 리뷰를 들었을 때는 정말 혁신이었다..!
- 아직도 회의할 때 많이 소극적이고, 즉석에서 의견을 잘 못내는 것은 맞다. 그 대신 회의 주제가 결정되면, 미리 관련 내용을 찾아가는 식으로 노력을 하고 있는 점은 좋았다. 특히 뱃지 관련 회의를 할 때, 예상되는 로직과 회의에 필요한 사항을 미리 Figjam에 적어놨었고, 팀원이 왔을 때 바로 회의 내용에 들어갈 수 있었다.
- 마감일이 다가왔을 때, 3~4시까지 개발하다 자는 일이 비일비재 했다. 마감 전 이틀은 4시에 자고 10시에 일어나서 또 개발하고 그랬었다. 이때 퀴즈 상세보기 페이지를 구현했는데, 추가로 구현해놓은 점이 너무 잘한 것 같다. 뿌듯하다!
팀 전반적인 생각
- 다른 팀원들이 밸런스가 좋은 팀이라고 말씀하셨는데, 완전 동감한다. 다들 코드를 잘 짜는건 물론이고, 강점이 다른 것 같아 시너지 효과가 난다고 생각했다.
- PR에서나 회고록에서나 평소 말하는 중에서나 서로에 대한 칭찬을 해줘서 더 분위기가 좋은 것 같다. 앞으로도 서로 칭찬하는 화목한 분위기에서 개발할 수 있었으면 좋겠다!
- 팀에서 큰 갈등이 일어나지 않는 이유 중 하나는, 누군가 의견을 말하면 기본적으로 어떤 의견이든 경청하고 + 더 좋은 의견이 나왔을 때 바로 수용하는 분위기가 한 목 한다고 생각한다. 의견을 100% 관철 시키기보다는 대부분이 동의하면 일단 타협하거나, 나중에 더 좋은 의견을 제시하는 편이라서 팀이 잘 돌아가는 것 같다.
- 인수님이 말씀하신, 서로 할 수 있는 사항을 가져가는 점에도 100% 공감한다. 00개발해야하는데.. 누가 할까요? 가 아닌, 제가 할게요! 가 default 여서 너무 좋은 것 같다. 서로 더 개발하려고 하는 분위기가 생산적이라서 좋다!
- 결론은 팀운이 좋았다고 생각한다! 이 팀으로 더 개발할 수 있다는 점이 좋다.
팀원에 대한 생각
- 인수님이 특히 꼼꼼한 코드 리뷰를 해주셔서, 이후 코드 로직을 짤 때 한번 더 생각해보고 짜게 되었던 것 같다. Array.some 을 알려주실 때의 충격이 아직도 크다.. 개발에 대한 열정이 대단하신 것 같다! 어제 새벽 5시까지 코딩하셔서 PR 올리는 것 보고 놀랐다. 퀴즈 페이지까지 개선해주실 줄은 몰랐는데, 덕분에 프로젝트 제출물 퀄리티가 많이 높아졌다고 생각한다. 어려운 로직을 사용하실 때 상수로 지정하시는 경우가 많은데, 코드 읽을때마다 너무 좋았다!
- 준혁님이 디자인 변경점에 대해서 의견을 구해주셔서 언제나 감사했다. 자신감이 많이 생겼다! PR 올릴 때 내용을 정말 꼼꼼하게 + gif 쓰시는데, 읽을 때마다 리뷰어를 배려해주는 것 같아 본받아야겠다고 생각했다. 함수를 작게 쪼개서 쓰시는 것을 잘하셔서, 함수명을 따라 읽어가면 어떤 내용인지 바로 확인하기 편해서 좋았다! 인터페이스, API 관련해서 초반에 미리 작업해주셔서 그대로 따라갈 수 있었던 것 같다.
- 창민님의 PR을 처음 보고 굉장히 놀랐다. 커밋 메시지 자체 단위가 너무 깔끔해서 그대로만 따라가면 코드가 술술 읽혔다! 해당 PR을 본 이후에는 조금 더 커밋 단위에 신경쓰려고 하고있다. 창민님이 작업한 부분이 인증 관련이라 어려운 부분이라고 생각하는데, 깔끔한 구현 + context 를 통해서 쉽게 접근할 수 있게 해주셔서 감사하다. 창민님 코드가 참고하기 너무 좋아서 팀 코드 퀄리티 향상에 도움을 주고 있다고 생각한다. 이번에 닉네임 변경 구현할 때 많은 도움을 얻었다. git rebase 관련해서도 1시간 동안이나 고민해주시고 코드를 되살려주셔서 진짜 구세주였다 ㅠㅠ 평소 merge를 대신 해주시는 경우가 많은데, 은근히 귀찮은 작업이실텐데 해주셔서 정말 감사했다!
- 정환님이 초반 폴더구조를 잡아주시고 테마를 정의해주셔서 용이하게 쓸 수 있었다. 직장과 병행하시느라 시가니 부족하셨을 텐데, 클로즈 미팅에 참여해주셔서 감사했고, 맡은 부분을 빨리 구현해 주신 후 QA로 에러를 제보해주셔서 감사했다!
개인적으로 하고 싶었던 말
- 개발 실력적으로 가장 부족하다고 생각하고, 의견을 내는 경우가 적어 조금 답답하다고 생각하셨을 수도 있을 것 같아요! 앞으로 프로젝트 계속 진행할때는 조금씩 의견을 더 내보도록 노력하겠습니다! 앞으로도 잘부탁드려요 :)
정환
최종 회고
시작단계
- 프로젝트가 진행되면 분명 개발시간에 차이가 있어 많은 부분 도움을 드리지 못한다고 생각해서 최대한 많은 도움을 드리고 싶어서 초반에 프로젝트 구조를 세팅하고 필요할만한 것들은 녹여서 스케폴딩을 제안하면서 최대한 아는 부분에서 기여하고 싶었다.
- 아이디어, 기획 등등 제 의견이 들어간 부분이 많이 없어서 (제가 실 회의에 참여하지 못한 이유로…) 따라갔지만..? 같이 회의에 참석했더라면 좀 더 개발쪽으로 편한 기획이 나오지 않았을까 싶다.
개발단계
- 각 페이지를 맡아 개발하게 되었을때 의도치 않게 랭킹페이지를 맡게 되었을 때 큰 기능이 없어서 오히려 팀원분들께 감사했다. 이거마저도 배려해주셨다고..? 너무 고맙다고 생각이 들었다. 다행히 랭킹페이지를 구현하는데 큰 에로 사항은 없었고 다만 …. 편하게 사용하자고 만든 테마 메서드들이 타입문제로 깨지면서 한참 애먹었을때 창민님이 같이 고민해주어 해결한게 너무도 기억에 남는다. 정말 이러한 에러들 하나하나 해결하면서 성장하는것 같다.
- 중간에 api 구조상 기획을 조금 변경하게 되었을때 미해님이랑 뱃지관련 회의를 했는데 서로 잘 통하고 미해님이 제 의견을 잘 수용해주고 정리해주셔서 시간이 가는줄 모르고 회의하다가 2~3시간이 훌쩍지난것이 기억에 남는다.
최종검수단계
- 개발이 끝나고 QA때 제대로 참여하지는 못했지만 ㅜ 그래도 나름 도움이 되려고 이곳저곳 테스트하면서 문제도 출제해보는 등 에러를 찾아 고치려고 노력했다. 그래도 하나 크리티컬한 곳에서 에러를 찾아드린것이 뿌듯했다.
느낀점
진짜 한분한분 정말 배려심이 넘치는 분들과 함께할 수 있어서 너무 좋은 경험이었습니다.
특히 이러한 부분이 소통하고 협업하는 과정에서 빛을 발휘했다고 생각합니다. 제가 잠깐 저녁 스크럼에서 얘기할때도 그렇고 나중에 문서화된 여러분들의 글을 보아도 서로 의견을 존중하면서 효율적으로 같이 작업하는구나라고 느꼈습니다.
그래서인지 여러분들이 너무 대단하다고 느껴졌고 개발실력또한 뛰어나다고 생각했습니다.
매우매우 여러분들의 향후 진로가 기대되고 이번 기회로 알게된 이 인연 계속해서 유지해 현업에서도 커뮤니케이션하면서 같이 개발자로 일하면 좋겠다라고 생각했습니다.
꼭꼭 교육을 떠나서 연락하여 정보도 주고 받고 커리어적 고민 등을 터놓고 말했으면 좋겠습니다. 여유가 되면 또 현업 외 사이드프로젝트도 같이해봐도 좋을거 같습니다! 연락하고 지내요 ~~