본문 바로가기

우아한테크코스

[우아한 테크코스 3기] 웹 백엔드 지원 과정부터 프리코스까지 후기

2020년 12월 15일 작성했던 글

감사하게도 우형에서 주관하는 우아한 테크코스 웹백엔드 과정 1차에 선발이 되었고,
우테코에 지원하는 과정과 프리코스를 진행하며 느끼고 배운 것들을 기록해보려 한다.
내가 우테코에 대해 적은 글들이 정답은 아니지만,
혹시나 다음 우테코에 지원하려는 사람들이 이 글을 보게 된다면,
우아한 테크코스 프리코스를 참가한 사람은 이런 것을 느꼈구나!로 재밌게 봐주면 좋겠다 😀

지원의 서막

어느날. jojoldu님의 주니어 개발자 채용 정보에서
우아한 형제들에서 주관하는 소프트웨어 장인 양성 프로그램 우아한 테크코스 를 보게 되었다.

사이트를 쭉 보면서 이 프로그램이 어떤 프로그램이며,
어떤 교육 과정을 가지고 있는지 쭉 보게되었다.

출처 : 우아한 테크코스 웹 사이트

미션 기반의 코드 리뷰 중심, 소통과 협업 위주의 학습, 현장 중심 교육

이 타이틀들이 나를 굉장히 ✨매혹✨시켰는데,
특이했던(?) 점은 교육이라 함은 대학 수업 같은 강의식을 생각 하지만
우테코에서는 미션, 프로젝트를 협업하는 방식으로 교육 과정이 이루어진다는 점이다.

이번년도 졸업 프로젝트를 진행하면서 대학교 4년 동안 들은 전공 수업보다 졸프 때 더 많이 배우고 성장하였다. 물론 전공 수업 때 배운 내용들이 기초가 되어주었지만, 졸프를 진행하면서 내가 부족하고 몰랐던 부분을 알아가며, 구현해야하는 기능을 만들기 위해 자발적으로 공부를 하다 보니 프로그래밍 공부가 습관이 되었고, 어느새 나의 흥미가 되어버렸다 👩‍💻

때문에 이번년도 더 깊이 배우고 성장하고자 하는 욕심으로 꾸준히 개발 공부를 해왔지만,
혼자 열정으로 공부하면서 얻을 수 있는 경험은 실무적인 스킬을 배우는데는 한계가 있음을 느껴왔다.
때문에 더 깊이 배우고 성장하고자 하는 욕심으로 더 많은 경험에 갈증을 느끼게 되었고,
이런 내 성장하고픈 갈증을 채울 수 있는 우테코의 현장형 교육 과정이 내게 필요하다고 생각했다❗️

또한 이번 졸프를 진행하면서 팀원들과 머리 맞대고 개발하는 과정에서 얻는 즐거움과
더불어 함께 성장하는 성취감의 기쁨을 경험했다.
덕분에 더 다양한 사람들과 프로젝트를 진행하면서 성장하는 기쁨을 계속해서 누리고자 하는 싶은 갈망이 있었는데,
이 또한 협업 기반의 교육 과정으로 진행되는 우테코에 참여하고 싶다는 욕구에 불을 지폈다 🔥

그럼 우테코는 어떤 교육생을 원할까?

지금 나의 상황에서 절대적으로 필요해보였던 우아한 테크코스.
그러면 이들이 원하는 교육생은 어떤 사람일까를 봐보았다 👀

"우테코가 원하는 교육생은 이렇습니다!" 하는 내용을 보자마자
"와 이건 정말 나야❗️" 라고 생각했다.
꾸준한 자기주도적 학습 능력과 더 성장하고 싶은 갈망이 있는 사람.


이번 한해 정말 과장을 조금 보태서 나에게 성취감을 주는 개발 공부를 단 하루도 놓지 않았었고,
프로그래밍이 주는 즐거움과 흥미로움으로 개발 공부에 과몰입해왔다.
그래서 우테코에서 10개월 간의 교육 과정에서 끊임없이 노력하고 공부할 각오가 되어있으며,
그 과정에서 얻는 성취감으로 매일 기쁨을 누리는 교육생이 될 자신이 있었다.

경쟁률이 어마어마하다길래 사실 조금 무서웠지만, 그래도 너무너무 필요한 교육이었기에 우테코 지원을 맘 먹고,
설명회도 들으며 지원서를 써내려갔다 ✍️

지원서 작성

우테코 지원서의 질문들은 다음과 같았다.

  • 프로그래밍 학습 과정과 현재 자신이 생각하는 역량은?
  • 프로그래머가 되려는 이유는 무엇인가요?
  • 마음이 끌리는 무엇인가에 긴시간 동안 몰입해 본 경험이 있나요?
  • 우아한테크코스에 참여하려는 이유는 무엇인가요?

내가 지금껏 협업을 바탕으로 한 학습 과정과 개발 공부에 흥미를 느끼고 꾸준히 공부해왔던 과정들을 질문에 대한 대답에 녹여 썼고, 위에 작성 했듯이 나에게 우테코가 필요한 이유와 우테코에서 원하는 교육생이 나임을 어필하며 지원서를 작성해 나갔다.

1차 코딩 테스트

코딩 테스트는 총 4시간 동안 7문제가 출제되었다.
홈페이지와 설명회 때 들었듣이 알고리즘을 사용해서 문제를 푼다기 보다는
논리적인 사고력 문제들을 프로그래밍 언어로 구현하는 문제들로 출제되었다.
설명회 때는 이 사람이 코드로 개발이 가능한지를 본다고 하셨는데,
그 느낌의 문제들로 출제 된 것 같았다.

4시간 동안 허버허버 거리면서 7문제를 풀고나니 엄청 배고팠었다 😏

1차 결과 발표

온라인 코딩 테스트를 마치고 결과 발표가 나기까지 정말 초조한 나날들을 보냈다.
드디어 발표 당일.


저 "본 이메일은 우아한 테크코스 1차 합격자에게 발송되는 이메일입니다." 메세지를
보자마자 입을 막고 . . . 눈물 좔좔 . . .
우테코의 프리코스를 경험할 수 있다는 감격에 맘껏 소리를 질렀다 🙉

프리코스 시작 전 여기 저기 프리코스 후기를 찾아보며 기다리고 있었다.
사전에 들었듯이 프리코스는 우테코 본 교육 과정을 미리 맛보기 하는 과정이었으며,
우테코의 교육 방식처럼 떠먹여 주기 식의 교육이 아닌,
3주간 동안 참가자들의 자기주도적 학습을 요구하는 프리코스임을 인지하고 있었다.

프리코스

1차 미션 - 숫자 야구 게임

1차 미션은 숫자 야구 게임이었다.
숫자 야구 게임은 내가 프로그래밍을 배우면서 한번쯤은 구현해보았을 법했지만,
우테코 프리코스의 미션은 프로그램을 구현할 때 지켜야 할 요구사항들을 함께 보내준다.

미션의 요구사항을 만족하기 위해 기능을 구현하기 전부터,
어떤 식으로 기능을 분리해야 할지 고민하는 데 많은 시간이 들었다.

또한 자바 언어를 오랜만에 잡아보게 되었더니,
자바에서 쓰는 개념들을 다시 상기시키는데 많은 시간이 들기도 하였다.

기능 목록 작성의 중요성

사실 그냥 숫자 야구 게임 돌아가게만 구현 하라면 어떻게 뚝딱 구현할 수 있었겠지만,
요구 사항대로 기능 별로 메소드를 쪼개는 일이 처음에는 쉽지 않았다.
그래도 스스로 기능 목록을 작성하고 구현할 프로그램 구조도를 작성하니,
구현해야 할 기능들과 추가해야 할 기능들을 명확히 볼 수 있었고
어떻게 기능을 나누어야 할지 감을 잡을 수 있었다.
덕분에 프로그래밍할 때 구현해야 할 것들을 명세화하는 일의 필요성을
다시 한번 배울 수 있었던 것 같다 📃

Convention

또한 지금까지 "제 기능을 하는 프로그램의 외곽"에만 집중했던 내가 코딩 컨벤션을 준수하고 기능별로 커밋하며,
"프로그램의 내부를 봐도 그 기능을 알 수 있는 프로그램"을 구현하는 것은 처음에는 조금 힘들었다.
때문에 우테코에서 제시해준 컨벤션 가이드들을 정독하며 블로그에 정리했고
이에 익숙해지기 위해 노력했었다.

처음에는 요구사항을 만족 시키는 일이 어려웠지만,
단순히 기능을 하는 프로그램 구현이 아닌 효율적인 프로그램을 만들기 위해
계속해서 고민하고 검토하는 노력은 프로그래밍에 몰두하게 만들어
큰 보람을 느끼고 흥미롭운 일주일을 보낼 수 있게 만들어주었다.

2차 미션 - 자동차 경주 게임


1차 미션을 제출하고 내가 구현한 프로그램을 회고하다보니 여러가지 아쉬운 점이 있었다.
그 중 하나는 자바 언어를 오랜만에 사용하다 보니 기초적인 부분을 많이 놓쳐,
자바를 자바답게 사용하지 못했던 것이다. (거의 처음 공부한다고 말해도 무방할 정도...)

때문에 2차 과제를 수행 전 프리코스를 진행하는 동안 자바 언어에 대해
더 깊이 이해하고 활용하기 위해 📕윤성우의 열혈 자바 프로그래밍📕 책을 집어 들었고,
빠르게 개념을 익히기 위해 책을 훑으며 블로그에도 간단히 익힌 개념들을 정리했었다.

또한 미션과 함께 공통 피드백이 날라오는데,
미션을 수행하면서 이를 반영하려고 계속 고민하고 노력했다.

이름을 통해 의도를 드러내라.

변수의 이름만으로 이 변수가 어떠한 값을 나타내는지,
메소드의 이름으로 이 메소드가 어떤 행위를 하며 어떤 값을 반환하는지,
클래스의 이름을 통해 이 클래스가 어떠한 서비스를 가지고 있는지 알 수 있도록
계속해서 고민하고 반영하려 했다.
또한 축약된 이름을 사용하지 않고, 이름이 길어지더라도 그 의도를 들어내도록 해보았다.
이러한 과정을 통해 프로그래밍에서 변수, 메소드와 클래스의 이름이 주는 영향을 깨달았다.

또한 1차 과제에서는 반복된 변수를 쓰는 실수를 범했으나,
이번에는 중복의 위험이 있는 변수는 메소드의 반환으로 해결하려 노력했다.

기능 목록 업데이트

그리고 1차 피드백에서 가장 인상 깊었던 문장이
"죽은 문서가 아니라 살아있는 문서를 만들기 위해 노력한다."였는데,
이 문장을 프로그래밍 내내 머리에 새기고 문서를 통해 구현해야 할 기능을 파악하고 구현이 된 기능들은 문서에도 체크해주어 프로그램 구조를 정리하는데 적극 활용했었다.

값을 하드코딩하지 마라.


기능 요구사항에서 어떤 특정 값에 대한 요구사항이 주어질 때,
(예를 들어 랜덤 숫자가 4이상이면 전진이고 그 미만이면 멈춘다.)
이러한 값을 하드코딩이 아닌 상수화(static final)하여 선언하여야 한다.

반복하지 마라.

사실 1차 미션에서는 Application에 있는 scanner를 무시하고 중복되는 변수를 만들어 사용했다.
또 객체가 값을 뱉어내는 식으로 값을 전달할 수도 있는 코드들을,
새로운 변수를 만들어 쓸 때 없이 중복되는 변수를 만들어 내었다.
이번 미션에서는 중복될 수 있는 값들은 매개변수로 전달하거나 객체에서 꺼내오는 식으로 해보려 노력했다.

1차 미션 때는 요구사항을 지키는 것이 낯설어서 처음에는 고군분투 하였지만,
2차 때는 자바도 다시 공부하고 메소드를 1차 보다 더 작게 분리하려 노력하는 과정과
클래스를 분리하려 하면서 "자동차 경주 게임 프로그램 개발"에 몰입할 수 있었다.
이렇게 무언가에 몰두할 수 있는 계기와 이를 통해 나의 부족함을 알아가는 과정들이 큰 성취감을 느끼게 해주었고, 이 성취감은 나를 다시 프로그래밍에 몰두하게 만들었다 🎯

3차 미션 - 지하철 노선도


대망의 마지막 미션.
지하철 노선도 미션은 구현해야할 기능이 정말 많았다.
일단 기능 별로 화면이 있고, 입력한 기능대로 화면을 구현해야 했다.
이 기능들을 어떻게 해야 중복없이 효율적으로 구현할 수 있을지 정말 많은 고민을 했다.

또한 이번에 온 피드백들은 지금껏 자바를 자바답게 사용하지 못했던
나의 문제점을 짚어주는 것 같아서 정말 순살 개발자가 되었다 🥲

모든 피드백들이 소중하였지만,
내가 이번 피드백에서 정말 나의 뼈를 때린다고 느꼈던 몇 가지는

  • 기능 목록 구현을 재검토 한다.
  • java api를 적극 활용한다.
  • 배열 대신 java collection을 사용하라.
  • 객체에 메시지를 보내라.
  • 비즈니스 로직과 UI 로직을 분리해라.
  • 필드 (인스턴스 변수)의 수를 줄이기 위해 노력한다.
  • 발생할 수 있는 예외케이스에 대해 고민한다.

적다보니 피드백의 거의 대부분인 것 같지만 . . . ㅎㅎ
쨌든 이 피드백을 받고 아 내가 아직도 자바를 제대로 모르고 있었구나!
아직도 내가 배울 것이 많구나!를 뼈저리게 느꼈다.

일단 구현해야 할 기능들을 다 구현해 놓고 리팩토링을 통해
피드백에서 반영해야 할 개념들을 적용하였다.

피드백을 바탕으로 이번 미션에 적용한 주요 개념들은 이렇다.

MVC 패턴

세상에서 제일 쉬운 MVC 패턴 이 글을 토대로 프로젝트를 구상하려고 노력하였다.
비즈니스 로직과 데이터를 다루는 Model(domain),
사용자에게 입력을 받기 위한 화면과 출력을 담당하는 View,
Model과 View의 상호작용을 하는 기능별 Controller
이렇게 정의를 하고 패키지를 나누어 프로그램을 구성하였다.

collection과 java api의 활용

Collection 프레임워크에 대한 기본 개념이 더 필요하다고 생각하여 블로그에 간략히 정리하며
그 개념을 먼저 익히려 노력하고 여러 블로그들의 개념 정리 글들을 보면서 그 응용을 익혀갔다.
2차 미션까지는 배열과 컬렉션 프레임워크를 혼합해서 사용하고 java api를 적극 활용하지 못했지만,
이번 미션에서는 피드백을 바탕으로 배열이 아닌 LIst나 Map을 사용하였고
덕분에 데이터를 조작할 때 더 효율 적인 코드를 짤 수 있었다.

enum 클래스의 활용

2차 미션까지는 출력해야할 메세지나 값들을 상수형 변수로 클래스 안에서 관리했었다.
하지만 이번 미션에서는 출력해야할 텍스트 값들이 많아졌고 OutputView 클래스에서 관리하니 코드의 가독성이 떨어진다고 느끼게 되었다.
또한 처음에는 화면 별로 controller를 만들고 controller 별로 index를 부여하고,
또 화면 별 기능(등록, 삭제, 조회, 뒤로가기 등)에도 controller 안에서 index를 부여했었다.
이러니 컨트롤러마다 중복되는 변수명이 생기는 문제가 생겼다.

때문에 enum 클래스의 개념을 배우고 적용하여,
메세지 값들과 기능들을
2차 미션보다는 더 깔끔하게 정리할 수 있었다.

이번 미션에서는 정말 급격한 러닝 커브를 느낄 수 있었고
자바와 프로그래밍에 대해서 정말 많은 배움을 얻어갈 수 있었던 미션이었다 🏃‍♂️
하지만 나는 아직도 객체 지향의 개념을 완전히 이해하지 못하였고,
이를 미션에 적용하지 못한 아쉬움이 크게 남았다.
내가 부족한 부분들이 적나라하게 보였기 때문에 가장 고통스러운 미션이었지만 또 그만큼 많이 깨닫고 성장했기에 가장 큰 성취감을 느낀 미션이었다.

프리코스를 마치고 . . .

프리코스를 진행하면서 공부한 내용을 몇 가지 간략하게 기록한 흔적 ✍️

Convetion

[Git] Commit Message Conventions
[JAVA] Google Java Style Guide 번역

Java 개념

[Java] # 1 - 간단하지 않은 간단한 기초 정리
[Java] # 2 - 간단하지 않은 간단한 기초 지식 정리
[Java] 예외처리
[Java] equals와 == 연산자, 그리고 hashCode
[Java] StringTokenizer & Arrays Class
[Java] 제네릭(Generics)
[Java] 컬렉션 (Collection)
[Java] 람다식에 대하여

무엇을 깨달았나?

Convention의 중요성

블로그에도 정리했듯이, 프리코스 시작할 때 가장 많이 신경썼던 부분은 컨벤션이다.
부끄럽게도, 지금껏 컨벤션을 중요하게 생각하지 못하여서 나의 깃 커밋은
온통 내 멋대로 작성한 언어 투성이다.
누군가와 협업을 할 때도 그저 알아볼 수 있는 커밋 메세지일 뿐이었지,
어떤 규칙을 정해놓고 커밋 로그를 작성하지 않았었다.
그래서 난 내가 짠 프로그램을 나중에 다시 볼 때는 그냥 냅다 오랫동안 코드만 쭉 읽고
아 이런 코드였었지! 깨닫곤 했다.
하지만 프리코스에서 컨벤션을 지키는 요구사항을 만족시키면서,
나의 그런 쓸 때 없는 코드 분석 에너지를 줄일 수 있다는 사실을 깨달았다.
커밋 로그만 보아도 아 내가 이런 기능을 이렇게 짰구나, 이런 에러를 이렇게 고쳤구나를 깨달을 수 있었다.
또한 커밋 컨벤션을 지키는 다른 사람의 코드를 보아도 그 사람이 어떤 한 기능을 구현하는데 어떤 코드를 짰는지 커밋을 통해 쉽게 파악할 수 있었다.


이건 프로그래밍을 한다면 한번쯤 봤을 법한 개발자 유머 짤인데,
프리코스를 시작하기 전,
나 또한 이 짤에 매우매우 공감하며 내 프로그래밍 인생을 대변한다 생각했었다 ㅎ

하지만 프리코스는 이런 부끄러운 나의 "돌아가기만 하면 돼!"같은
프로그래밍 철학이 잘못됐음을 깨닫게 해주었고,
이를 발견하고 컨벤션을 지키는 훈련을 통해 성장하는 발판을 마련해주었다.

문서의 중요성


위에서도 한 번 언급했듯이 "죽은 문서가 아니라 살아있는 문서를 만들기 위해 노력한다." 이 피드백을 받은 후로는 프로그래밍 전 기능 목록을 체크 박스로 작성하고,
구현한 기능 목록은 체크하고 구현하다 발견한 추가 기능도 체크하면서
프로그래밍 내내 살아있는 문서를 만들기 위해 노력했다.
이는 내게 문서화 하는 것이 얼마나 중요하고 요긴한 일인지 깨닫게 해주었다.
내가 지금 어디까지 구현을 했는지, 더 필요한 기능이 무엇인지, 놓친 예외 상황이 무엇인지
판단하는 것이 훨씬 수월하였다.

3주간 주입식 교육이 아닌 요구사항을 만족하기 위해 스스로 개념을 공부하며 적용하고,
또 내가 적용한 내용들에 따른 공통 피드백으로 내가 놓친 부분들을 돌아 볼 수 있는
이 교육 과정이 나를 정말 많이 성장시켰다.

이런 프리코스 과정이 결코 쉽지 않았지만, 고통과 노력을 통해 매일 성취감을 느끼게 되었고,
아 이맛에 프로그래밍 하는구나!를 다시 한 번 깨닫는 과정이 되었다 😙

프리코스는 내게 10개월 동안 이런 경험을 누릴 수 있는
우테코 본 교육을 더 간절하게 느끼게 되는 맛보기 과정이었다❗️

여담이지만, 기능 목록을 아이패드 사이드 카 연결로 띄워놓고 맨날 인텔리제이를 돌리느라
쉬지 않은 맥북은 매일 나와 같이 열정을 불태웠고 덕분에 3주간
손 시리지 않은 겨울을 보낼 수 있었다 ^^ㅎ

효율적인 코드를 짜자!

프리코스에서 가장 많이 배운 점은 바로 코드의 효율성이다.
특히나 2주차 피드백에서는 나의 비효율적인 코드의 문제점을 아주 날카롭게 지적하였다.
일단 나의 문제점이 가장 많이 들어난 코드 중 하나를 본다면,

public List<String> pickWinnerNameList() {
        for (int i = 0; i < cars.length; i++) {
            if (maxPosition == cars[i].getPosition()) {
                winnerNameList.add(cars[i].getName());
            }
        }
        return winnerNameList;
 }
 ...
 public void printOutputFinalWinner(List<String> winnerNameList) {
        System.out.print(OUTPUT_FINAL_WINNER_MESSAGE);
        for (int i = 0; i < winnerNameList.size(); i++) {
            System.out.print(winnerNameList.get(i));
            if (i < winnerNameList.size() - 1) {
                System.out.print(OUTPUT_FINAL_WINNER_COMMA);
            }
        }
    }

위 코드는 우승자 명단 추리고을 출력하는 코드인데,
나는 자동차의 상태 데이터를 가지는 객체에서 값을 꺼내어서 이 값이 max인지를 확인하였었다.
이는 객체의 상태를 관리하는 그 객체에게 메시지를 보내서 "너의 위치는 max가 맞니?" 이렇게 확인할 수 있는데도 말이다.
객체의 상태는 객체가 관리해야 한다. 나는 객체의 상태를 꺼내오기만 하는 문제점이 있었다.
또한 우승자를 출력할 때도 우승자 명단을 Collection으로 관리하여, java api를 사용하면
밑에 처럼 간단하며 효율적인 코드가 되는데 나는 우승자를 출력하기 위해 for문을 돌리는 아주 비효율 적인 코드를 짰다.

List<String> winners = Arrays.asList("pobi","jason");
String result = String.join(",", winners);
  • 객체의 상태는 객체만이 가지고 있을 것.
  • 배열보다는 Collection을 이용하여 java api를 적극 활용할 것.
  • 어떤 메소드를 만들 때 내가 구현하고자 하는 메소드가 이미 존재하는지 확인할 것.

이 부분들은 내가 자바 언어를 다루면서도 지키지 못했던 것들이고,
그 문제점을 피드백을 통해 깨달을 수 있었다.

앞으로

사실 3주간의 프리코스를 하면서 내내 자바의 기초적인 부분을 탄탄히 잡고 넘어가려다보니 아직 객체지향을 완벽히 이해하고 적용하지 못했던 것 같다.
때문에 미션을 제출하고 나서도 아 이건 이렇게 해볼걸,
좀 더 객체 지향적으로 할 수 있는 방법은 없었을까 하는 수많은 아쉬움을 남긴다.
또한 지금껏 개발 공부를 사랑하고 열심히 해왔다고 생각했지만,
미션을 수행하고 다른 분들을 보면서 "나는 정말 우물 안 개발자였구나..!"를 절실히 깨닫게 되었다.
나의 기준에서는 개발 공부에 몰두했다고 생각하고 나 나름대로 그 몰두의 깊이를 한정해왔다.
사실 자바도 그렇다. 학교에서 배운 이론으로 "나! 자바 쓸 줄 알아!" 이렇게 생각해왔으나, 정말 쓸 줄만 알았지 "효과적으로 다루는 방법"까지는 생각해보지 못함을 깨달았다.
프로그래밍 언어나 기술에 대해 공부할 때 deep하게 공부하지 않고 쓸 줄 아는 정도에 머물렀던 나의 문제점이 적나라하게 드러나고 그것을 깨닫는 시간이었다.
때문에 사실 프리코스 동안 정말 많은 현타를 경험했다... ㅎㅎ

하지만 이런 좌절과 후회에 머무는 개발자가 아닌 이번을 기회로 더 배우려고 부단히 노력해야 겠다는 큰 결심을 하게 되었다.
그래서 남은 기간, 또 앞으로 끝없는 배움의 즐거움을 누리며 아직 완전히 깨닫지 못한 객체 지향 언어 자바에 대해 더 심도있게 공부하며 계속해서 리팩토링을 시도하는 "너드한" 개발자가 될 것이다.

✚ 2020.12.23
프리코스 동안 다른 개발자들을 보면서 굉장히 많은 자극을 받았다.
나도 더 열심히 사는 개발자가 되기 위해 TIL 을 Github에 기록하기를 시작하였다.

프리코스를 진행하면서 jojoldu님의 블로그 글들과, 객체지향 생활체조 내용들을 보고 공부를 했다.
하지만 사실 아직 이해가 어려운 부분이 많은게 현실이다. . . ㅎㅎ
그래서 남은기간, 또 앞으로 객체지향에 대해 더 공부할 것이다.
일급 컬렉션이나 객체 지향의 원리, 이를 통한 java의 다양한 api들의 개념들 까지,
이 개념을 적용했을 때 어떤 효과를 낼 수 있는지 술술 말할 수 있을 정도로
내 머릿속에 체화되도록 공부해야겠다.

프리코스를 통해 내가 아직 갈 길 이 먼 개발자임을 느꼈다.
하지만 갈 길이 멀었다는 것은 배움의 끝이 없음을 뜻하며,
그 끝없는 배움의 과정에서 얻을 수 있는 성취감이 무한히 남아있다는 사실은
나의 프로그래밍 열정을 더 불태운다 🔥

이제 3차 미션을 제출하고, 나는 대망의 코딩테스트를 앞두고 있다.
한 미션을 수행하는데 일주일이 걸렸는데, 5시간 동안 주어진 요구사항에 따라
다 구현할 수 있을까 하는 걱정이 들면서 좀 떨리지만 🥲
3차 미션에서 내가 놓친 부분들을 다시 돌아보고, 그 개념을 테스트 전까지 익히려 노력할 것이다.
이번에 느낀 배움의 가치를 우테코 본 교육 과정 10개월 동안 누리기 위해. . .
지금껏 배운 개념들을 활용하여 최선을 다해보겠다 ⛹️‍♀️

🪐 감사합니다 우아한 테크코스 🪐


💬 이건 약간 개인적인 이야기 이지만 사실 프리코스를 기간에
갑자기 기숙사 방을 12월 내로 비워줘야 해서 자취방을 구하는 험난한 과정과,
기말고사라는 큰 일 세 가지가 겹쳐서 증맬로 바쁜 3주를 보냈었다 ㅎㅎ


프리코스 때 작성하고 이전 블로그에서 잠깐 비공개로 돌리고 까먹었었는데
좀 부끄럽지만 우테코 지원부터 프리코스까지 내가 얼마나 간절했는지를 해당 블로그에도 남기고 싶어서 그대로 긁어왔다. 
우테코 지원이 곧 시작되면서 그 시절 나를 계속 되새기게 되는데, 
아무것도 모르고 열정만 가득한 날 것의 글이지만
우테코를 지원할 누군가 어쩌다 이 글을 발견하게 된다면, 조금이라도의 동기부여와 도움이 되길 바라며