취업

[우아한테크코스 4기] 프리코스 및 최종코딩테스트 후기

  3주 간의 프리코스와 최종 코딩테스트가 엊그제 마무리되었다. 최종코딩테스트에서 모든 기능을 구현하지 못했고, 심지어 테스트코드도 절반만 통과했다. 테스트 종료 후 끝났다는 후련함과 아쉬움이 함께 밀려왔다. 그러나, 한달 동안 나 스스로도 많이 성장했다고 느낀 부분이 있기 때문에 그것들을 기록으로 남겨본다.

  

  

최대한 많은 지원자에게 성장의 기회를 제공한다.

  프리코스는 1주차 함수의 분리, 2주차 클래스의 분리, 3주차 여러 클래스의 분리라는 테마로 진행된다. 시간이 지날수록 난이도가 점점 상승한다. 특히 3주차와 최종 코딩테스트는 2주차에 비해 10배 이상 어렵다고 느껴졌다.

  

프리코스에서 가장 인상적이었던 부분은 명확한 해답을 제공하지 않는다는 점이다. 각 미션마다 요구사항과 제약사항이 주어질 뿐이다. 기능 요구사항에 기재되지 않은 내용은 스스로 판단하여 구현한다. 라는 설명에서 알 수 있듯이 최소한의 제약 외에 다른 것들은 모두 지원자 스스로가 판단해야만 한다. 그리고 매 주차마다 공통 피드백이 주어진다.

  

이 점이 나에게 굉장히 어색하게 느껴졌다. 일반적인 대학교 수업을 떠올려보면 교수님이 강의를 3시간동안 진행한 다음 예제를 풀어보며 복습하는 방식이다. 이에 반해, 프리코스는 예제만 주어지고 내게 부족한 지식은 스스로 학습하는 방식이기 때문에 처음 적응하는데 시간이 걸렸다. 프리코스를 수행하면서 우테코가 왜 이런 교육 방식을 택했는지 조금 알 수 있었다.

  

우아한테크코스는 한사람의 몫을 온전히 해낼 수 있는 개발자를 양성하는 것이 목적이다. 한사람의 몫을 해낸다는 의미는 현장에서 문제를 마주했을 때 해결해낼 수 있다는 것을 말한다. 그래서 주입식 교육이 아닌 스스로 부족한 지식을 깨닫고 습득해나가는 방식을 택한 것 같다.

  

  

enum 클래스

  내가 프리코스를 진행하면서 스스로 깨달았던 지식 중 하나는 enum 클래스이다. 『이것이 자바다』로 자바 기본 문법을 학습할 때는 enum 클래스는 단순히 String을 열거해놓은 것이라고만 생각했다. 그동안 실제로 프로젝트를 하면서 enum 클래스를 사용할 일은 거의 없었다. 이번 프리코스 미션을 수행하면서 나는 enum 클래스를 사용하면서 얻는 이점을 몸소 느꼈다.

    

  

다음과 같은 enum 클래스를 예로 들어보자.

public enum Course {
  BACKEND("백엔드"),
  FRONTEND("프론트엔드");

  private String name;

  Course(String name) {
    this.name = name;
  }
}

Course라는 enum클래스는 BACKEND와 FRONTEND를 갖고 있다. 물론, String course로 직접 선언해도 상관없다. 그러나 enum으로 정의하면 'if (course.equals("백엔드") || course.equals("프론트엔드"))' 처럼 course를 매개변수로 사용하는 메소드마다 검증하는 코드를 구현할 필요가 없어진다.

enum 클래스를 통해 코드의 가독성이 좋아질 뿐만 아니라  데이터의 신뢰성이 생기는 이점을 얻을 수 있다.

  

  

만약 course가 String이었다면 다음 Crew 객체에서도 현재 들어온 course 데이터가 "백엔드" 또는 "프론트엔드"인지 검증하는 불필요한 코드를 작성해야만 한다.

public class Crew {
   private Course course;
   private String name;

   public Crew(Course course, String name) {
      this.course = course;
      this.name = name;
   }
}

  

이외에도 getter를 사용하지 않고 객체에 메시지를 보내라와 같이 좀 더 객체지향적인 코드로 나아가는 방법들을 프리코스 기간 동안 정말 많이 배웠다. 200명이 넘는 지원자에게 3주간의 프리코스 기회를 제공하는 것은 기업으로서는 큰 부담일텐데, 좋은 개발자로 성장할 수 있는 기회를 얻었다는 것에 정말 감사함을 느낀다.

  

  마지막으로 우아한테크코스를 진행하면서 내가 가진 지식에 겸손함을 갖게 되었다. 미션이 끝나고나서 다른 지원자의 코드를 봤었는데, 다들 내가 미처 생각지 못한 방식으로 가독성 좋은 코드를 구현하셨다. 나도 나름 잘한다고 생각했는데 우물안 개구리였다는 걸 새삼 느꼈다. 그리고 이런 수준 높은 지원자와 함께한다면 10달 동안 분명 많이 성장할 수 있겠다고 생각했다.

 

이 글을 읽는 사람 중 우아한테크코스에 참여할 기회가 있는데 망설이는 사람이 있다면 꼭 참여해보라고 말해주고 싶다. 약 한달 동안의 시간이 취준생에게 큰 부담일 수 있다는 것을 나도 안다. 그러나 스스로 미션을 해결하고 한 단계 높은 수준으로 성장하는 과정은 쉽게 얻을 수 없는 값진 경험이 될 것이라 장담한다.