내용에 문제가 있는 경우 삭제 또는 수정하겠습니다.
운이 좋게도 네이버 부스트캠프 웹・모바일 8기 멤버십에 입과할 수 있었다.
기회를 제공한 만큼 열정적으로 임해야 겠다는 생각이 든다.
챌린지와 달라진 점으로 미션의 주기가 길어졌다.
챌린지 때는 하루 ~ 이틀동안 미션을 수행했다면 멤버십에서는 약 한 달에 걸쳐 미션을 수행했다.
또한, 현업 개발자의 코드리뷰를 받을 수 있었고 마스터 클래스를 통해 마스터와 소통할 수 있는 기회도 제공되었다.
챌린지 때는 한 주의 회고를 했다면 멤버십에서는 한 미션(프로젝트) 단위로 회고를 하고자 한다.
(그래서 1 ~ 4주차 회고가 한 번에 올라온 것이다..)
✨ 좋았던 점(잘한 점)
멤버십에서 현업 개발자의 코드리뷰를 받아볼 수 있었다.
현업 개발자의 리뷰를 받을 수 있는 흔치 않은 기회였기에 이를 최대한 활용하려 했다.
우선 나의 코드를 작성하고 이 코드를 작성하게 된 근거를 함께 작성했다.
어떤 문제를 만나서 어떤 해결 방법을 생각했으며 그 결과 이런 코드를 작성했다. 와 같은 일력의 과정을 리뷰어에게 전달하려 했다.
나의 판단에 아쉬운 점은 없는지, 내가 이해한 개념이 맞는지, 내가 이해한 것을 바탕으로 작성한 코드가 올바른 예시인지 등에 대한 피드백을 들을 수 있었다.
피드백을 바탕으로 개선해볼 수 있었고 개선에 대한 피드백도 받을 수 있었다.
1주차 ~ 2주차에는 기능 구현을 위해 노력했었다.
그리고 3주차 ~ 4주차에는 구현된 기능을 개선하고 리팩토링 등을 수행했다.
이 과정에서 이때까지 제대로 이해하지 못한(개념은 알지만 어떻게 적용하는지, 적용을 했다면 적절한 방법이었는지 등) 객체 지향 프로그래밍을 제대로 이해하고 싶었다.
이를 위해 객체를 사용하도록 리팩토링하고 피드백을 받을 수 있도록 하였다.
어렴풋이 알고 있던 객체 지향의 원칙을 적용해보려 했다.
내가 놓치고 있는 부분이 있었고 이해하지 못한 부분도 있었다.
하지만, 이렇게 시도를 하며 피드백을 받으며 내가 어떤 개념이 부족한지 스스로 찾아볼 수 있었고 다음 리뷰 전까지 해당 부분을 반영해볼 수 있었다.
이를 통해 우리가 흔히 SOLID라고 부르는 객체 지향의 원칙이 독립적이지 않다는 것을 알게 되었다.
원래는 각 개념이 독립적이고 다섯가지의 원칙을 모두 지켜야 좋은 객체 지향 프로그래밍이 되는 줄 알았다.
하지만, 하나의 원칙을 지키면 다른 원칙도 함께 만족하거나 여러개의 원칙을 만족하기 위한 여러가지 방법이 있음을 깨닫게 되었고 이를 연습해볼 수 있었다.
또한, 세 개 이상의 객체가 서로를 참조하고 있는 문제를 만나게 되었으며 이를 해결하기 위한 방법이 무엇일지 고민해볼 수 있었다.
이를 해결할 수 있는 다양한 방법에 대해 동료들과 이야기 하고 리뷰어와 함께 이야기 해볼 수 있었다.
또 다른 시도로는 "추상화"가 있다.
추상화가 무엇인지, 어떤 방식으로 구현해야 하는지, 그리고 그에 대해 어떤 장점이 있는지 생각해볼 수 있었고 동료들과 해당 개념에 대한 이야기를 나눌 수 있었다.
이를 이해하고 난 뒤, 코드를 작성하며 항상 추상화를 염두에 두고 작성하게 되었다.
그 결과 함수는 작은 단위로 분리할 수 있었고 이를 통해 어떤 로직을 처리할 때 여러 개의 함수를 조합하여 처리할 수 있었다.
이에 대한 장점으로는 함수가 어떤 역할을 하는지 몰라도(내부의 로직이 수정되더라도) 원하는 결과를 가져올 수 있으며 이를 이용해 서로의 결합도를 낮출 수 있음을 깨닫게 되었다.
마지막으로 이렇게 학습한 내용들이 서로 독립적이지 않다는 것을 느끼게 되었다.
예를 들어, DIP(의존성 역전의 원칙)를 만족하기 위한 한 방법이 의존성 주입이며 DIP의 핵심은 추상화임을 깨닫게 되었다.
또한, 의존성 주입을 하는 과정에서 상속된 자식 클래스는 LSP(리스코프 치환 원칙)을 만족하기 위해 자식 클래스가 변경되더라도 부모 클래스를 대체할 수 있도록 변경되어야 한다는 것을 깨닫게 되었다.
이와 같이 이번 미션을 수행하며 새롭게 알게 된 내용들이 독립적이지 않고 서로 연관되어 있다는 것을 깨닫게 되었다.
💣 (스스로에게) 아쉬운 점
비효율적인 방법을 많이 사용한 것 같다.
예를 들어 페이지에 변화가 생긴다면 (새로운 데이터가 추가되거나 삭제되는 경우 등) 모든 페이지를 지우고 모든 요소들을 재렌더링 하는 방식을 택했다.
하지만, 이 방법이 효율적이라고 할 수는 없을 것 같다.
동료들이 나와 비슷한 문제를 만나고 다르게 해결하는 모습을 보며 나도 더 효율적인 방법을 찾을 수 있었다고 생각한다.
또한, 요구사항 구현을 우선적으로 생각한 탓인지 코드에 객체와 함수가 함께 있게 되었다.
3주차 부터는 객체 지향에 대해 학습하고 싶어서 기존의 코드 중 일부만 객체로 변경하고 변경된 코드를 기준으로 리팩토링을 진행했다.
만약, 처음부터 객체 지향에 대해 배우고 싶었다거나 방향성을 제대로 잡고 시작했다면 코드가 덜 혼잡스럽지 않았을까 하는 아쉬움이 남는다.
💡 앞으로
4주의 미션이 끝나고 한 주간의 인터미션을 갖게 되었다.
일주일의 휴식 뒤에는 또 다른 미션을 수행해야 한다.
이번 미션을 수행하며 배웠던 다양한 방법들을 조합하여 다음 미션에서는 방향성을 미리 정하고 미션을 시작하려 한다.
객체 지향 방식을 사용한다면 객체 설계를 먼저하고, 함수형 프로그래밍을 사용한다면 어떤 단위로 함수를 나눌 것인지 등에 대해 미리 고민하고 미션을 수행해야 겠다는 생각이 든다.
다음 미션을 통해서도 새로운 점을 많이 배울 것이라는 기대가 된다.
마스터들이 항상 강조하기로 "체크 포인트를 모두 체크 하는것이 목표가 되어서는 안된다"라고 한다.
나 또한 미션에 집착하여 체크 포인트를 모두 채운 것이 목표가 되지 않도록, 미션을 수행하는 과정을 즐기고 그 안에서 내가 부족한 부분을 스스로 정의하고 이를 채워나갈 수 있도록 해야겠다.
'개발 > 회고' 카테고리의 다른 글
[네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 그룹 프로젝트 1주차 회고 (0) | 2023.11.12 |
---|---|
[네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 멤버십 6 ~ 9주차 회고 (0) | 2023.11.04 |
[네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 챌린지 4주차 회고 + 수료 (2) | 2023.08.05 |
[네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 챌린지 3주차 회고 (0) | 2023.07.29 |
[네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 챌린지 2주차 회고 (0) | 2023.07.22 |