우아한테크코스 3기 - 최종 테스트를 마치며
IT/우아한테크코스

우아한테크코스 3기 - 최종 테스트를 마치며

반응형

우아한테크코스 3기 일정

우아한테크코스의 선발 과정을 보면 일반적인 선발 과정과는 다른 점들이 있다. 첫 번째로 면접이 없다. 지원서, 프리코스 미션, 최종 테스트를 종합적으로 판단하여 뽑는다. 그리고 3주라는 프리코스 기간이 있다. 비록 선발된 건 아니지만 이 과정에서도 많은 것을 배울 수 있다. 그리고 1:1은 아니지만 참가자들이 공통적으로 실수하는 부분들을 피드백 받을 수 있다. 정말.. 내가 생각하는 이상에 가장 가까운 선발과정인 것 같다. 그래서 더욱더 참여 하고 싶은 교육이다.

 

서류 지원을 하고 온라인 코딩 테스트를 본지 얼마 되지 않은 것 같은데 벌써 프리코스 3주간의 미션이 끝나고 최종 테스트까지 끝났다. 길다면 길고 짧다면 짧은 시간이지만 체감상 정말 순식간에 지나간 한달이었다. 1차 합격자 발표날로 돌아가보면 합격 메일을 받고 너무 좋았던 기억이 든다. 그리고 가장 기대됐던 프리코스는 3주간 1주에 1가지씩 미션이 주어졌다.

 

프리코스와 최종테스트 미션
1주차 숫자 야구 게임
2주차 자동차 경주 게임
3주차 지하철 노선도
최종테스트 지하철 노선도 경로 조회

 

각 미션에는 지켜야할 요구사항들이 있는데 이것들을 지키며 개발을 하는게 쉽지만은 않았다.

하지만 이런 구체적인 요구사항들을 지키며 코딩을 하다보면 평소와는 다르게 개발을 하게 될 수 밖에 없다.

그리고 바로 이 과정 속에서 우물 안의 개구리였던 나는 우물 밖으로 한 걸음 나올 수 있었다.

요구사항들을 지키며 느낀점

  • 자바스크립트 코드 컨벤션 지키기

혼자서 일기를 쓸 때는 본인만 알아보면 되기 때문에 마음대로 써도 된다. 하지만 책을 쓰는 일이라면 다른 사람들도 읽을 수 있어야 하기 때문에 의미가 잘 전달돼야 하고 잘 읽힐수록 좋다. 이와 마찬가지로 개발에 있어서도 주로 협업을 하기 때문에 컨벤션이 중요하다. 하지만 실무 경험을 하기 전에는 대부분은 코드 컨벤션에 대해 구체적으로 잘 모르거나 알더라도 혼자서는 지키기가 쉽지 않을거라고 생각이 든다. 나도 코드 컨벤션에 대해서는 들어봤어도 구체적으로 알지는 못했다. 하지만 이번 기회에 확실히 알게 되었다. 문제는 컨벤션을 준수하려니 많은 신경이 쓰일 수 밖에 없었고 실수하는 부분도 생기게 됐다. 그래서 이러한 규칙을 정의할 수 있는 eslint 라이브러리를 사용하게 됐다. 구글 스타일 가이드를 적용했는데 컨벤션에 맞지 않는 부분이 있으면 빨갛게 밑줄로 알려주고 일부는 자동으로 수정이 됐다. 덕분에 컨벤션을 지키는 게 한결 수월해졌고 코딩을 하는 순간이 더 즐거운 시간이 됐다.

 

  • indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현

가독성에 대해서는 평소에도 나름대로 신경 쓰면서 코딩한다고 생각했다. 하지만 이번 요구사항에서 뼈를 맞았다. 이렇게까지 구체적으로 생각해 본 적은 없었다. 이번 프리코스를 진행하면서 계속 생각이 든거지만 이런 명확한 요구사항들이 기존의 코딩 습관들을 와르르 무너뜨리게 했는데 이게 엄청 도움이 됐다. 처음에는 depth가 3이 넘지 않게 구현하려면 힘들 것 같다는 생각이 들었다. 하지만 depth가 2가 되는 순간마다 함수로 분리해야겠다는 생각을 하면서 진행했더니 어느 순간 익숙해지게 되었다. 어떻게 보면 단순한 요구사항처럼 보일지 몰라도 코딩에 적용하는 순간 코딩 전체의 가독성에 많은 영향을 끼치는 엄청난 요구사항인 것 같다.

 

  • 함수가 한 가지 일만 하도록 최대한 작게 만들고 15라인 넘어가지 않도록 구현하기

고민을 가장 많이 했던 요구사항 중 하나였다. 함수를 작게 나누는 것이 익숙하지 않았고 그 구분을 짓기가 좀 어려웠다. 함수를 어느 수준에서 분리할지, 같은 파일에 있어야 하는지, 위치는 어디가 적당할지 등등 여러 가지를 생각하면서 옮기고, 없애고, 다시 만들기를 반복했다. 함수 하나를 만들면서 이토록 고민했던 적은 여태까지 없었다. 재밌었던 점은 함수를 고친 후 이 정도면 거의 완벽하다는 생각을 하고 다음 날 다시 코드를 보면 더 나은 방법이 계속해서 보이곤 했다는 점이다. 그래도 미미하지만 조금씩 모습을 갖춰 가는 모습을 보면서 나도 덩달아 조금씩 성장하고 있다는 느낌이 들었다.

 

  • 기능을 구현하기 전에 README.md 파일에 구현할 기능 목록 추가

개발에 앞서 README에 구현할 기능을 적어 놓고 개발을 진행하면서 빠트린 부분이 있다면 문서에 업데이트해가면서 진행하는 것이 요구사항이었다. 평소 개발을 하다 보면 정확한 요구사항 숙지보다는 코딩에 먼저 손이 가게 되는 것 같다. 하지만 그 상태로 진행하다 보면 내가 지금 정확히 어떤 기능을 짜려고 했던 건지 헤맬 때도 있고 빠트린 부분도 생길 수가 있다. 그래서 개발 하기 전에 구현 해야할 전체적인 기능들에 대해 문서화하고 지속적으로 업데이트한다면 이런 부분들을 방지할 수 있게 된다. 이번 요구사항을 지키면서 이러한 문서화의 힘을 알게됐다.

 

  • git의 commit 단위는 README.md 파일에 정리한 기능 목록 단위로 추가

지금까지 git은 코드 저장용으로만 사용했던 나에게 기능 단위 commit은 정말 생소했다. 그리고 코딩을 집중해서 하다 보면 어느새 커밋을 잊고 기능 2개를 연달아 짜고 있는 자신을 볼 수 있었다. 요구사항 중에 가장 지키기 힘들었지만 최대한 신경써서 진행했다. commit은 협업에서 중요하기 때문에 그 중요성에 대해 느낄 수 있는 시간이었다.

마치며

12월 한달 동안은 그 어느 때보다도 개발을 하면서 많이 고민도 하고 배우기도 했던 시간이었다. 무엇보다 다른 참여자들의 코드를 보며 이렇게도 짤 수 있구나, 이런 방법도 있었구나 하면서 정말 정말 많은 도움이 됐고 더 열심히 해야겠다는 동기 부여도 됐다. 이런 참여자들과 함께 내년을 꼭 함께 보내고 싶다는 생각을 해본다. 이제 일주일 정도 있으면 최종 합격자가 발표된다. 연말에 합격이라는 선물을 받으면 너무나도 좋을 것 같다.

반응형