우테코 5기 프리코스 회고

eora21·2022년 11월 22일
0

4주 과정을 마치고, 어떤 것들을 배웠는지 간단한 후기를 작성해보게 되었습니다.
각각의 자세한 과정은 회고글을 확인해주시면 감사하겠습니다.

프리코스 참여 전

많은 면접에서 탈락을 경험하고, 기본적인 지식들이 부족하다 생각하고 있었다.
따라서 기존에 진행한 프로젝트를 제대로 설명하기 위해 CS 지식 습득에만 열을 올렸으며, 그 중 트랜잭션을 포함한 DB 서적을 구매하여 공부할 예정이었다.

당시까지만 해도 그게 옳은 방향이라 생각했고, 빠른 취업을 위해서는 CS에 대해 달달 암기하는 것이 맞는 줄 알았다.

공부의 본질이 취업에만 머물러 있다보니 매일이 괴로웠다. 솔직하게 말하자면 당시 우테코에 지원한 계기도 좋은 프로그래머가 되자보단 튼튼한 기본기를 쌓아올려서 취업하자가 컸다..
(물론 이 안일한 생각은 금방 바뀌게 된다.)

프리코스를 참여하며

1주차

알고리즘 문제 7개를 일주일간 풀어 제출해야 했다. 처음 과제 내용을 확인했을 땐 왜 일주일씩이나? 라는 생각이 컸다.

난 프로젝트를 진행할 때에도 알고리즘을 풀듯 코드를 구축했다.
클래스와 메서드의 역할과 기능에 대해 고민하지 않고, 그저 작동되기만을 바랐다.
그러다 보니 프로젝트를 마친 후 기억에 남는 게 없었고, 고민을 깊게 하기보단 얕고 넓게만 했던 것 같다.

막막했다. 우테코에서 무엇을 원하는 지 감이 오지 않았다. 코테를 보지 않는 대신 해당하는 방식으로 문제를 풀게 했다는 건, 무언가 의도가 있다고 생각했다.

이틀 정도 Slack을 확인하며 어떠한 방향성을 잡는 게 좋을까 생각했다. 몇몇 분들이 앞선 4기의 프리코스 룰을 따라가려 하고 계셨고, 나 또한 해당 룰을 확인하며 고민했다.

우선 평소처럼 코드를 짜되, 클래스를 써보려 노력했다. 대부분의 코딩테스트를 Python으로 치뤘고, Java로는 연습만 했기에 완전 힘들게는 아니지만 어느 정도 버벅이며 코드를 구성했다.

한 바퀴를 다 돌 때쯤 메서드와 클래스에 대해 의식하게 되었고, 또 한 바퀴를 리팩터링에 사용했다.
바로 감이 왔다. 아, 내게 있어 중요한 건 CS지식이 아니라 코드를 작성하는 태도였구나.

생각 없이 로직 구현에 급급했던 지난 날들이 떠오를 수 밖에 없었다. 물론 '빠른 시일 내에 기능을 구현하려면 어쩔 수 없지 않나' 생각하며 진행한 것도 있지만.. 핑계였을 뿐이다.
남들이 열심히 좋은 구조를 써내려갈 때, 나는 생각 없이 답 베끼기만 해온 듯 했다. 정말 부끄러워졌고, 같이 프로젝트를 한 팀원들에게 너무나 미안해지는 마음이었다.

내 모든 경험을 다시 뒤엎어버리는 한이 있더라도, 제대로 쌓아올리고 싶게 되었다.

2주차

유명한 숫자야구. 직접 풀어보진 않았지만(스포 싫어하는 편) 워낙 많이 들어본 문제였다.
이 때의 경험은 상당히 재미있었다. 물론 그 당시에는 매일 매일이 고민의 연속이라 힘들었지만 ㅋㅋㅋㅋㅋㅋㅋ

클래스와 메서드의 기능과 역할에 대해 고민하기 시작하게 된 시점인 것 같다.
처음엔 역시나 알고리즘 문제 풀듯 Application에 메서드를 잔뜩 집어넣고 풀었으나, enum 도입에 대해 고민하다 클래스 분리가 훨씬 더 나을 것 같아 메서드에 따른 클래스를 3개로 쪼개고 전역 상수 클래스를 따로 선언하였다.

하지만 클래스를 쪼개고 나니 상수들과 전역상수의 위치에 대해 생각하게 되었고, enum을 통해 관리하는 게 제일 낫다고 판단되어 enum 또한 도입하게 되었다.

정리하자면 enum 도입할까? -> 클래스 분리로 충분해 -> 분리하고 나니 상수들 관리를 이렇게 하는게 맞나 싶네.. -> 아, enum 써야겠다의 흐름이었다.

enum 도입에 대해 4~5시간동안 이것저것 찾아보며 정말 깊은 고민을 했었다. 고민한 것에 비해 결과가 너무 초라하여 마음이 아팠지만.. 시간이 지나니 오히려 좋았다.

3주차

우연치않게도 enum을 사용하라는 요구사항이 있었다. (앞서 말했듯 스포일러를 싫어하는 편이라) 3주차 내용을 일부러 찾아보지 않았는데, enum 얘기가 나와서 꼭 컨닝한 느낌이 들기도 했다 ㅋㅋㅋㅋㅋㅋ..

해당 주차에서는 클래스를 최대한 분리해보도록 했고, 메서드 -> 클래스 흐름이 아닌 클래스 -> 메서드로 역할과 기능에 대해 고민하며 코드를 작성했다.

처음엔 굉장히 어색하고 불편했다. 습관이 무섭다고, 자꾸만 코드를 치고 싶었다.
그러나 꾹 참고 해당 프로젝트가 지닐 방향성에 대해 고심한 후 조금씩 구현해 나아갔다.

전체적인 기능 구현 속도로 보면 느렸겠지만, 내가 생각한 부분대로 차근차근 하나씩 구현하니 오히려 코드가 탄탄해지는 느낌을 받게 되었고, 전과 달리 이 부분은 왜 이렇게 짰어?라는 질문이 날아온다면 바로 대답할 수 있겠다는 생각도 들었다.

대신 이 때는 객체를 객체답게 구현하지는 못 했어서, 데이터를 검증하는 부분이 어디로 가야 하는지, 왜 코드가 삐걱대는 느낌을 주는 것인지, MVC는 왜 지켜야 하는 것인지 등에 대해 많은 고민이 일었다.

역시 해당 고민들에 대한 아웃풋을 제대로 찾지 못해 많이 답답했던 것 같다.

4주차

4주차 피드백을 통해, 3주차의 고민을 대부분 날릴 수 있게 되었다.

진짜 피드백 보면서 경악했다. 육성으로 감탄이 튀어나오면서, 내가 지녔던 고민들이 알아서 눈 녹듯 사라지는 것만 같았다.
객체를 객체답게 사용하라는 부분에서 진짜 많이 깨닫게 된 것 같다. 역할과 책임이 곧 이 뜻이었구나 싶었다.

그러나 MVC의 본질에 대해선 의문이 좀 남아있는 상태였는데, 아고라에서 많은 분들과 이야기를 나누고 개인적으로 조금씩 찾아보며 본질은 객체지향이구나 싶은 생각이 들었다.
물론 완벽한 답은 아닐 수 있겠지만.. 적어도 내가 내린 결론은 그렇다.

따라서 객체스럽게 코드를 작성해보려 많은 노력을 하였고, 프리코스에서 가장 빠른 시일 내에 틀이 잡혔던 것 같다.

처음 문제를 봤을 땐 난이도가 너무 높아 보여 경악했지만.. 코수타에서의 '지난번보다 쉬울 거다'라는 얘기가 거짓은 아니었구나 싶었다.

물론 아쉬움은 많다. 정말 내가 객체스럽게 짠 건지 누군가에게 물어보고 싶기도 하다.
그러나 해당하는 과정에서 많이 배웠고, 앞으로도 더 배워갈 것이기에..

최종 후기

진~짜 많이 변했다. 정말 농담 안하고!
내게 부족했던 고민하는 시간이 많이 늘어났고, 냅다 코드를 작성하지 않게 되었다.
그리고 취업을 목표로 하는 게 아니라, 정말 좋은 프로그래머가 되어보자는 생각을 갖게 되었다.
만약 이번 프리코스가 이렇게 풀리지 않았더라면.. 나는 바로 서류탈락이 되었을 것만 같다 ㅋㅋㅋㅋㅋㅋㅋ
마인드셋 자체가 달라지니 무엇을 어떻게 공부할지에 대한 흐름도 어느 정도 잡혔다.

인생에 중요한 건 속도가 아니라 방향이라 했던가.
이를 지켜 나아가보려 한다.

참여할 기회를 주신 우테코에 정말 진심으로 감사하고, 포기하지 않고 끝까지 참여한 내 자신과 많은 분들에게 한 번 웃어드리고 싶다. :)

profile
나누며 타오르는 프로그래머, 타프입니다.

0개의 댓글