[우아한 테크코스 6기 - 프리코스(프론트엔드)] 회고 1: 개요
# 참여 소감
프리코스 과제는 비전공자인 나에게 성장할 수 있는 좋은 기회였다. 그동안 나의 공부는 컴퓨터의 자료 구조나 개발 패턴처럼 이론적인 뿌리가 아니라 html, css, javascript, 그리고 프레임워크 등 도구와 클론 코딩을 중심으로 배워 왔다. 따라서, 당장 눈 앞에 보이는 웹을 짜는 건 익숙하지만, 로그인 폼의 예외적 경우를 결함 없이 구현하거나 유효성 검사를 하는 등 복잡한 로직을 <좋은 코드>로 짜는 경험은 전무했다. 이렇게 코드를 짜다 보면, 작동은 하지만 유지보수나 확장이 어려운 코드를 짜게 된다. 소위, "작성한 본인도 보기 싫은 코드"다.
나같은 개발자라면 이번 과제는 좋은 기회가 되었을 것이다. 오로지 기본적인 프로그래밍 언어(javascript)로만 복잡한 로직을 구현하고 조합하며 테스트하였고 타인의 코드를 보며 좋은 개발 패턴에 대해 고민할 수 있었다.
# 난이도
프론트엔드를 기준으로, 자바스크립트 강의랑 클론 실습을 1, 2달 정도 해봤다면 해볼만 하다. 필자는 15개월 정도 공부했는데, 기간 대부분은 학업으로 공부를 보류하거나 프레임워크를 공부하는 데 투자해서 프로그래밍 지식은 전무했다. 다만, 배경 지식도 어느정도는 필요했다. 일단, 아주 기본적인 node js와 npm 지식을 요구했다. npm start가 뭔지 알고 라이브러리를 import할 줄 아는 정도는 필요하다.(라이브러리는 주최 측에서 유틸용 함수 라이브러리 하나만 사용하는 걸로 제한했다) 또한, 클래스나 this에 대한 기본지식도 필요했는데, 이 역시도 mdn에서 1~2시간 정도 투자하고 직접 해본다면 이해할만 했다.
# 프로그래밍 과정 연구하기
과제에서 요구하는 기능들은 전부 잘 구현했지만 프로그래밍 측면에서 좋은 코드를 작성하지 못해서 성장의 걸림돌이 되었다. 4번의 과제에서 이 부분의 성장은 크게 3부분으로 구성된다.
- 과제에서 요구되는 프로그래밍 사항
- 과제 결과물에 대한 공용 피드백
- 커뮤니티(디스코드) 내 과제물 공유와 피드백, 개발 지식
이는 과제를 구현하는 것 만큼이나 많은 시간을 할애해야 했다. 하지만, 과제를 진행하는 데 급급하여 부분적으로만 읽는 데 그치고 말았다. 그래서 이 글은 이들을 면밀히 살피는 데 있다. 이 과정은 먼저, 주요 키워드를 뽑은 후 더 큰 범주로 묶을 것이다. 그리고 각 범주별 키워드를 하나씩 이해한대로 정리할 예정이다. 일단, 커뮤니티 자료는 양이 방대하니 나머지 두 가지부터 살펴보자.
# 어떻게 회고를 하면 좋을까.
앞서 나는 프리 코스를 되돌아보기 위해 과제의 프로그래밍 사항과 공통 피드백을 돌아보겠다고 했다. 분석 대상은 정해졌으니, 어떤 식으로 분석할지도 생각해보자.
이 문제는 프리코스 OT를 감안하여 4가지 카테고리로 구분했다.
- 좋았던 점 혹은 성장했던 점
- 아쉬웠던 점
- 보완할 수 있는 방안
- 코드 리뷰
그 외에도 인상깊게 들었던 점 몇 가지가 있다. 디스코드를 보면 mvc나 객체지향 패턴 같은 전문적인 내용들이 다수 나오는데, 이에 대해 진행자 분께서는 생소한 지식을 무작정 읽고 따라가기 보단 자기 속도에 맞게 습득해가는 게 더 중요하다고 했다. 그러니 새로운 키워드는 전문적인 용어로 말하기 보단 내 식대로 해석하고 이해하여 작성하려 한다.
chat GPT에 대해서도 많은 질문이 올라왔다. 특히, 이걸 이용해서 프리코스 과제를 작성해도 되냐는 말이 있었는데, 이에 대해서는 chat GPT를 잘 활용하는 것도 능력이고 현업에서도 이미 많이 활용하고 있다고 언급했다. 빈약한 코딩 실력이라면 chat GPT로 보완 가능하지만 숨길 수는 없으며 결국은 5시간 정도 안에 치뤄질 최종 코딩 테스트에서 한계가 드러날 것 같다.
요약
프리코스는 기본 프로그래밍 언어로 복잡한 로직을 구현하고 좋은 코드를 위한 프로그래밍 패턴을 고민할 수 있던 기회였다. 나처럼 프레임 워크 같은 도구 중심 학습을 하던 이에게는 추천하고 싶다.
난이도는 자바스크립트를 두달 정도 다뤄본 수준이면 될 것 같다. 배경 지식은 간단한 node js와 npm, class 정도면 충분해서 크게 고려할 필요는 없었다. 과제 통과를 위해 필요한 기능 요구는 크게 어렵지 않았지만 시간은 꽤나 많이 걸렸고 프로그래밍적으로도 좋은 코드를 짜려면 공부를 많이 해야 했다.
나는 기능 요구는 했으나 프로그래밍 공부에 충분한 시간을 할애하지 못했고, 이 부분에 대한 재공부를 글로 작성한다. 나와 비슷한 환경에 있는 다른 개발자에게도 도움이 되길 바란다.