1주차 시작한 날이 엊그제 같은데 벌써 1주차가 마무리 됐다!
그리고 진짜 너무나 커다란 실수를 해서 눈물을 흘릴 뻔 했지만..
어른은 눈물을 흘리지 않아 ..!
회고 시작!
쉬울 것 같은데?
1주차의 미션은 숫자와 구분자로 이루어진 문자열이 입력으로 주어지면 구분자에 따라 나누어 숫자의 합을 출력값으로 내놓는 문제였다.
솔직히 처음 봤을 때는 "쉬운데?"라는 생각이 제일 먼저 들었다.
정말 크나큰 자만이었다..
생각을 할수록 고려해야하는 케이스들이 늘어났고, 어떤 메소드를 사용할지, 함수는 어떻게 분리할지를 생각하며 시간은 점점 흘러만 갔다 ..!
가장 큰 문제는 완벽히 준비해놓은 채 코드 작성을 시작하고 싶다는 나의 욕심이었다.
모든 예외들을 파악해놓은 채 시작하고 싶었고, 어떤 함수가 필요한지, 구현해야 하는 기능은 하나도 빠짐없이 작성했는지를 몇 번이고 생각했다.
앞선 글에서 언급했던 자바스크립트 코드 컨벤션도 틀리고 싶지 않아 2번이나 정독했다.
그러다보니 코드 작성은 시작도 못했는데 이틀이나 지나버리는 불상사가 발생했다.

나의 상황같은 짤 ...
일단 시작하자!
그래서 결국 나의 선택은..
나중에 수정하더라도 일단 시작하자는 것이었다.
한 번에 완벽한 코드를 작성한다는 것은 불가능하다는 걸 알고 있다. 그럼에도 불구하고 첫 시작부터 완성도가 높은 코드를 짜고싶다는 욕심이 있었고, 그 욕심 때문에 오히려 시작조차 못하는 부작용이 있었다.
아무것도 작성하지 못하는 나를 보며 결국은 "일단 뭐라도 해보자!!"라는 생각이 들었다. 오히려 한 번 시작하니 어느 방식으로 코드를 작성해야할지 감이 잡혔고, 완성된 코드를 내가 원하는 방향으로 리팩토링하는 게 더 쉬웠다.
여기서 깨달은 점은 ' 시작이 반이다 라는 말이 괜히 있는 게 아니구나'였다.
물론 코드를 작성하기 전 읽은 컨벤션들, 고민했던 것들이 필요없는 과정이었다는 것이 아니다. 컨벤션을 읽었기 때문에 배운 것들도 많았고, 그 과정에 의해 고민하고 배운 점들이 많았다.
하지만 너무 과한 고민과 생각은 독이라는 것도 깨달았다. 결국은 완성이 중요한 것이다.
돌아가지 않는 깔끔한 코드보단 돌아가는 쓰레기 코드가 낫다. (내 생각이지만)
남은 주차에서는 과한 고민보다는 대략적인 그림이 나온다면 코드 작성을 시작하자는 다짐을 하게 되었다.
이번 미션을 진행하면서 평소와 가장 다르게 코드를 작성했던 부분이다.
나는 보통 메소드를 사용하기보다는 for문이나 if문을 자주 사용하는데 그저 익숙함 때문이었다. 그런데 자바스크립트 코드 가이드를 읽던 중, for문 사용을 자제하라는 부분을 일게 되었다.
대신 찾아보던 중, reduce 함수에 대해 알게 되었고, 훨씬 코드를 간결하고 깔끔하게 짜게 되어 굉장히 만족스러웠다.
// 변경 이전 코드
number = data.split(regex);
for (let i = 0; i < number.length; i++) {
if (checkIsCorrectChar(number[i])) {
if (number[i].length == 0) {
continue;
}
sum += parseInt(number[i], 10);
}
}
// 변경 이후 코드
number = data.split(regex).map((value) => {
if (checkIsCorrectChar(value)) {
if (value === '') {
return 0;
} else {
return parseInt(value, 10);
}
sum = number.reduce((total, value) => total += value);
이번 1주차 피드백에서도 내장 함수를 잘 활용해라는 부분이 있었는데 내가 모르는 함수들이 정말 많고 1/3도 활용하지 못하고 있다는 생각이 들었다.
그래서 2주차부터는 평소 사용하지 않았던 내장 함수들을 더 활용해보고싶다.
사실 나는 코드를 완성한 후, 테스트 케이스까지 작성할 예정이었다.
그런데 핑계일수도 있지만.. 시험 기간과 정보처리기사 필기, 해커톤까지 겹치면서 테스트 케이스 코드를 작성할 시간이 없었다.
제출 후 다른 분들의 코드를 보니 테스트 케이스까지 작성하여 제출하신 분들이 많던데 1주차에 작성하지 못한 것이 너무 아쉽다.
2주차부터는 테스트 케이스까지 작성하고 싶다.
나의 눈물을 흘리게 만들었던 원흉 ....
나는 제출 마지막 날인 월요일에 소감문 수정이 된다는 글을 읽고 PR을 날린 후, 예제 케이스만 미리 돌려보고 싶어 소감문을 작성하지 않은 채 제출했다.
그리고 소감문을 열심히 작성하여 11시 45분부터 제출을 하였으나 계속 뜨는 에러..!!
처음엔 일시적인 오류인가보다.. 하며 로그아웃도 해보고 새로고침도 해보고 웹을 전부 다 껐다가 다시 들어가보기도 했지만 끝까지 "과제를 제출할 수 없습니다"라는 알림이 떴다...
도대체 왜?!
결국 12시가 지나버렸고 나는 우아한테크코스 문의 카카오톡에 자세한 사항을 남겼지만 제출 시스템에는 문제가 없으며 형평성 문제로 인해 제출이 되었는지 확인해줄 수 없다는 답변을 받게 되었다...
미리미리 제출하지 않은 나의 잘못이지만.. 첫 제출 때는 잘만 되던 왜 갑자기 제출이 되지 않은 것인지 정말 너무 의문이고 마음이 아픈 경험이다.. 앞으로는 정말 미리미리 제출할 것 같다 ㅋㅋㅋㅠㅠ
과제를 진행하면서 생각하고 고민했던 부분들은 우아한테크코스 시리즈에 추가되어 있습니다!
나의 부끄러운 코드 보러가기