📝3주차 회고

실패

결론부터 말하면 난 3주차 미션에 실패했다.

미션 당일 날 몸이 아팠다. 아침에 학교를 가던 길에 갑자기 복통이 너무 심해 지하철에서 쓰러질 뻔 한 후 결국 등교를 하지 못하고 병원을 갔다.

그 후 집에 돌아와 약을 먹고 잠을 잔 후에 제출 마감일 오후 6시부터 기능 구현을 시작했다. 다행히 설계는 전날에 마친 상태였다.

구현이 그렇게 오래 걸릴 것이라고는 생각하지 못했다. 처음에는 마음이 편했으나, 시간은 내 생각보다 빠르게 흘러갔다.

하나의 기능이 끝나면 테스트 코드를 작성하고 커밋을 하려고 시도했는데, 난 테스트 코드에 대한 이해가 부족한 상태였다. 결국 오류가 계속해서 발생했고, 이 과정에서 약 2시간이 속절 없이 흘러버렸다.

4시간도 남지 않았기에, 일단은 다시 기능 구현을 하는 데 집중했다. 시간이 부족하니 마음이 급해지고 코드를 다시 돌아볼 여유같은 건 없었다.

어떻게든 제출이라도 하자는 마음으로 정신 없이 시간이 흘렀다. 각 기능별로 테스트를 하지 못했기 때문에, 마지막에 실행할 때 운 좋게 잘 돌아가야만 했다.

슬프게도 그런 일은 없었고, 결국 테스트를 통과하지 못한 채로 제출’만’ 했다.

끝나고 나니 멘탈이 부서졌다. 몸은 괜찮았지만, 자책감도 많이 들고 아쉬운 마음이 너무 컸다.

하지만 내가 정말 실패한 것일까?

자책

위의 질문에 대답하자면, 당연히 미션의 결과에 대해서는 실패가 맞다.

다시 코드를 보니, 입출력도 잘못된 부분이 많고 요구사항에서 크게 어긋난 부분이 정말 많다. 그럼에도 4주차에 도전할 수 있는 기회를 주는 우테코에 감사해야 할 정도이다.

처음에는 속도 많이 쓰리고, 자책도 많이 했다.

“1시간만 더 있었더라면.. 내가 좀 더 미리 했었다면..”

하지만 좀 더 차분하게 생각을 해보니, 이는 의미 없는 생각이었다.

어차피 일을 이렇게 만든 것도 나이고, 다시 돌아간다한들 지금 생각처럼 절대 하지 않을 것이라는 걸 안다. 마음에 손을 얹고 생각해보자.

  • 과연 나에게 1~2시간이 더 주어졌다고 스스로 만족할만한 결과물을 낼 수 있었을까?

  • 누가 나보고 빨리 우테코부터 끝내라고 말을 해도 내가 들었을까?

아니라고 생각한다.

결국 이 모든 결과는 그 당시의 내가 만들어낸 것이고, 중요한 건 이 과정이 끝난 후의 현재의 내가 어떻게 느끼고, 어떤 것을 변화시킬 수 있느냐이다.

아프고 힘든 일은 오래간다. 오래 가니 더 생각하게 만든다. 생각을 하다 보면 새로운 점을 깨우치게 된다. 그러면서 성장한다.

성공과 합격은 그저 순간의 쾌락이다. 그렇게 원했던 대학 합격도 일주일 이상 가지 않았던 것 같다.

성공보다는 실패가 장기적으로 내 삶을 강하게 만들어준다고 생각한다.

이번 주차를 제대로 해내지 못한 것에 대해 자기합리화하고자 하는 게 아니다.

앞으로 성공을 하지 않겠다는 말도 절대 아니다. 난 꼭 내 삶의 기준에서 성공하고 싶다.

그러나 앞으로도 더 자주 만나는 건 성공보다는 실패일 것이기에, 이번 기회로 더욱 친해져보고자 지금의 글을 작성하는 것이다.

보고 싶었던 우테코 합격 화면에서는 많이 멀어졌겠지만, 한 가지 확실한 건 이번 3주차를 통해 많은 점을 느끼고 성장했다는 것이다.

문제

사람이 급한 상황에 처하게 되니, 본 실력이 나오는 것 같다.

평소에는 별 생각이 없었던 나의 개발 습관들이, 시간이 정해져 있는 상태에서는 발목을 자주 잡았다. 내 생각에 부족했던 부분은 다음과 같다.

  • IDE의 사용법이 미숙해 클래스를 옮겨다니는 데에도 꽤나 많은 시간을 소비했다.

  • 테스트 코드를 작성하는 법에 대해 제대로 알지 못해, 초반에 2시간을 사용하고 결과적으로 멘탈을 잡지 못하게 하는 요인이 되었다.

  • 객체에 대한 이해도 부족했다. 코테 문제를 풀며 지금까지 하나의 클래스에서만 코드를 작성하니 발생한 문제였다.

  • 노트북 속도 자체가 느리다. 18년도부터 쓰던 그램이라 당연히 느리겠지만, 이 또한 개발 환경 설정이기에 나의 실력 부족이다.

  • 컨디션 관리를 제대로 하지 못했다. 바빠서 잠을 잘 못 자서 그렇게 된 것 같다. 하지만 내가 일정 관리를 잘 하고, 선택과 집중을 했다면? 이 또한 내 실력 부족이다.

자가 피드백

구현에 대한 문제는 너무 많아 따로 적어보았다.

  • 테스트 코드 작성 아예 X

  • system.out.println을 사용하고, 라인 브레이커를 또 사용해 두 줄이 띄워짐

  • 당첨금을 입력 받고 한 칸 띄우지 않음

  • 최종 출력에서 개수가 0이면 null로 나옴 => HashMap이기 때문에, 당첨되지 않은 등수는 당연히 null

  • 타입 선언 시에는, ArrayList, HashMap으로 하지 말고, List, Map으로 포괄적으로 하는 게 좋음

  • 총 수익률 계산하는 부분에서 에러 발생. 포맷팅 문제로 예상. 이 외에도 급하게 한 줄씩 복사하느라 값을 잘못 넣은 부분이 많음.

  • view 패키지를 사용하지 않음. 적절한 역할 분배 실패 => 입출력 자체는 service에서, 사용자에게 보이는 메세지는 view에서 하도록 역할 분배

  • validator는 그저 검증만 하도록 구현해야 함. 하지만 이번에는 다른 동작까지 하도록 해서 역할 분배에 실패함

  • mainValidator를 만들어 총괄한 점은 괜찮다고 생각. 하지만 클래스명이 다른 validator와 유사해 헷갈릴 수 있으니, 다음에 만든다면 validatorManager로 고려.

성장

개발자에게 문제란? 해결해야하는 것이다. 이를 해결하면 자연스럽게 성장할 수 있게 된다.

그러므로 이번 3주차에서 수많은 문제를 발생시키고, 이를 인지한 지금의 나는 성장할 기회를 얻었다고 말할 수 있다.

위에서 나열한 문제들을 어떻게 해결할 수 있을까?

  • IDE 사용법을 숙지하자. 이미 답답한 나의 모습에 화가 나 유용한 단축키를 여러 개 설정했다.

  • 테스트 코드를 공부하자. 사실 가장 어려운 부분이기는하다. 그러나 정 내가 못할 것 같다면 과감하게 테스트 코드를 포기하고 기능 구현에 더 시간을 쏟았어야 하는 게 맞다.

  • 객체에 대한 공부를 하자. 현재 객체지향의 사실과 오해라는 책을 읽고 있기는 하나, 이것만 읽고 코드에 적용하기는 쉽지 않은 듯하다. 다른 사람들의 코드도 적극적으로 보며 공부해야 한다.

  • 노트북을 당장 바꿀 돈은 없다. 하지만 필요 없는 윈도우 창들을 끄거나, 재시작을 하면 속도가 어느 정도 개선되니 이러한 방법이라도 사용하자.

  • 잠을 자고 운동도 하자. 내 몸을 내가 알고 컨디션 관리를 잘하는 것도 실력이다.

  • 잘못 구현한 부분에 대해 수정을 하며 리팩토링을 완료하였다. 아마 이번에 잘못한 부분은 충격적이라 평생 까먹지 않을 것 같다.

아직 구체적이지는 않지만, 적어도 내가 어떤 점이 문제인가는 알게 되었다.

마음

이 글이 그저 실패한 사람의 자기 위로가 될지, 아니면 성장의 첫 걸음이 될지는 앞으로 내가 실천을 하는가에 달려있다.

타협하고 지는 것을 싫어하는 나이기때문에, 힘들었던만큼 더 힘을 내서 4주차 미션은 정말 잘 해내보려고 한다.

잘하지는 못하더라도, 나만의 생각이 담긴 코드를 만들어 내 사람들과 리뷰를 나누며 더욱 성장하고 싶다.

오히려 한 번 제대로 망치고 나니, 마음이 편해졌다.

매주 잘해야 한다는 생각에 사로잡혀 있거나, 남들의 코드를 보며 자괴감에 빠질 이유가 사라졌다. 이제서야 우테코에서 원하는 프리코스의 의의에 다가간 게 아닌가 싶다.

남은 기간 동안, 최대한 즐겁게 임하면서 마무리 하고 싶다!


(3주차 깃허브 : https://github.com/bbbang105/java-lotto-6)