0. 월요일 오후 3시, 메일 한 통이 도착했다
1시 반에 시작했던 수업이 끝나고, 친구가 아직 밥을 안 먹었다고 해서 같이 학생회관에 있는 식당으로 갔다. 친구가 밥을 먹는 사이에 나는 무심코 핸드폰을 들여다보고 있었다. 그러다가 오후 3시, 정확히는 2시 59분 즈음에 메일이 도착했다는 알림이 도착했다. ‘[우아한테크코스] 1차 심사 결과 안내’라는 제목이었다. 이제 결과가 도착했구나. 4주차 테스트를 다 통과하지 못했었기 때문에 합격을 할 것이라는 기대는 별로 갖지 않았다. 아쉽긴 했지만, 한 달 동안 열심히 몰입하고 성장해으니 그걸로 만족해야지 생각하고, 앞으로 무슨 활동을 해야할지 고민하고 있었다. 그래도 메일은 도착했으니 열어봐야지. 알림을 클릭해 메일로 들어가니 상세 내용이 보였다. 맨 첫 줄에 다음과 같은 글이 쓰여있었다.
‘*이 메일을 받는 분들은 최종 코딩 테스트 대상자입니다.’
글을 보자마자 놀라서 자리에서 일어났다. 반대편에 있는 친구는 나의 갑작스러운 행동에 놀라 혹시 무슨 일이 생겼냐고 물어보았다. 이 상황이 비현실적으로 느껴졌다. ‘내가 왜 합격이지?’라는 물음이 계속 내 머리 속을 맴돌았다. 이 질문에 제대로 된 답변을 할 수 없다는 사실을 깨닫고 마음을 진정시켰다. 그리고 이제 무엇을 해야할지 생각했다. 원래라면, 다음 주 월요일부터 시작하는 기말고사를 대비하기 위해 시험 공부를 계속 해야했다. 그리고 최종 코딩 테스트는 이번 주 토요일이다. 프리코스 때 그랬듯이, 시간을 잘 분배해서 내가 해야할 공부를 성실히 해나가면 된다. 잘 될지는 모르겠지만, 일단 해보는 수밖에는 없었다.
1. 얼마 남지 않은 시간과 잘 작동되지 않는 코드
앞서 언급했듯이, 내가 프리코스를 통과할 것이라는 생각을 전혀 하지 않았었기에, 고개를 내려 발등을 보니 환하게 불이 타오르고 있었다. 저 불을 도대체 어떻게 꺼야할까. 일단 화요일에는 디스코드 커뮤니티에 접속해 다른 분이 작성한 프리코스 코드를 보면서 그대로 따라 작성했다. 나는 그냥 Model, View, Controller만 썼었는데 이분은 Service를 도입했었다. 나는 지금까지 Model에 메서드들을 적용했었는데, Service로 메서드들을 독립시키는 것이 훨씬 가독성이 좋아보였다. 이 외에도, 깔끔하게 작성된 코드들을 보며 앞으로 어떻게 코드를 작성하면 될 지 감을 익히는데 노력했다. 다른 분들의 코드에 비해 내 코드가 많이 부족했음을 깨달을 수 있었던 시간이었다.
그리고 그 이후로는 기출문제들을 풀었다. 먼저 6기 최종 코딩테스트 ‘oncall’을 풀어보았는데, 생성형 AI를 사용하지 않다보니 막히는 부분이 너무 많았다. 결국 목표했던 5시간 안에 프로젝트는 완성하지 못했고, 에러가 발생할 때마다 무엇이 문제였고 어떻게 고치면 되는지 그 방법을 찾느라 시간이 훅훅 지나갔다. 어떤 상황에서 어떻게 하면 될지 머리 속으로 생각이 떠오르기는 했지만 실제로 코드로 옮기는 작업이 원활하게 진행되지 못했다. AI를 쓰지 못하게 되면 급속도로 무능력해지는 상황이 별로 마음에 들지 않았다. 계속 생각하고, 코드를 작성하며 익숙해지는 수 밖에는 없는 노릇이었다. 그래도 계속 코드를 작성하다보니 감각이 손에 익는다는 느낌이 들었다. 어쩌면 나는 발전하고 있는 것일까. 기말고사 공부는 잠시 뒤로 한 채 계속 기출문제를 풀었고, 어느 새 최종 코딩테스트 당일이 되었다.
2. 멋진 캠퍼스에서 진행된 생애 첫 오프라인 코딩 테스트
아침에 집에 있는 과일들로 배를 채우고, 지하철을 타고 선릉역으로 향했다. 선릉역에서 나와 조금 걷다보니 커다란 건물이 나왔고, 그 건물에서 엘리베이터를 탑승해 우아한테크코스 선릉 캠퍼스에 도착했다. 캠퍼스에 도착하니 코치분들(혹은 직원분들이라고 불러야하는지 애매하지만)께서 지원자들을 환영해주었다. 신분증 검사를 하고, 웹 프론트엔드 시험을 보는 강의실로 갔다. 꽤 일찍 도착했다고 생각했지만 강의실은 사람들로 가득 차 있었다. 이 분들이 다 프리코스를 통과하신 분들이구나. 대단한 분들이겠지 이 중 몇 명이 합격을 하는 것일까. 나는 그저 이 테스트에 참여할 수 있었다는 것에 감사할 뿐이었다.
사실 오프라인 코딩 테스트는 살면서 처음이라 조금 떨렸다. 시험 방식은 지금까지 진행된 프리코스와 별로 다르지 않을 것이고, 막상 시작하면 정신없이 문제를 푸는 데에만 집중할테니 긴장 할 필요가 없다고 스스로를 안심시켰다. 그리고 한 시가 되었다. 웹 페이지에 접속해 문제를 확인했다. 출석부 프로그램을 만들어야 하는구나. public에 있는 csv 파일에 있는 정보들을 활용해야한다고? csv 파싱은 해본 적이 없는데. 현재 날짜와 시간을 가져오려면 Datetimes의 now()를 활용하라고? 프리코스에는 저런 라이브러리를 본 적이 없었는데. 생소한 정보들의 연속이었다. 뭐 그래도 다른 사람들도 전부 생소할테니까. 문제를 천천히 읽으며 어떻게 프로젝트를 구성하면 될 지 설계를 했다. 그리고 개발 시작. 과연 5시간 안에 개발을 다 할 수 있을까.
3. 시험을 치는게 아니라 공부를 하는 기분
일단 csv 파일을 읽는 방법은 구글링을 하다보니 코드를 발견해서 어찌저찌 해결했다. 솔직히 여기서 한 시간 정도를 쓸 줄 알았는데 다행이었다. csv 파일을 읽어서 배열(attendanceArrayFromCSV)로 만들어주었다.
그리고 그 뒤에 어떻게 했냐면,
- 빈 배열을 하나 생성한다.
- attendanceArrayFromCSV를 순회하며 닉네임들을 빈 배열에 push했다.
- 닉네임이 채워진 배열을 Set로 만들어 중복을 제거하고, 다시 배열(앞으로 newArray라고 부른다)로 만들어준다.
- newArray를 map 함수로 nickname property와 attendanceRecord(배열) property가 요소마다 존재하도록 매핑한다. → namePropertyArray라고 부른다.
- namePropertyArray를 순회하면서, 또 그 안에서 attendanceArrayFromCSV를 순회하며 namePropertyArray의 닉네임과 attendanceArrayFromCSV의 닉네임이 같은지 체크한다.
- 만약 닉네임이 같다면, attendanceArrayFromCSV의 datetime을 namePropertyArray의 attendanceRecord에 push하는데, 이 때 push되는 요소의 구조는
{
datetime: arrayElement.datetime,
status: "출석",
}
와 같다.
아까 언급했듯이 이렇게 만들면 되겠다는 생각을 떠올리는 데에는 시간이 오래걸리지는 않았지만 실제로 구현하는데 시간이 너무 많이 걸렸던 것 같다. 배열과 객체를 올바르게 접근하는 부분에서 조금 헤맸었다. 그리고 정작 models/Person.js를 만들었는데 해당 파일을 사용하지도 않았다.
3시가 되자 감독관분들이 모두 노트북을 덮고 10분 간 휴식을 취하자고 하셨다. 시험장 밖을 나와 캠퍼스를 둘러보았다. 책장에는 개발 관련 책들이 꽂혀있었고, 창문 바깥으로는 건물들이 즐비했다. 신발을 벗고 휴식을 하는 공간도 있었는데, 그 공간은 보자마자 왠지 모르게 편안한 기분이 들었다. 이런데서 공부를 한다면 얼마나 좋을까하는 생각이 들었다. 시험장에 도착하기 전 사온 초코바를 먹으며 허기를 달랬고, 10분이 지나 다시 책상 앞에 앉아 개발을 시작했다.
그리고 그 뒤로는, 계속 시행착오를 반복하며 프로젝트를 완성하기 위해 노력하는 과정이었다. 개발을 다 구현하는데에도 실패했고, 이상하게도 ‘npm test’는 잘 작동되지 않고 오류가 발생했다. 시간이 6시에 가까워지며 마음 속으로는 구현을 다 못하겠다는 생각이 점점 커져갔다. 옛날이라면 많이 아쉬워했을 것 같은데, 솔직히 너무 정신이 없어서 그런 감정을 느낄 시간도 많지 않았다.
어느덧 6시가 되었다. 테스트는 잘 동작하지 않았고, 창문 밖을 바라보니 어느 덧 어두컴컴해져있었다.
4. 좋은 경험이었던 순간들
이렇게 나의 우아한테크코스 7기 도전기는 끝이 났다. 최종 합격을 한다면 정말 좋겠지만, 아무래도 힘들겠다는 생각이 들어 아쉽지만 놓아주기로 했다. 시험이 끝나자마자 학교에 가서 기말고사 대비를 시작했다. 당장 다음주 월요일부터 시험이었기에 물리적인 시간이 없었고, 너무나도 정신없는 시간들을 보내고 이제는 기말고사도 끝이 났다.
군대를 전역하고, 학교를 다니다가 우연히 친한 형이 우아한테크코스에 있었다는 사실을 알게 되었고, 그 때부터 우아한테크코스에 관심을 갖게 되었다. 언젠가는 꼭 우아한테크코스에 지원을 해봐야겠다고 다짐을 했었다. 그리고 시작한 프리코스. 이전까지는 React에서 뷰를 만들고 라이브러리를 사용하는 방법을 익히는데에만 열중했었다. 그러나 이번 프리코스를 통해 순수한 자바스크립트로 코딩을 하며, 무작정 프로그램이 작동하는 것에만 집중하지 않고 어떻게 하면 가독성있는, 깔끔한 코드를 생성할 수 있는지 익힐 수 있게 되어 좋았다.
특히 최종 코딩테스트를 준비하는 과정, 또 코딩테스트를 보는 과정에서 AI 없이 코딩을 하는 연습을 하게 되어 실력이 꽤 향상한 것 같다. 이 기세를 타서 이제 종강도 했으니 꾸준히 자바스크립트로 알고리즘 문제를 풀며 계속 코딩 실력을 쌓아 나가려 한다. AI는 계속 발전하겠지만 기초적인 코딩 실력은 앞으로도 계속 개발자에게 필요한 조건이리라 믿기 때문이다.
지금까지 우아한테크코스 프리코스, 또 최종 코딩 테스트에 참여할 수 있어서 영광이었고, 이 과정을 준비해주신 분들께도 감사드린다. 그리고 같이 코스를 진행한 분들도 합불 여부 상관 없이 다 잘 되었으면 좋겠고, 같은 필드에 있는 만큼 앞으로 계속 마주치지 않을까하는 생각이 든다. 앞으로도 꾸준히 노력해 더 발전된 모습으로 찾아오려고 한다. 다들 파이팅!!
'우아한테크코스(프리코스)' 카테고리의 다른 글
우아한테크코스 7기 프리코스 최종 회고 (웹 프론트엔드) (7) | 2024.11.16 |
---|---|
우아한테크코스 7기 프리코스 2주차 회고 (웹 프론트엔드) (2) | 2024.10.28 |
우아한테크코스 7기 프리코스 1주차 회고 (웹 프론트엔드) (0) | 2024.10.20 |