우아한 테크코스 2기 프리코스 회고

ds_chanin

·

2019. 12. 15. 05:11


우아한 테크코스 2기 프리코스를 마치며

지원

2019년 초.

우아한 테크코스(우테코) 1기가 모집을 진행했었습니다.
정말 정확히 모집을 시작한 시기는 잘 기억은 나지 않습니다만, 아마 3월 초정도 였던것 같습니다.

 

제가 다니고 있는 학교는 졸업작품을 반드시 제출해야만 졸업을 할수 있었고 3학년 2학기부터 4학년 1학기 까지 총 1년을 졸업작품을 발표하기 위한 과정이 있었습니다.
그리고 우테코는 제가 4학년 1학기 졸업작품의 절반을 진행하고 있을때 처음으로 모집 공고가 나와 안타깝게도 지원을 할 수 없었습니다.

 

 

진짜 하고싶었는데...

 

그러다 10월에!!
우테코 2기의 모집 공고가 나오게 됩니다!

 

 

 

1기의 과정이 1년정도 였던걸 감안하면 당연히 비슷한 시기에 모집공고를 할 줄 알았는데 10월에 2기 모집 공고가 나오다니!
게다가 학교생활도 널널해진 터라 신청을 하는데 학교와 관련된 제약 조건도 없었습니다!

자기소개서

공고를 확인하고 바로 자기소개서를 제출하기까지 2일이 걸렸습니다.
지금 생각해보면 너무 들뜬 마음에 자기소개서를 많이 다듬지 않고 호다닥 제출했습니다.
우테코를 지원한다는거 자체가 너무 좋아서 제출을 빨리하고 싶었던것 같습니다. ㅎㅎ

 

자기소개서에 적어야 하는 항목은

  • 자신의 프로그래밍 역량
  • 프로그래머가 되려는 이유
  • 몰입을 통해 일정 수준의 결과물을 만들어 낸 경험
  • 참여하려는 이유

교육을 목적으로한 과정이기 때문인지, 보통 기업들이 요구하는 항목들과도 다른 모습을 보여주었습니다.

자기소개서 문항을 적어 내려가는데 정말 제 얘기를 할 수 있고, 스트레스를 받지않는 글쓰기는 처음이었습니다.
이처럼 막힘없이 써내려 갈수 있고 진짜 자신의 이야기를 할 수 있도록 질문을 해주는것부터 우테코가 저를 성장하도록 도와줄 수 있을거라는 확신이 들었습니다.

코딩 테스트

 

 

일정에 맞춰 자기소개서를 제출한 모든 인원이 코딩 테스트를 보게 됩니다.
7문제를 4시간동안 풀어야 했고, 문제의 난이도는 그렇게 어렵지 않았던 것 같습니다.


시뮬레이션 문제가 많이 나왔고, 저는 최대한 책임을 나누어 객체에게 할당해 가며 풀려고 했습니다.
물론 4시간이라는 시간 제약이 있었기에 지금 다시보면 정말 끔찍한 설계와 코드가 난무하고 있습니다..

 

7문제를 전부 풀기는 했지만 주어진 테스트 케이스를 통과한다고 히든 케이스까지 모두 맞았다는 보장은 없었기에 걱정되는 마음으로 결과를 기다렸고!

 

 

 

Yeah ! ! !

 

11월 20일, 코딩 테스트를 치른지 11일 후에 합격 메일을 받게 되었습니다!
일주일 뒤에 바로 프리코스가 진행된다고 해서 바로 다음과정을 위해 준비를 해야했습니다.

그리고.. 최종 테스트를 위해 친구들과 유럽 여행을 가기위해 예약해 두었던 비행기표를 취소하고 다시 예약했습니다..

 

 

 

내 수수료 30만원...ㅠㅠ

 

코딩 테스트를 통과했기에 프리코스를 진행하게 되었고 프리코스 최종 시험일(12월 21일)이 출국일과 겹쳤습니다.

우아한 프리코스

코딩 테스트를 통과한 다음주 부터 바로 우아한 프리 코스가 진행됩니다!
프리 코스는 총 3단계로 코딩 테스트에서 치른 알고리즘 문제와 달리, 요구사항이 주어지면 요구사항 맞도록 Java 프로그램을 작성하는 과제가 주어졌습니다.

1단계. 숫자 야구 게임

첫번째 과제는 숫자 야구 게임이었습니다.

 

 

요구사항은 우리가 아는 숫자 야구 게임과 같았습니다.
하지만 기능 요구사항이 아닌 프로그래밍 요구사항이 추가되었습니다.

  • 자바 코드 컨벤션 지키기
  • indent 제약
  • 3항연산자 제약
  • 함수가 한가지 일만 하도록 하기

위 프로그래밍 제약사항은 평소에도 신경을 쓰며 공부를 해온 부분이라서 크게 어려움으로 다가오지 않았습니다.
그래서 '구조를 잘 잡자!' 라는 마음 가짐을 가지고 과제에 임했습니다.

그렇게 시간을 들여 잡힌 구조는 다음과 같습니다.

 

 

 

 

BaseBallController 에 존재하는 main 메소드 부터 게임이 진행되도록 하였고 패키지간의 사이클이 없도록 구현을 하는데 초점을 두고 작성을 했습니다.
하지만 코드의 구현은 아쉬운 점이 많았던 것 같습니다.
그 중 몇가지만 얘기하면

첫째로 구조는 생각한 대로 잘 나누었지만 실제 코드의 내용은 구조를 제대로 따라가지 않은 모습이었습니다.

 

 

 

 

빨간색 네모 안에 있는 코드에서 일급컬렉션인 BaseBalls를 만들어 놓고 제대로 활용하고 있지 못한 모습을 보였습니다.
메세지를 전달해서 일급컬렉션이 결과를 만들어 내도록 작성할 수 있는 부분인데 놓쳤던게 아쉽습니다.

두번째는 추상화가 덜 되었던게 아쉬웠습니다.

 

 

 

 

while블럭을 보고 이해가 잘 가시나요?
작성한 제가 지금봐도 이해가 잘 안갑니다....ㅠㅠ
main 메소드에서 저만큼의 while 루프를 노출시킬 필요가 없었고, 메소드의 네이밍도 아쉬운 모습입니다.
차라리 BaseBallGame.start()와 같이 가리는게 훨씬 나았을 것 같습니다.

 

2단계. 자동차 경주 게임

두번째 과제는 자동차 경주 게임이었습니다.

 

 

숫자 야구 게임과 달리 자동차 경주 게임은 이름만 듣고는 어떠한 요구사항이 존재할지 예상이 쉽게 되지 않는 미션입니다.

2추자 미션은 당연히 1주차 미션보다 어려운 문제가 나올것이라 예상했는데 구현의 난이도는 개인적으로 숫자 야구 게임이 더 어려웠던 것 같습니다.


구조에 대한 설계도 지난번 미션보다 빠르게 끝났기에 문서 작성에 조금 더 신경을 썼습니다.
이전 숫자 야구 게임에서는 README 문서를 신경써서 작성하지 않았지만,

이번 문서는 객체들에게 알맞는 요구사항을 찾기 위해
자동차 경주 게임이라는 협력관계를 풀어나가기 위한 책임들을 각 객체에게 분리하여 작성하였고

해당 책임들도 객체가 아는 것과 하는 것으로 나누어 작성하였습니다.

 

 

2주차 README의 일부분


제대로 나눈것에 대한 확신은 없지만 객체지향의 사실과 오해를 읽고

의식적으로 연습을 해야겠다 라는 생각이 들었던 부분이라 시도를 해보았습니다.

3단계. 블랙잭

프리코스 마지막 과제는 블랙잭입니다.

 

 

미션 제목 이미지도 점점 진화시켜서 보내주셨습니다 ㅎㅎ..

 

숫자 야구 게임, 자동차 레이싱 게임에 이어 블랙잭 게임입니다.
블랙잭... 단 한번도 해본적 없는 게임입니다. 도박?

 

물론 기능 요구사항을 같이 보내주시기 때문에 구현해야할 기능에 대해서 파악하는데 문제는 없었습니다.
하지만 숫자 야구 게임과 같이 알고 있던 도메인을 구현하는 것과 전혀 모르는 도메인을 구현 해야하는 것은 심리적 난이도가 높게 다가왔습니다.

 

요구사항 문서를 작성할 때도 2주차 때와 마찬가지로 책임을 분리하여 작성을 하고 객체 설계를 할 때까지는 '잘 할수 있겠지!' 라는 마음가짐으로 시작을 했습니다.
하지만 생각보다 예상치 못한 객체들이 생성이 되었고 제가 예상했던 객체는 오히려 필요가 없는 객체가 되서 설계에서 사라지기까지도 했습니다.

 

 

 

아쉽습니다..

 

처음에 생각했던 구조와 다른 모습이 완성이 되어서 인지 구현하는데 애를 좀 먹었었습니다.
다행인 점은 메인이 되는 도메인의 구조는 예상 범위 내 였기에 수월했던 것 같습니다.


하지만 클라이언트에게 노출되는 view 를 위한 객체들이 생각보다 많이 생성된점은 예상하지 못했던 점이었습니다.

예상치 못한 객체들의 출현에 코딩 중간 중간 리팩토링 하는 과정이 섞이게 되었고, git commit comment를 작성하는데 신경을 많이 썻던 것 같습니다.

 

 

 

맨 위가 과거, 맨 아래가 마지막입니다.

 

3일에 걸쳐 구현을 했기 때문에, 흐름이 끊기면 이전에 내가 어디까지 했는지에 대한 파악도 중요했습니다.
따라서 히스토리를 체계적으로 관리를 해야했기 때문에 git commit 에 대한 컨벤션을 찾아보았고
Angular.js 에서 사용하는 컨벤션을 일부분 변형하여 사용하였습니다.

 

 

 

원본 컨벤션은 여기를 클릭하세요!

 

덕분에 이전 작업까지 내가 어떠한 흐름으로 코딩을 해왔는지,

다음은 어느 부분을 작업 해야 하는지에 대한 파악이 쉽고 빠르게 되었던것 같습니다.

혼자 작업할 때 크게 신경쓰지 않았던 부분인데 의식을 하고 작성하는 연습을 하니 정말 좋은 것 같습니다!
그리고 팀 단위로 작업을 할때 더 큰 힘을 발휘 하는 것은 당연 할 것 같습니다!

피드백

1주차, 그리고 2주차에 대한 피드백 문서도 과제 메일과 함께 전달을 받았습니다.
지원자들은 메일로 자신의 미션 제출을 알리게 되어있었고, 그 때 미션을 진행하며 느낀점에 대한 점을 적도록 되어있었는데
지원자들의 많은 질문중 공통적인 부분들에 대해서 알려주시는 모습이 굉장히 인상깊었습니다.
보통 기업이 줄세우기에 급급한 모습이라면, 우테코는 정말 더 나아지는 지원자들의 모습을 보고 싶어하는구나 라고 느꼈습니다.

 

 

 

문서 작성시기는 3주차 과제를 제출한지 얼마 안되서 3주차 피드백 문서는 이미지에 없습니다.

 

피드백을 통해 과제를 하며 이전에 놓쳤던 부분과 궁금한 점들을 해소할 수 있어서 좋았고
단순히 과제를 해결하는 것이 아닌 스스로 발전하고 있다는 느낌이 들기때문에 더 좋았던 것 같습니다.

최종 테스트를 기다리며

3주차 미션까지 제출한 지금, 이제는 마지막 프리코스 최종 테스트만을 남겨두고 있습니다.
3주간의 미션을 진행했던 방식대로 마지막 미션을 진행할 것이란 예상이 됩니다.


평소에 알고리즘을 풀때에도 지금과 같은 방식으로 푸는 연습을 자주 해와서 인지 과제를 진행하는데 크게 어려운 점이 없었기에 자신감이 아예 없지는 않습니다만, 그렇다고 실력이 좋은 것은 아니기에 방심하지 않고 시험에 임할 것입니다.

 

과제를 수행하며 3주가 어떻게 흘렀는지 모를정도로 빠르게 흘렀고 그만큼 재미도 있었습니다.
재미있게 느낀 만큼 제가 찾아보며 공부한 부분도 있었으니 성장도 했으리라 믿습니다.

프리코스 과정을 겪으면서 고민하고 공부하고 성장한 것도 많은 의미가 있고 좋았습니다.

 

최종테스트의 발표 결과가 유럽에 있을때 나오던데 열심히 노력한 만큼 기쁜 마음으로 귀국할 수 있으면 좋겠습니다.

처음 쓰는 회고라 횡설수설하며 썼는데 끝까지 읽어주셔서 감사합니다!