벌써 데브코스를 시작한지 무려 3개월(반절)이 지났다.
특히 이번 한달은 지금까지 3달 중 가장 빨리 지나간 한 달이었다. 팀이 바뀌어 새롭게 만나는 팀원들과 새롭게 시작하는 달이기도 했고, 아주 많은 강의량 + 학습 해야 할 내용들이 많았던 것 같다.
유독 빨리 지나갔던 한 달, 나는 저번 달에 무엇을 했을까 한 번 돌아보자.
Vue, React, Angular 3대장 중 하나인 Vue를 배웠었다.
Vue를 이번 기회에 처음 사용해보게 되었고, 공식 문서가 친절하게 잘 나와 있어 강사님이 진행하시는 강의와 함께 보조 자료로 보기 너무나 편했다.
이전에 리액트로 간단한 개인 프로젝트도 했어서 그런지 Vue에서 사용하는 문법만 다르지 하는 역할을 어느정도 비슷하다 느껴졌다.
하지만 Vue를 사용한 영화 검색 페이지가 과제로 나왔고 막상 구현을 하려니 뜻대로 잘 되지가 않았었다.
더구나 처음 사용해보는 TS로 인해 과제가 더욱 어렵게 느껴졌고, 과제를 진행하며 타입 에러를 막기에 급급했다.
그래서 나는 이번 Vue 과제를 리액트와 TS에 더욱 친숙해지기 위한 발판으로 삼기로 생각했고, 기능을 구현하는 과정에서 Vue와 React, JS와 TS가 무엇이 다른지 고민하면서 진행했었다.
한가지 가장 큰 차이점을 느낀 것은 양방향 데이터 바인딩. 리액트 사뭇 다른 처리 방식이었다. 리액트의 단방향 데이터 방식과 달리 양방향 데이터 바인딩 방식을 사용하니 데이터 사용에 있어 조금 편리함을 느꼈다. 하지만 이 부분 외에는 리액트에 조금 더 적응이되어 있어서 그런지 Vue 문법들이 익숙하지가 않았다.
아래는 과제로 구현한 영화 검색 페이지의 메인 화면이다. 스타일링을 정말 못하는데 정말 정말 구리다 ㅋㅋ
앞으로 다시 사용할 일이 있을까 싶은 Vue, 그래도 한 번도 안해본 것과 해본 것은 아주 많은 차이가 존재할 것이라 생각한다. 덕분에 리액트에 한 걸음 더 가까워질 수 있었던 것 같다.
대망의 리액트.
이번 강의는 대부분 짧고 굵게 구성이 되어 있었다. 강의가 짧고 굵다보니 강의 외적으로 찾아보게 되는 것이 정말 많았다. 밥상은 차려 주셨으니 떠 먹는 건 내가 직접 해야지.
이번 강의들은 동작 원리에 대해 집중을 많이 했던 것 같다. 이전에도 사용했던 경험이 있었으니 강의에서 나온 컴포넌트와 Hook들이 어떻게 동작을 하는지 많이 찾아봤던 것 같다. 하나하나 다 기억이 나는 것은 아니지만 떠오르지 않을 때마다 다시 또 찾다보면 완전히 내 것이 될 수 있을 것 같다.
그렇게 수 많은 리액트 강의들을 들으며 과제가 시작되었다.
View 네비게이션과 툴팁 둘 중 하나를 2개 이상의 애니메이션과 함께 구현 하는 것이었다.
내심 오 이정도면 쉽겠는데? 라고 생각했지만 막상 또 구현을 들어가니 어려웠다. 머리속에 떠오르는대로 진행이 되지 않았다. 이유는 익숙하지 않은 TS + 애니메이션 구현이 주를 이루었다.
이번 과제에서는 어떻게 하면 추상화를 잘 할 수 있을까를 정말 많이 고민하며 과제를 진행했지만 결과물은 그리 좋지 못했던 것 같다. 타입 조차도 추상화를 잘 하지 못했기 때문.
하지만 항상 컴포트존에만 머무를 순 없기에 익숙하지 않은 것들을 하나 하나 내 것으로 만들어가기 위한 노력을 해야지✌️
이번 멘토님께서는 우리 팀원들에게 왜? 라는 질문을 되게 많이 하신다. 이로부터 시작하여 커피챗때 팀원들과 토론도 진행 시켜주신다.
모든 것엔 정답이 없고 나보다 더 잘하고 잘 아는 사람이 말하는 것도 항상 의심하라 하셨는데 처음에는 이해가 가지 않았다.
아니 나보다 더 많이 알고 있는 사람의 말을 의심하라는게 말이 되는건가..? 라는 생각이 들었지만 최근 멘토님과의 모각코때 멘토님과의 대화를 통해 이 말의 의미를 알게되었다.
'익님 보다 더 잘하고 잘 아는 다른 사람이 하는 말에 무조건 동의하면 익님의 가치관은 그 사람의 가치관으로 덮이게 돼요' 라는 말씀을 해주셨는데 이 말이 너무 확 와 닿았다.
자기 주관이 뚜렷하지 않은 사람은 어떠한 사람으로도 대체가 될 수 있을 거란 생각이 들었다(시키는 대로만 하기 때문). 또한 뚜렷한 자기 주관이 있더라도 남을 설득하지 못한다면 그 주관은 그냥 망상이 되버릴 수 있다.
모든 것엔 정답은 없다. 다만 정답으로 만들려면 남에게 내가 생각한 것이 정답이라는 걸 설득해야 한다는걸 커피챗 때도, 모각코때도 심어주셨다.
남에게 내가 생각한 것이 정답이라는 걸 설득하기 위해서는 내가 생각하는 것에 대해 정확하게 알고 있어야 하며 왜 이게 정답인지 왜?라는 것에 집중해야 한다는 걸 더욱 느꼈다.
앞으로는 무엇을 사용하든 무엇을 공부하든 내가 이걸 왜 공부하며 이걸을 왜 사용하고 이걸 왜 공부하고 사용해야만 하는지 나 스스로가 질문을 던지고 그 질문에 답할 수 있는 사람이 된다면 내 가치는 올라갈거라 생각이 된다. 그 동안 이렇게 살아오지 않았기에 많이 어렵겠지만 지금부터 반복하다보면 충분히 할 수 있을거라 생각한다.
조언을 돌려서 해주시는 것 보다 팩트로 꽂아주시는 것을 좋아하는데, 팩트로 조언해주시는 멘토님 감사합니다 🙏
이번 한달 중 나는 가장 기억에 남는 것은 멘토님이 설명해주신 추상화다.
추상화란 일반적으로 구체적인 사물간의 공통점을 취하고 차이점을 버리는 것을 의미한다고 한다. 나도 이렇게 생각했다.
하지만 멘토님의 접근 방식은 달랐다.
복잡한 것을 버리고 단순함을 표현하는 것.
이 글에서 내가 보고 듣고 배운걸 설명하기엔 너무 내용이 길어질 것 같아 힘들지만, 내가 느낀 점을 짧고 굵게 말 한다면, 숲을 보는게 아니라 나무만 보는 것이다.
숲을 보고 숲에 존재하는 모든 것들이 어떠한 공통점이 있고 이들을 어떻게 엮을 수 있을 까 고민하는 것 보다, 나무만 보고 이 나무가 하는 아주 아주 단순한 역할에 집중하는 것이다. 그렇게 단순한 역할에 집중하다보면 그 단순한 것들이 모여 복잡한 것이 되고 그 복잡한 것이 모여 하나의 숲이 되는 것이었다.
이번 리액트 과제에서 멘토님이 도움을 주셔서 내가 느낀 것을 코드에 직접 적용해볼 수 있었고 그로인해 더욱 감이 잡힌 것 같다.
추상화는 공식문서도 없고 정답이 없는 문제다. 이는 나 스스로 어떻게 해야 더 좋은 방향으로 설계를 할 수 있을지 고민해야 하는 방법 밖에 없다. 앞으로 있을 프로젝트에서 끊임없이 고민하여 추상화 필요한 부분을 추상화 시키는데 집중해 볼 예정이다.
이번 팀에서 팀장을 맡았다. 이번에 만난 팀원들이 모두 편한 분위기 속에서 하고 싶은 말이 있다면 당당하게 하고, 아니라고 생각하는 것에 아니라고 말을하는 그런 편한 분위기를 만들고 싶었다.
이런 팀을 만들기 위해 나름 초반에 빌드업을 열심히 했는데 지금은 내가 원하는 그런 분위기가 된 것 같아서 너무 좋다.
다들 다른 사람의 의견에 묻어가는 것이 없고, 각자 맡은 역할에 최선을 다하고 이제는 내가 주제를 던지지 않아도 다들 먼저 주제를 던져주신다. 또 이제는 내가 주제를 던지면 누군가를 지목하지 않아도 본인들이 먼저 대답 하시느라 오디오가 겹칠 정도다.
물론 내가 잘한 건 아니다. 나는 늘 그냥 신나게 떠든 것 뿐 내가 떠드는 주제를 잘 받아쳐주는 팀원들의 몫이 크다.
팀원들이 내게 호응을 잘 해주지 않거나, 별 의욕이 없거나, 내가 지목해서 물어야만 대답 해주었다면 많이 힘들었을 것 같다.
개발자는 단거리 선수나 개인 종목들(유도, 복싱 등등) 나 하나가 잘한다고 해서 잘 할 수 있는게 아니다. 우리나라 축구에서 손흥민이 축구를 가장 잘하지만, 손흥민이 잘한다고 우리나라가 늘 이기는가? 그렇지 않다.
각자 성장에 대한 노력을 멈추지 않고, 같은 목표를 가지고 있는 집단이라면 하나가 되어 원활한 의사소통이 좋은 결과물을 만드는데 있어 가장 큰 역할을 할 것이라 생각이된다.
늘 호응을 잘 해주시는 우리 팀원분들에게 감사하다.
화이팅합시다 동욱팀 👍🏻
조금 안다 싶으면 빠르게 보고 넘어가는 습관이 있는데 내가 남에게 설명할 수 없는 지식은 내 것이 아닌 것이라 생각하며 문제에 직면했을 때 한번 더 살펴보고 깊게 학습하며 해결 방안이 무엇인지 이 해결 방안은 왜 이러한 방법이 사용이 되었으며 무엇을 해결하기 위해 등장하게 되었는지 꼬리에 꼬리를 무는 학습 습관을 다시 가지기.
최근 구현력이 많이 부족하다 느꼈다. 데브코스에 오기 전과 데브코스 시작하고 한달 뒤 부터도 코딩테스트에 조금 집중을 했었는데 지금은 코딩테스트에 집중할 때가 아닌 것 같다. 내가 부족한 기술과 구현 능력을 채우기 위해 많은 기술을 습득하고 여러가지 많은 구현을 위한 시도를 해보며 이유 있는 코드를 짜는 연습을 해야할 것 같다.
팀장님화이팅!