정말... 시간이 너무 빠른 것 같다. 또 한달 회고를 쓰고 있다니....
이번에는 정말 짧게 그동안 있었던 일 중 핵심만 적어 보려고 한다.
이번 한달 사이에는 뷰, 리액트를 배우고, 본격적으로 팀 프로젝트를 시작하게 되었다.
모든 팀의 공통 주제는 SNS이고, 우리 팀은 OOTD 공유 SNS를 세부 주제로 정하게 되었다.
사실 그동안 학교 다니면서 팀 프로젝트는 꽤 해봤지만, 이정도로 제대로 각잡고 진행하는 건 처음이라 너무 신기하다. 그리고 이렇게 모든 팀원이 열정적으로 개발을 하려고 하고, 미리 기획부터 회의를 하며 차분히 틀을 잡고 시작한게 너무 좋은 것 같다. 물론 나는 이렇게 노션을 활용해본 경험도 없고, 기획부터 제대로 한 팀플 경험도 없었기에 초반에는 거의 ... 내가 한 게 없었다. 거의 다른 팀원 분들의 화려한 노션 활용 실력(?) 과 기획력을 보며 얼렁뚱땅 배워가며 고개만 끄덕인 기분.... 그래도 지금은 어느정도 이런 체계에 적응하게 되어서, 나도 팀에 누가 되지 않도록 최선을 다하려고 한다. 그래도 사람이 학습 능력이 있어서 그런지, 나도 이제 어느정도 노션을 활용할 줄 알게 되어 기획서 마무리와 코드 컨벤션 재정리를 했다. (비록 다른 팀원 분이 쓴 내용을 내가 다듬은 것 뿐이지만...😅)
아까 전에는 내가 맡은 테스크에 대한 첫 PR도 날렸다 !
그동안 과제하면서 수없이 작성한 PR인데, 이렇게 실제로 팀 프로젝트를 진행하며 내가 만든 기능에 대해 설명을 적으니 너무 재미있었다. 과제는 솔직히 좀 기계처럼(?) 적은감이 있었는데, 지금은 정말 같이 협업을 하고 있고, 다른 사람이 내가 만든 함수를 사용한다는 생각에 더욱 신중히 생각하고 코드와 PR을 작성하게 되었다.
내가 맡은 테스크는 공용 API 함수 작성이었는데, 생각보다 명세서에 있는 API가 너무 많아서 당황했다.
분명히 작성하면서도 검수하고, 수정하면서도 검수하고, 다음날 또 검수하고,... 그런데도 또 잘못 작성한 것이 발견되어 힘들었다 😭
심지어 겨우 API 함수를 다 작성하고 나서 생각해보니, 우리는 react query를 사용하기로 해서 그것까지 다 만들어야 했다.....
일단은 1차 PR 날리고 피드백 한 번 받은 다음, react query 공부해서 적용시켜 볼 예정이다.
아 이거 말고도 공용 컴포넌트, 훅 테스크도 해야하는데... 내가 워낙 개발하는 속도가 느려서인지 이제야 PR 한개 겨우 날렸다.
조금 더 분발해보고 싶다. 마감기한을 지키는 것도 정말 중요하니까, 이번 기회에 개발 속도도 조금 더 향상되었으면 한다.
(지금 MIL도 마감 기한 못지키고... 다음엔 정말 지키자... ㅜㅜ)
코드를 많이 작성해볼수록 는다고 하니까... 이번 팀플도 정말 적극적으로 참여해야겠다.
그래도 좀 긍정적인 얘기를 하자면... 남들과 비교하면 한참이나 부족한 실력이지만, 과거의 나와 지금의 나를 비교하면 데브코스 이전보다 훨씬x100 실력이 좋아졌다. 이제는 정말 코드를 "생각" 하면서 작성하려고 노력하고 있고, 자바스크립트에 대한 이해도 훨씬 높아졌다. 위에 올린 코드처럼 url은 상수 처리해서 휴먼에러를 줄인다던가, JSDoc을 작성해 다른 팀원이 해당 함수를 사용할 때 주의해야할 점을 명시한다던지... 예전엔 고려하지 못했던 부분도 이제는 생각하게 될 줄 아는 사람이 되어서 좀 기뻤다.... ㅎㅎ
이런 것들 외에도 개발에 대한 의욕도 전보다 많이 늘었다. 근 한 달간 또 목적 의식이 희미해져 제대로 내 할일을 못했었는데, 요즘 팀 프로젝트 본격적으로 시작하면서 정말 오랜만에 개발에 대한 의욕이 활활 타올라서 너무 기분이 좋다. 내가 내 스스로의 변화를 알 정도로 요즘 긍정적으로 변화한 게 느껴져서... 아무튼, 저 정말정말 열심히 하겠습니다....🙏
여러모로 데브코스는 나한테는 너무 소중한 기회다.
아, 자바스크립트에 대한 이해 하니까 또 하나 적어볼만한 이야기가 있다. 지금은 팀 프로젝트 시작하면서 임시로 스터디 횟수를 대폭 줄였지만, 그 직전까지 늘 그래왔듯 코테 스터디와 자바스크립트 딥다이브 스터디를 쭉 진행했다. 이번 한 달 사이에 나는 제너레이터, async/await 에 대해 공부하고 발표했다.
https://useful-plot-617.notion.site/46-async-await-73d70e021ab54e0fb6c152a64ced8988?pvs=4
46장 제너레이터와 async/await | Built with Notion
46.1 제너레이터란?
useful-plot-617.notion.site
사실 처음에는 이게 뭔소린가 싶어서 많이 애먹었지만... 차근 차근 이해하며 따라가다보니 점점 이해할 수 있게 되었다.
무엇보다 async, await의 세부 동작 원리를 간접적으로 알게 되어서 좋았다. 공부하면서 이터러블, 이터레이터에 대한 개념도 같이 나왔는데, C++ 코테 풀면서 은근 많이 했던게 바로 이터레이터로 탐색하는 일이었어서, 이미 어느 정도 개념이 있어 이 부분은 쉽게 이해하고 넘어갔던 것 같다. 저번에도 말했지만... 정말 뭐든 배우고 공부하면 이렇게 빛을 발한다. ㅋㅋㅋㅋ
인상 깊었던 건 제너레이터 함수에서 양방향 소통을 어떻게 진행하는지 흐름에 대해서 공부할 때... 였다.
저기서 함정에 빠질 뻔 했는데, const x = yield 1 이렇게 되어있어서 마치 x = 1 인 것처럼 착각하게 되는데, 전혀 그렇지 않다. yield 표현식을 할당 받는 변수에는 yield 표현식의 평가 결과가 들어가는 것이 아니라, 다음 호출되는 next의 인자가 들어간다. 정말 헷갈렸는데 계속 이해하려고 노력하면서 정리하다보니 발표가 끝난지 몇 주 지난 지금까지도 머릿 속에 남아있어 신기하다.
요즘 API 호출 함수를 만들면서 async, await를 사용할 일이 정말 많은데, 내부의 제너레이터가 어떤식으로 동작하는지 원리를 알고 사용하니 조금 더 스스로 짠 코드를 깊게 이해할 수 있어 좋았다. 저번 회고인가, 저저번 회고에서 REST API가 뭔지도 모르겠다고 적었던 것 같은데, 이제야 그 개념을 이해할 수 있어서 기쁘다... 공부를 하면 할수록 영원히 잡히지 않을 것 같던 개념들도 내 머릿속에 자리 잡게 되어서, 앞으로도 정말 꾸준히.... 공부를 하고 싶다는 생각이 들었다. 그리고 원래 개발자는 평생 공부해야 한다고 하니까, 이 마음 잊지 않고 꼭 꾸준히 공부하고 발전하는 사람이 되자....