우아한 테크코스 프리코스
우아한 테크코스 프리코스에 대해서 간단하게 설명해드리자면,
우아한 테크코스 프리코스란 우아한 테크코스를 지원한 사람들이 모두 참여할 수 있으며, 이 과정은 본 과정에 들어가지 전 지원자들을 대상으로 기본적인 프로그래밍 능력을 키우고, 본 과정을 맛보는? 과정입니다. 매주 미션이 주어지고 일주일 동안 주어진 요구 사항을 충족하는 프로그램을 작성하는 방식입니다.
목표 세우기
세부적인 목표 세우기
- 매주 미션 테스트를 통과하고 제출한다.
- 클린코드, 좋은 코드를 위해 노력한다.
- 매주 미션 후 다음 미션 시작 전까지 회고 블로그를 작성한다.
- 생성형 AI를 사용하지 않는다.
- 끝까지 최선을 다한다. 끝나도 계속 클린코드를 위해 리팩터링한다.
- 얼마나 성장하는지에 집중한다.
제가 세운 세부적인 프리코스 목표입니다. 저는 지원서를 작성할 당시 두가지의 목표를 세웠었습니다.
- 매주 미션을 회고하는 블로그 작성하기
- 좋은 코드를 작성하기 위해 노력하기
그리고 미션에 진행하는데 있어서, 조금 더 세부적으로 작성할 필요성을 느껴 다음과 같이 더 많은 목표를 세웠습니다.
목표를 세우니 조금 더 뚜렷해지는 느낌이 들었습니다.🙂
10월 15일 1주차 미션 시작 ..! 🙊
1주차 미션 내용
1주차 미션 주제 → 문자열 덧셈 계산기
1주차 미션주제는 문자열 덧셈 계산기였습니다.
사용자가 문자열을 입력하면 구분자를 기준으로 분리한 숫자의 합을 반환하는 프로그램을 구현하는 것이었습니다.
예시로는
- 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 입력하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환한다.
- 예: “” ⇒ 결과 값 0 , “1,2” ⇒ 결과 값 3, “1,2,3” ⇒ 결과 값 6
- 커스텀 구분자를 기준으로 분리한 각 숫자의 합을 반환한다.
- 예: "//;\n1;2;3" 의 커스텀 구분자는 세미콜론(;)이며 결과 값은 6이 반환되어야 한다.
이번 과제의 학습목표는
💡Git, GitHub, IDE 등 실제 개발을 위한 환경에 익숙해지기
였습니다.
이 외에도 commit 규칙 지키기, AirBnb 코드 컨벤션 적용하기, 기능 목록 구현하기 등 다양한 요구사항이 주어졌습니다.
commit 규칙과 코드 컨벤션이 정해져 있으니, 확실히 다른 분들을 코드를 볼 때, 그리고 내 commit 메시지를 작성할 때 수월한 느낌이 들었습니다. 일관적이고 명확한 커밋 메시지는 다른 개발자가 내 코드를 볼 때 어떤 작업인지에 대한 이해도를 높일 수 있고, 문제 발생 시, 어디서 발생한 문제인지 쉽게 알아챌 수 있습니다.
이전에는 커밋 메시지를 작성할 때, 어떻게 작성해야할지 몰라 방식이 뒤죽 박죽이었는데 적절한 커밋 메시지 규칙으로 커밋 메시지를 작성하는 속도도 빨라지고 문서가 전체적으로 깔끔해진 것 같은 느낌이 들었습니다.
기능 목록
처음 과제가 주어졌을 때는 이 프로그램을 어떻게 구현해야할지 막막한 느낌이 들었습니다. 😢
저는 막막할 때면, 글로 정리를 해보고는 하는데, 이번에도 과제의 요구사항들을 천천히 따라 작성해보았습니다. 그리고 기능 목록을 구현하니, 확실히 막막했던 코드가 하나씩 그려지는 느낌이 들었습니다.
처음에는 기능 목록을 너무 세세하게 작성하지 않았습니다. 기능 목록을 고민하는 데 너무 많은 시간을 쓰기보다는, 일단 돌아가는 코드를 작성하는 것을 목표로 했습니다. 기능 목록을 너무 완벽하게 작성하려다 보니, 코드가 아직 완전히 그려지지 않은 상태에서 고민만 깊어지는 것 같았습니다. 그래서 코드를 작성해보면서 필요한 부분이 있을 때 기능 목록을 수정하는 방식으로 접근했습니다.
이 과정에서 우테코 커뮤니티의 글도 읽어보았는데, 그 내용이 크게 공감되었습니다.
사용자 입력
이번 미션에서 가장 고민했던 부분이 바로 사용자의 입력을 어떤 기준으로 처리 할지에 대한 것이었습니다.
미션이 끝나고 다른 분들의 코드를 보니 나와 비슷한 생각을 가지고 계신 분들도 계셨고, 생각지 못한 부분을 고려하신 분들도 계셨습니다.
- 커스텀 구분자를 지정하는 경우, 기본 구분자를 구분자로 취급할까 ?
- 커스텀 구분자로 숫자를 입력하는 경우 에러 처리를 할 까?
- 커스텀 구분자로 숫자를 입력한 경우 사용자가 이렇게 입력한 의도가 무엇일까? 에 대해서 생각해봤습니다.
특히 커스텀 구분자를 지정하는 경우, 기본 구분자를 구분자로 취급할까 ? 에 대해서 고민을 많이 했었는데 처음에는 제가 깊게 생각하는 건가 싶어, 커스텀 구분자를 지정한 경우, 기본 구분자는 없는 것으로 하려했는데 점점 헷갈리자 사용자의 입장에서 생각해보기로 했습니다. 사용자가 커스텀, 기본 구분자를 두개 다 입력한 이유는, “커스텀, 기본 구분자를 포함한 구분자를 사용해서 나눌 것이다”라고 생각했습니다. 문제에 요구사항 이외에는 자유롭게 기능을 구현하면 된다는 내용이 있었는데, 이렇게 자유로운 부분이 주어지니 제 생각 대로 다양한 방식의 입력을 처리할 수 있어 그 부분이 좋았습니다.
돌아보면서
이번 주차에는 프리코스에 적응하는 시간을 가졌습니다. 아쉬운 점을 돌아 보자면 우선 다른 분들의 코드를 보니 많은 테스트 케이스를 추가하여 에러 발생하는 상황을 많이 고려한 느낌이 들었습니다. 저는 Jest는 처음 접하여 테스트 코드를 작성할 생각을 못했는데, 이번주차가 Jest가 포함 된 만큼 더 공부하여 테스트에 대해서 조금 더 명확한 개념을 정리하고 싶습니다.
또한 함수명이 직관적으로 와닿지 않은 부분이 몇 가지 있어 보입니다. 코드를 수정하면서 함수 이름도 많이 수정하였었는데 그만큼 많이 부족한 것같습니다.
남은 3주 동안 미션은 더 어려워 지겠지만 그만큼 더 많은 시간과 노력을 들여 4주차까지 성장할 수 있었으면 좋겠습니다.🙃