새소식

인기 검색어

네이버 부스트캠프

부스트캠프 웹·모바일 8기 챌린지 3주차 회고

  • -

달라진 미션 방식

2주차까지는 매일 하나의 미션을 해결하는 것이었다.

그러다 보니 리펙토링하지 못하고 어중간한 상태로 완성한 것들이 있었는데 이것들을 리펙토링하고 싶다는 생각이 있지만 물리적인 시간이 부족하여 못하고 있었다.

사실 그 전까지는 다시는 보지 않는다는 생각때문에 어떻게든 동작하게 하려고 스파게티 코드들을 남발하기도 했다.

하지만 3주차부터는 이틀동안 미션이 진행된다. 첫째날에는 미션을 구현하고 둘째날 첫째날에 구현한 것을 리펙토링 하는 것이다.

미션을 이틀동안 구현해야하다보니 안그래도 어려운 난이도가 더 올라갔다.

설계에 잡아먹혀 버렸다

미션이 이틀동안 진행되기 때문에 첫째날에는 설계에 정말 많은 시간 투자를 했다.

최대한 작은단위로 설계를 하고 각 클래스마다 단일책임을 지도록 하고 다양한 방법으로 설계를 해보았다.

설계를 하면서 정말 완벽하다 라고 생각하면서 구현을 했는데 막상 구현을 해보고 나니 설계가 틀린것은 아니였지만 미묘하게 어긋나 있었다. 각 클래스가 단일책임을 지게하고 최대한 작은단위로 설계를 하다보니 각 클래스간의 상호작용을 생각하지 못했기 때문이였다. 그전까지 했던 방식대로 설계와 구현을 동시에 진행했더라면 바로 코드를 수정했을텐데

첫째날에 설계에 너무많은 시간을 투자했다보니 무의식적으로 설계를 변경하지 않고 구현하려고 했다.

어지저찌 미션을 해결하긴 했는데 당연히 스파게티 코드나 중복코드들이 많아졌다.

이번 기회를 통해 설계를 너무 열심히 하면 사람 마음이 설계한 것을 수정하기 쉽지 않다는 것을 알게되어

다음 미션은 설계와 구현의 밸런스를 다시 잡아보려고 한다.

다양한 구현방법과 개선방법들

미션 둘째날은 각 팀원들의 코드를 보면서 상세하게 리뷰를 해주는 시간이 있다.

이 시간에 다른팀원들은 같은 문제를 어떻게 구현했는지 확인하고 개선할 사항들을 리뷰해주었다.

다들 같은 미션을 받았는데 정말 다양하게 구현했다. 비슷한 방식으로 구현한 캠퍼들도 있었지만 자세히 보면 미묘하게 달랐다.

각자 구현한 방식을 보면서 이렇게도 미션을 해결할 수 있었구나 하고 깨닫는게 많았다. 미션을 해결했을 때 내 코드의 개선사항은 좋은 아이디어가 안떠올랐는데 다른 캠퍼들의 코드를 읽어보니 더 좋게 개선할 수 있는 아이디어가 잘 떠올랐다.

이것이 집단지성 ?

동일한 미션을 다양하게 구현하다보니 개선방법을 피드백 해주는 과정에서 각자 고민하고 있던 것들을 이야기했고

고민사항을 해결하기 위해 이야기를 하다보니 다들 개선의 방향성을 어떻게 잡아야할지 감이 잡혔다.

다른 캠퍼들의 피드백을 듣되 자신만의 생각을 베이스로 개선하기로 했다.

또 왜 구현방식이 달랐던것일까 하고 이야기를 해보니 미션을 보고 어떤 생각이 먼저 떠올랐는지에 따라 구현방식이 달라졌었다. 비슷한 생각을 한 캠퍼들끼리는 구현방식이나 전체적인 구조 자체가 비슷했고 접근방식이 아예 달르면 같은 문제를 해결하는 코드라고 볼 수 없을 정도로 코드가 너무 달랐다.

사실 어찌보면 당연한 것인게 코드가 결국 자신의 생각을 써내려간것이라고 생각한다면 각자의 생각이 다르니 코드가 다를수 밖에 없다.

코드는 설득하는 과정

피어세션을 하면서 가장 많이 듣는 질문과 가장 많이 질문하는 것은 이 코드 왜 이렇게 작성하셨나요 ?? 였다.

코드를 작성할 때는 다들 각자 자신만의 합리적인 근거를 가지고 작성했을 텐데 다른사람이 코드를 볼 때에는

작성한 사람의 생각을 알 수 없기 때문에 이 부분은 왜 이런식으로 코드를 작성했지 ?? 하는 생각이 들 수 밖에 없게 되었다.

그러다보니 코드를 전체적으로 읽었을 때 상대방의 생각을 읽을 수 있고 전체적인 흐름을 보았을 때 상대방의 생각에 설득되면 이래서 이 코드를 이렇게 작성했구나 하고 이해할 수 가 있었다.

반대로 전체적인 흐름과 맞지 않거나 생각을 알 수 없을 때 왜 이렇게 작성했나요 ?? 가 나올 수 밖에 없었다.

다른 사람들의 코드를 계속해서 읽다보니 결국 코드는 상대방을 납득 또는 설득하는 과정이라는 것이였다.

또 내가 합리적인 이유가 있고 납득할 수 있어야 상대방 또한 납득하고 이해할 수 있다는 거이였다.

그래서 이번 미션에서 코드를 작성할 때 계속해서 전체적인 흐름과 같은가 ???

다른 사람의 코드라고 생각했을 때 이해할 수 있는가 ?? 를 머리 한켠에 두고 구현을 하려고 노력했다.

 

 

 

1,2주차에도 많은것을 얻어갔지만 3주차에는 더 중요한것을 얻어간것 같다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.