[WIL] 우아한 테크코스 프리코스 5기 회고 - 1주차

DEINGVELOP·2022년 11월 16일
0

프리코스란?

우아한테크코스의 교육 과정은 교육생에게 미션을 주고 미션 완료 후 피드백하는 형태로 진행되는데, 이 교육 방식은 기존 교육 방식과 완전히 다르기 때문에 미리 이 교육과정을 체험할 수 있는 것이 프리코스이다. 프리코스 기간에는 공통 피드백만 있는 상태에서 주도적으로 학습하고 미션을 수행하고 구현 결과를 제출해야 한다.

5기 프리코스의 취지

이번 5기에서는 우아한테크코스의 선발 과정에서 온라인 코딩 테스트가 사라지고 프리코스가 확대되었다. 기존에는 서류 접수, 온라인 코딩 테스트, 프리코스, 최종 코딩 테스트의 단계를 거쳐 지원자를 선발했다면 이번 5기부터는 온라인 코딩 테스트를 없애고 모든 지원자에게 프리코스 과정에 참여할 기회를 제공한 것이다.

사전 설명회에서 이번 5기 프리코스의 개편은 프리코스만으로도 큰 도움이 되었다고 했던 기존 지원자들의 피드백이 가장 큰 계기였다고 한다. 우아한테크코스는 ‘소프트웨어 생태계에 선한 영향력을’이라는 비전으로 소프트웨어 장인 정신을 갖춘 인재 양성을 목표로 하고 있지만, 수용할 수 있는 교육생 수가 한정되어 있어 한계가 있다는 점이 늘 아쉬우셨다고 한다.

따라서 이번 프리코스 개편을 통해 우아한테크코스의 영향력을 더욱 확대하고 더 많은 사람에게 양질의 소프트웨어 교육을 제공하고자 하였다고 한다. 즉, 단순히 선발 과정이 아닌 4주 교육 과정을 수강하는 경험을 제공하며, 이를 통해 지원자들이 향후 학습 방향을 스스로 결정할 수 있는 능력을 키우는 데 도움이 될 것이라 판단하셨다는 것이다.

인재상

  • 일반 사용자용 서비스를 개발하는 회사가 필요로 하는 역량을 키워 재교육 없이 현장의 업무를 바로 시작할 수 있는 인재

  • 프로그래밍에 대한 내적 동기를 가지고 있어 평생 자기 주도적으로 학습할 수 있는 역량을 가진 인재

  • 프로그래밍과 관련한 기본 역량 외에 다른 사람들과 소통하고 협업하면서 같이 성장할 수 있는 소프트 스킬을 갖춘 인재

교육 철학

  • 많은 지식을 전달하기 보다 효과적으로 학습하는 습관을 만드는 데 집중한다.

  • 교육 기간만 학습하기보다 평생 학습할 수 있는 기반을 만드는 데 집중한다.

  • 혼자 학습하기보다 함께 학습하는 것의 즐거움을 느끼도록 만드는 데 집중한다.



1주차 공통 피드백 및 회고

1주차에서 피드백 받았던 것 중, 가장 나에게 유의미했고 다음부터 코드에 반영하려고 생각했던 것을 기록해두고자 한다.


Pull Request를 보내기 전, 브랜치를 꼭 확인한다.

이는 최근에도 내가 실수한 경험이 있어서 매우 와닿았다. 사실, Pull Request를 보낼 때 뿐만 아니라 늘 브랜치를 확인하는 것은 중요한 부분이라고 생각한다. 그러나 특히, merge가 되는 직전 단계인 Pull Request때에는 무조건 브랜치를 확인하자.


네이밍을 통해 의도를 드러낸다.

다른 개발자들은 다른 부연 설명 없이 오로지 나의 코드만을 보고 내용을 이해해야 할 수도 있기 때문에, 개발자들의 소통에 있어 가장 중요한 활동 중 하나가 좋은 이름을 짓기라고 한다.

  • 변수 이름
  • 함수(메서드) 이름
  • 클래스 이름

좋은 네이밍을 하는 데에 시간을 투자해야 한다. 그를 통해 이름만으로도 변수/함수/클래스의 역할에 대한 의도를 드러낼 수 있을 것이다.

💡 적절하지 못한 네이밍 방식

  • 연속된 숫자를 덧붙이기(a1, a2, ..., aN)
  • 불용어(Info, Data, a, an, the)를 추가하는 방식

💡 Clean Code - 불용어란?
불용어를 계속 사용하면 중복을 만들게 된다.

  • ex: AccountInfo : Account와 혼동 가능
  • ex: BankAccoutData : BankAccount와 혼동 가능

축약하지 않는다 - 의도를 드러낼 수 있다면 이름이 길어져도 괜찮다.

= 객체지향 생활 체조 원칙 5 : 축약 금지

축약은 자칫하면 혼란을 야기할 수 있다. 대신 클래스와 메서드 이름을 한 두 단어로 유지하려고 노력하고, 문맥을 중복하는 이름을 자제하자.

예를 들면, 클래스 이름이 Order이라면 shipOrder라고 메서드 이름을 짓기보다는 단순히 ship()으로 정하면 order.ship()이라고 더욱 간결하고 명료하게 호출할 수 있다.


공백도 코딩 컨벤션이다.

if, for, while문 사이의 공백도 코딩 컨벤션이라고 한다. 이에 더욱 찾아보니, 주석, 클래스에서 변수 선언 순서 등 세세한 것까지도 컨벤션을 정하여 더 깔끔하게 작성할 수 있겠다는 판단이 들었다.


공백 라인을 의미 있게 사용한다.

공백 라인을 의미 있게 사용한다. 특히, 문맥을 분리하는 부분에 사용하는 것이 좋다.

단, 과도한 공백은 다른 개발자에게 의문을 줄 수 있다.


의미 없는 주석을 달지 않는다.

모든 변수와 함수에 주석을 달기보다는 최대한 네이밍을 통해 의도를 드러내보자. 그럼에도 불구하고 의도를 드러내기 힘든 경우에만 주석을 달아보도록 노력한다.


직접 함수를 구현하기 전에, Java에서 제공하는 API를 적극 활용한다.

이것 역시 내가 이번 주차에 잘 지키지는 못했던 부분이다. 함수를 직접 나만의 코드로 구현하기 전에 Java API에서 제공하는 기능인지 검색을 먼저 해본다. 그리고 난 후에도 Java API에서 제공하지 않을 경우 직접 구현한다.

예를 들어 사용자를 출력할 때 사용자가 2명 이상이면 쉼표(,) 기준으로 출력을 위한 문자열은 다음과 같이 구현 가능하다.

List<String> members = Arrays.asList("pobi", "jason");
String result = String.join(",", members); // "pobi,jason"

나는 이런 경우 반복문을 사용하여 string을 build했던 것 같은데, 그 코드보다 위의 방식을 활용하면 훨씬 간결하고 재사용도 편리하게 짤 수 있었겠다는 생각이 들었다.


배열 대신 Java Collection(List, Set, Map 등)을 사용한다.

Java Collections의 자료구조를 사용하면 데이터 조작시 다양한 API를 사용할 수 있다.

0개의 댓글