내용에 문제가 있는 경우 삭제,수정 조치 하겠습니다.
네이버 부스트캠프 3주차를 마쳤다.
가장 힘든 한 주였던 것 같다.
배우고 느낀 것들
설계에 집착하지는 말되, 설계를 제대로 안하면 개고생을 하게 될 것...
뭐든지 중용을 지키는게 중요하다. 저번주까지만해도 설계에 조금 집착했다면, 이번 주에는 조금 벗어나서 바텀업 방식의 비중을 늘려서 진행을 했었다....만 이게 나를 굉장히 힘들게 했다.
사실 저번주에 설계에 집착했다는 것이, 지금와서 보니 제대로 된 설계도 아니었다는 생각이 들었다.
그냥 적당히 기능이 좀 있어보이고, 좋아보이는 클래스를 몇개 짠다고, 상속 좀 시킨다고 설계를 한게 아니다.
이런식으로 설계를 하게되면 이후에 코드를 개선하려고 했을때, 온 코드가 엉겨붙어서 도저히 풀 수 없는 꼬인 이어폰같은 상태가 되어버린다는걸 배웠다.
기능이 다가 아니다.
보통 개발을 하게되면, 이걸 만드려면 이런 기능, 저런 기능이 필요하겠군!
이 기능부터 만들어볼까? 라며 뛰어들기 마련이다. 물론 나만의 얘기일수도 있겠지만...
기능별로 설계하면 되겠네! 는 절대 하면 안되는 것이라는 걸 배웠다.
기능에 필요한 것들(자료구조나 공통기능들)을 먼저 생각하고, 설계한 뒤에 기능별 구현으로 돌입해야한다.
그렇지 않으면 개발하는 과정에서의 디버그 시간이 배수로 증가하고, 개발을 마친 이후 새로운 기능을 붙이거나 할때 과거의 당신이 당신을 해치려 할 것이다.
과거의 나와 싸우지말자...
다른 사람의 코드, 설계들을 보기
전주에도 느낀거지만 다양성이라는게 문제에 적용되면 정말 많은 풀이가 나오고, 그것들 중에는 나보다 더 좋은 방법이 있기 마련이다. 이 부분을 익히고, 그 풀이방식을 나의 방식으로 만들기 위해서는 다른 사람의 코드를 볼 필요가 있다는 것을 가장 크게 느낀 한 주였다.
덕분에 내 코드는 정말 말도안되게 개선될 수 있었고, 미션이 끝나갈때쯤이라도 미션에 필요한 지식을 온전히 내 것으로만들 수 있었다.
진행이 안될땐 잠시 쉬기
위에 작성한 것처럼 코드 개선을 할때, 설계가 잘못되었다는 것을 알았고 이걸 고치기 위해 정말 많은 시간을 썼었다.
설계를 다시 그려보는걸 4-5번 정도 시도했는데, 기존 코드 때문에 작성하던 모든 코드를 지우는 것도 몇번 있었다.
이렇게 하다보니 피로감은 쌓여가고, 성과는 없으니 정말 좌절감을 느끼게 되었는데, 이때 과감히 포기하고 일찍 마무리를 한뒤 다음날 진행했다.
환기가 되자, 다시 집중하여 설계하고 코드를 작성할 수 있었고, 결국은 재설계와 내가 의도했던대로 코드를 개선해내는데 성공했다. 만약 쉬지않고 계속해서 집착했다면 아마 아직도 해내지 못했을 것이다.
문제가 안풀릴땐 잠시라도 쉬자.
테스트 코드를 작성할 것
테스트코드는 코드 개선시 속도를 비약적으로 상승시켜준다.
테스트코드가 없으면 일일히 실행하면서 결과를 눈으로 확인해야하지만, 있다면 확인작업이 몇초내로 끝나게된다.
그래서 개선작업을 하면서, 테스트 코드가 있었더라면...이라는 생각을 계속했던 것 같다.
또한 테스트코드가 있으면 테스트를 위해서 모듈을 조금 더 느슨하게 설계해야 하므로 설계상의 이점도 챙길 수 있을 것이다. 더불어 위의 기능을 위한 자료구조를 만드는 과정에서도 테스트코드가 많이 도움이 될것 같다는 생각이 들었다.
다음주에는 테스트코드를 반드시 작성할 것이다.
개선할점
참 이번주는 개선할 점 투성이다.
1. 명세를 명확히 이해하고, 기능을 위해 필요한 자료구조를 먼저 설계한뒤, 진행할 것
2. 다른 사람의 풀이와 질 좋은 코드를 많이 읽고, 나의 것에 적용해볼 것
3. 테스트코드 작성하기
이제 정말 한주 남았다. 3주라는 기간이 믿기지 않을 정도로 많은 것을 배웠고, 많이 성장했다.
마지막 한주 후회없도록 불태워보자.