우아한 테크코스 8기 프리코스 1주차 회고
프리코스 1주차 회고
지난주, 우아한테크코스 프리코스가 시작되었다.
많은 것들을 배우고 싶다는 기대감에 떨리면서도 벅차올라서 커뮤니티 활동을 이곳저곳에서 했다.
공개된 1주차 과제는 간단한 숫자 계산기였고, 처음 문제를 봤을 때 솔직한 심정은 “너무 쉬운데,,“였다.
몇 줄 안 되는 요구사항과 단순한 입출력 예시가 주어졌고, 매일 풀던 알고리즘 문제과 비교하면 너무 쉽다고 생각했다.
하지만 README.md에 기능 목록을 적어가면서 요구사항의 양이 난이도와 비례하는건 절대 아니라는 것을 깨달았다.
‘문제 풀기’가 아니라 ‘문제 만들기’
코딩 테스트 문제들은 친절하다.
모든 조건과 제약사항을 명확하게 알려주고, 푸는 입장에서 그 길을 따라가기만 하면 된다.
하지만 이번 과제에서는 명확하지 않은 고려사항으로 내가 결정해야하는 것들이 너무 많았다.
사용자가 숫자가 아닌 문자를 입력하면 어떻게 할 것인가? 커스텀 구분자는 어디까지 허용해야 하는가? 입력 자료형은 어떤 걸로 설정해야하지?
수많은 질문에 대한 답이 없었다. 그 답은 온전히 나의 몫이었다.
정해진 답을 ‘푸는’ 것이 아니라, 나만의 논리와 기준을 담아 하나의 문제를 ‘완성하는’ 과제라는 생각이 들었다.
내게는 정답이 없다는 사실이 자유롭기보다 불안으로 다가왔다.
int를 써야 할지, BigInteger를 써야 할지, 사소한 자료형 선택 하나에도
**내가 하는 선택이 문제의 의도와 다르면 어떡하지? **
하는 걱정이 앞서 코드를 한 줄도 쓰지 못하고 몇 일을 고민했다.
막막함 속에서 문득 이런 생각이 들었다.
프리코스에서 내가 진짜 배워야 할 것은 무엇일까?
여러 사람과 함께하는 이 흔치 않은 기회에서 배울 수 있는 것은 소통이라고 생각했다.
개발자한테 소통 능력은 아주 중요하다고 말한다. 물론 나는 경험이 없기에 그것을 체감하지는 못했다.
프리코스에서 어떻게 소통할 수 있을까? 라고 생각하니 결국, 내가 생각하는 것을 명확히 말할 수 있어야 토론이 가능하다는 결론을 내릴 수 있었다.
내 코드를 다른 사람에게 설명하고, 내 선택을 설득하려면 무엇보다 ‘왜?’라는 질문에 명확히 답할 수 있어야 했다.
이 깨달음으로, 정답을 찾기보다 나의 선택에 대한 타당한 이유를 만드는 것에 집중하기 시작했다.
애매함을 줄이자
가장 먼저 README.md를 단순한 기능 목록이 아닌, 나의 설계 의도를 담은 명세서로 생각하려 했다.
커스텀 구분자와 입력값 데이터형 등에 대해 나만의 의도를 가지고 설계하고자 했다.
지금 나에게 퀄리티 높은 코드보다는 ‘왜’ 이렇게 만들었는지 설명할 수 있는 코드를 적는 것이 우선이라고 생각했다.
주눅들지 않기
설계의 방향을 잡았을 때쯤, 또 다른 벽에 부딪혔다.
커뮤니티에서 활발하게 논의되던 MVC 패턴, TDD 같은 생소한 개념들이었다.
다른 사람들은 이미 익숙한 듯 이야기하는데, 나는 그 단어의 의미조차 정확히 몰랐다.
또다시 조급함이 밀려왔다.
하지만, ‘왜?’ 라는 기준도 없이 남을 따라서 그런 기술들을 적용하고 싶지는 않았다.
오히려 그 질문들에 대답할 수 있는 배움을 얻어가는 것이 프리코스라고 생각했다.
사람들이 말하는 그런 개발 방법론들, 컨밴션들에 대해 조금씩 공부하며 이해하고 코드에 적용하려고 노력했다.
절대적으로 완벽하고 좋은 코드는 아니겠지만, 내가 설명할 수 있는 코드를 만들어서 제출했다.
1주차를 마치며
가장 간단할 것이라 생각했던 1주차 미션은 내게 개발에 대한 가장 근본적인 질문들을 던졌다.
불확실함 속에서 나만의 기준을 세우고, 그것을 코드로 적고, 테스트를 통해 잘못된 것들을 확인했다.
일주일이라는 짧은 시간이었지만, 코드를 대하는 태도와 문제에 접근하는 방식을 배울 수 있었다.
모든 분야에 적용되는 말이겠지만, 나는 개발을 배우며 경험과 실력이 늘어나면 오히려 부족한 점이 보인다는 것이 재밌다고 생각한다.
또한, 이런 고민들을 하는 다른 사람들과 논의하고 배워갈 수 있는 앞으로의 프리코스가 너무 기대된다.
내게 무궁한 성장이 있기를.