백엔드와 처음으로 진행해본 프로젝트.

원래 회고를 일자별로 정리를해보려했는데 프로젝트를 만드는데 급급하여 4일차부터 작성을하지 못했다. 1주차프로젝트를 진행했을때와 비슷한데.. 매일 새벽까지진행하게되면서 프로젝트기간에 중간중간 적기가 쉽지가않다.. 항해를 하면서 느끼는점은 분명한건 매주차마다 성장하고있다는점이다.(특히 프로젝트를 진행하면서 더더욱) 그리고 여러사람들과 이야기를하면서 얻는정보가 확실히 엄청난것같다... 혼자서 공부하면 지루한부분도있고 필요한 부분을 찾아보려면 절대적인 시간이란게 필요한 부분이 있는데 어떤 문제에 닥처서 스스로고민하다가 다른사람에게 막힌부분을 설명하면서 해결하다보면 새로운 개념과 좀더 효율적인부분에대해서 조언을 듣고 공부할게 참 많고 알아보고싶다는생각이 들게되어 자발적인 학습을 유도하는것같다..

협업을 진행하면서 아쉬웠던점.

1. 협업 도구를 사전에 충분히 학습하지못해 진행에 차질이 생겼던부분.

깃허브를 사용한다는것은 알았지만 혼자서만 사용해봤지 막상 다른사람들과 같은 레파지토리에서 작업을하는건 처음이였다. 시작하면서 알아가면 될줄알았지만 막상 알아야할 개념이 머릿속에 그려지지가않아 시작하기전부터 딜레이가 생겼다. 그래도 앞으로 개발일을하면서 반드시 사용하는 도구인건 분명하기떄문에 프로젝트기간이지만 이번기회에 명확히 알아두고가면 좋을것같다는 생각에 좀 집요하게 물어봤었던것같다. 대충 머리속으로 알고있는것과 실제로 사용을 하는것 큰 차이가있었던것같다.

2. api설계의 중요성을 간과한것.

물론 프로젝트를 시작하기전 매니저분들의 조언으로 디테일하게 짤것을 권유해주셨다. 시작단계에서 와이어프레임을 작성하고 api설계 단계를 들어갔는데, 막상 언제 어떤 요청이 필요한지 그려지지가않아 대부분을 백엔드분들께 맡겼었다. 그러고나서 프론트엔드분들과 뷰를 완성하고 기능구현을 하려는데 기존에 혼자 프로젝트를 만들었을떈 파이어베이스를 통해 진행하다보니 내가 어떤화면에서 어떤요청이 필요한지를 그떄그떄 수정하면서 맞춰나갈수있었다. 하지만 지금은 데이터를 주는부분을 백엔드에서 따로 구상을하고있다보니 데이터를 받는부분이 백엔드에 의존적일 수밖에없어 거기에맞춰서 로직을 구상해나가야한다는것을 시작할떈 몰랐는데 프로젝트 도중에 좋아요기능을 구현하면서 알게되었다. 내가생각한방식의 요청과 백엔드에서생각한 요청간에 차이가 있어 우선 결정된사항이고 그렇게되었을시 성능면에서 크게 저하된다는 말을듣고 설계대로 구현을했었지만, 잘 구현이되지않아 멘토님꼐 질문을 드렸었을떄 이부분에대해선 프론트쪽이아닌 백엔드쪽에서의 계산을 하고 값을보내줘야한다는 식으로 말씀해주셨기도하고, 코드를 짜면서도 뭔가 비효율적으로 짠다는 생각이들었었다. 확실히 언제 어떤 요청을 보내는지를 잘 짜놓으면 코드를 좀더 깔끔하게 구상할 수있다는것을 알 수있었다. 이 설계부분을 보통 시작단계에서 진행을하다보니 아직 실력이부족한 입장에선 내다보기가 힘들었던 부분이 있었다. 다음부턴 시작하면서 생각하는것이아닌 할수있는 최대한 세밀하게 정해놓고 시작을 할 예정이다.

뿌듯한 점.

1. 기능구현숙달.

이전에 강의를들어서 만들었던 기능들이였지만 프로젝트를 진행하면서 좀더 적응할 수있었던것같다. 기본적인 게시물crud와 좋아요기능을 주로 담당했었는데 분명 배웠던부분이고 따라 만들어봤었지만 서버를 백엔드쪽에서 담당한상태에서 구현을했을뿐인데 코드를 짜는 방식이 많이 달라졌다. 기본적으로 데이터를 리덕스에서 관리했었어서 컴포너트를작성할떄 리덕스에서 데이터를 가져와 사용하여 별도로 컴포넌트자체에서 저장되는 데이터가 없었는데, 상세페이지를 구현할떄 상세페이지에 필요한 데이터를 새로운요청을통해 받아올수있었어서 별도로 리덕스에서 불러오지않고 직접 데이터를 setState를통해 저장하고 업데이트시 렌더링되는 방식으로 작성되었다. 이를통해서 리덕스의 쓰임새를 좀더 명확하게 할 수있었고, 굳이 해당페이지에서만 보여줄 데이터라면 자체적으로 관리를 할 수도 있는것을 알게되었다.

2. 전반적인 프로젝트 계획방법

중간점검과 최종점검을통해 멘토님과의 대화를통해 어떻게하면 프로젝트진행을 매끄럽게 진행할 수있는지 알게될수있었다. 처음에 프론트단에서 역할을분담했었을떄 페이지별로 구분을하여 맡았었다. 사실 최대한 많은부분을 해보고싶어 기능들이 많이 있었던 메인페이지를 맡았었지만 기능들을 해결하는데있어 급급하여 팀장임에도 불구하고 팀원들전체가 개개인이 무엇을 하고있는지 확인하지 못했었다.. 이부분에대해서 멘토님이 답변해주신부분으로는 맡았던 역할들을 좀더 세세하게 쪼개서 작은단위로 맡아 해결하는 식으로 설명해주셨었다. 그러면서 발생할 수있는 충돌관련을 최소화하기위해선 코드컨벤션을 잘 맞춰서 코드를 짜야한다고 하셨었고 추가적인 생각으로는 소통을 좀더 세세하고 많은것들을 함꼐 공유해야한다고 생각한다. 단순히 개인의 성장만을 생각하면서 임했었지만 좀더 팀원들에게 맡겼었으면 전체적인 진행상황을 파악할 수있었지 않았나 싶다.

마무리

협업을통한 프로젝트가 이번으로 총 2번쨰인데 주특기라는걸 배우기위해 어쩔수없이 중간에 2주정도의 강의를듣고 작은단위의 프로젝트를 진행하는 과제를 수행했었지만, 솔직히 좀 지루했고 따분했다.(새로운 개념이라그런가..) 강의를듣기만하는방식보단 다른사람들과 함꼐 프로젝트를진행하는 방식이 마치고나서 배우는점이 확실히 많은것같다. 항해를 들어오기전엔 기본을 닦고 프로젝트를 진행해야한다는 생각이 지배적이였지만,그반대로 프로젝트경험의 중요성을 느꼈고, 프로젝트를 진행하는 과정에서 발생했던 궁금증을 해결하기위해 강의를 찾아보는방식이 학습효과가 더 좋을것같고 찾아보고싶다(리액트 커스텀 훅, 에러처리, axios 인터셉터등등) 내일부터 바로 새로운 프로젝트를 진행하지만 틈틈히 이러한 궁금증을 해결하여 좀더 발전하고싶다.

profile
FE developer 🙂

0개의 댓글