안녕하세요.
우아한테크코스 7기 프론트엔드 지원자 이지인입니다.
저처럼 노베이스인 분들은 어떻게 우아한테크코스를 준비해야하나 고민이 되는 분들도 많으실 것 같아요.
벨로그에 제가 어떻게 준비하고 있는지 하나씩 올려보도록 하겠습니다 :)
최종 합격을 하게 되면, 이 글이 많은 사람들에게 보여지겠죠?
그만큼 저도 더 열심히 준비해보겠습니다!
먼저, 저는 프리코스 전체 이루고 싶은 목표를 잡고, 그 목표를 이루기 위한 각 프리코스 (1, 2, 3, 4) 마다의 수치화된 목표를 세웠습니다.
수치화된 목표와 프리코스 1에서는 어떻게 달성했는지, 그리고 프리코스 1의 회고에 대해서 나눕니다.
감사합니다. 😊
목표: 최종적으로 프리코스 4에서는 GPT 사용을 완전히 중단하며, 공식 문서와 구글링을 활용해 스스로 문제를 해결한다.
수치화 지표:
목표: 최종적으로 프리코스 4에서는 테스트를 모두 통과(All pass)할 때까지의 개발 소요 시간을 10시간 이내로 줄이며, 더 효율적으로 작업한다.
수치화 지표:
목표: 다른 사람이 보았을 때 한눈에 이해되는 코드를 작성하여 협업을 효율적으로 한다.
수치화 지표:
목표: 최종적으로 프리코스 4에서는 기능 단위로 커밋을 작성하고, git 커밋 메시지 컨벤션을 준수하는 습관을 들인다.
수치화 지표:
목표: 공유를 위해 어려운 개념을 정리하여 매 프리코스마다 1개 이상 티스토리에 업로드하는 것을 목표로 한다. PR 본문에 해당 티스토리 링크를 첨부해 다른 사람들이 참고할 수 있도록 한다.
수치화 지표:
목표: 1:1 코드 리뷰를 교환하며 피드백을 통해 더 깊이 있는 학습을 이어간다.
수치화 지표:
목표:
달성 여부:
4L 회고록을 통해 일주일간 프리코스 1을 진행하면서, 제가 느낀 생각과 경험을 중심으로 회고를 진행하였습니다.
프리코스 1에서는 몰입할 수 있는 환경에서 신나게 개발할 수 있어서 좋았습니다. 입학설명회에서 포비 코치님이 말씀하셨던 몰입의 즐거움을 이번 일주일간 직접 느낄 수 있었습니다. 이전에는 8개월 동안 직장과 병행하며 하루 3시간씩 개발 공부를 했기 때문에 깊게 몰입하기에는 한계가 있었습니다. 하지만 이번 주는 개발에만 집중하면서 성장 속도가 빠르게 올라가는 것을 느꼈습니다. 처음 커밋을 하였기 때문에 처음에는 git add . / git status / git commit -m "" / git push origin "" 을 직접 코드를 보면서 작성했는데, 점점 외워서 스스로 코드를 보지 않고 명령어를 입력하기도 하였습니다. 그렇다 보니 계속 더 기능을 구현하고 싶고 리팩토링을 하고 싶었습니다. 이렇게 문제를 해결해나가는 과정이 정말 재미있었습니다. 이러한 식으로 우아한테크코스에서 학습을 하고 싶다면 꼭 합격해서 9개월간 개발에만 몰입하며 즐거움을 얻고 싶다는 생각이 더 강해졌습니다.
리팩토링을 해볼 수 있어 좋았습니다. 매일 잠자고 밥 먹고 운동 가는 시간 외에는 개발에만 몰입하다 보니 금요일에 테스트 코드를 통과하게 되었습니다. 그러다 보니 토요일부터 리팩토링을 하는 시간을 가질 수 있었습니다. 리팩토링을 해보며 제가 직접 만든 함수명, 파일명을 더 가독성 있게 수정도 해보고, 한 번에 이해가 되는지 보기도 하였습니다. 함수의 기능이 2개 이상 있는 함수도 발견하여 함수를 2개로 나누기도 하였습니다. 이런 경험을 처음 해보다 보니 신기했고, 제 코드를 더 깔끔하게 하고 싶다는 욕심이 들었습니다.
GPT 사용을 줄이고 구글링으로 문제를 해결하려고 노력한 것도 뿌듯합니다. 이번 7기 프리코스 시작 전에 이전 기수인 6기의 프리코스 1, 2를 풀어보았는데, 막힐 때 30분 구글링을 해도 안 되면 GPT를 사용했습니다. 그게 습관이 되니 구현은 빨리 되는데 실력 부분에서 성장의 한계가 있다고 생각했고, 이번 프리코스 1에서는 아주 기본적인 학습이 가능한 부분만 GPT를 사용하는 것이 목표였습니다. 예를 들어, 화살표 함수에 대해서 처음 이번 프리코스 때 사용하게 되었습니다. function () {} 함수만 존재하는 줄 알았는데 신세계였습니다. 처음에는 가독성 때문에만 쓰는 줄 알았는데, 더 구글링하며 공부를 해보니 화살표 함수의 기능 중 일반 함수와 'this'에 대한 개념 자체가 다르다는 것을 알게 되었습니다. 이렇게 스스로 공부하며 정리하다 보니 더 배움의 즐거움을 느끼게 되었습니다.
git을 잘 못 다뤄 모든 커밋이 날아가서 다시 복구하는 시간을 가졌습니다. 처음에는 git commit에 예전 저의 git 아이디와 현재 아이디가 병합이 되어 두 명이 깃 허브에 push를 하는 것처럼 보이는 문제를 해결하려고 했습니다. 이 문제를 GPT로 해결하려 했지만, 제가 GPT가 알려준 명령어를 제대로 이해하지 못한 채로 명령어를 맹목적으로 입력하였습니다. 그러다 갑자기 30여개의 깃 허브이 엤는 커밋이 삭제되는 상황이 발생했습니다. 너무 당황스러웠지만, 침착하게 명령어를 공부해 보며, 다행히 복구할 수 있었습니다. 이 경험을 통해 터미널 명령어를 제대로 이해하지 않은 상태에서 명령어를 입력하는 것이 매우 위험하다는 것을 깨달았습니다.
GPT 사용을 최대한 줄이려고 노력했으나, 에러가 발생했을 때 사용한 적이 있었습니다. 터미널에 npm run start 를 입력하여 실행할 때는 문제가 없었는데, npm run test 를 돌리면 계속해서 테스트 1개가 fail로 뜨는 상황이 발생했습니다. 30분 넘게 구글링을 해도 해결하지 못해 답답한 마음에 에러 메시지를 GPT 에게 물어보았습니다. 그런데 너무나 단순하게 띄어쓰기 하나 때문에 테스트 코드가 fail이 떴다는 것을 알게 되었습니다. 조금만 더 구글링을 했다면 발견할 수 있었을 텐데 하는 아쉬움이 있었습니다. 테스트 코드의 에러 메시지에 대해 직접 공부해야 다음부터는 GPT 도움 없이 스스로 테스트 코드의 fail을 해결할 수 있다는 생각이 들었습니다.
다른 사람이 처음 봐도 한 번에 이해할 수 있는 가독성 있는 코드를 만드는 것이 어려웠습니다. 처음에는 함수의 의미를 직관적으로 전달하기 위해 이름을 최대한 구체적이고 길게 적었습니다. 그러다 보니 함수명이 지나치게 길어지는 문제가 발생했습니다. 저는 구체적인 함수명을 사용하면 타인도 쉽게 이해할 것이라고 생각했지만, 실제로는 한눈에 이해되지 않는다는 피드백을 받았습니다. 이는 함수명이 충분히 명확하지 못한 부분에서 비롯된 것이었습니다. 또한, 기능별로 커밋하려다 보니 커밋의 개수가 너무 많아지는 문제가 생겼습니다. 처음 커밋을 하다보니 일단 많이 해보자는 생각을 하게 되었습니다. 하지만 이렇게 했을 때 '다른 사람이 내 커밋을 쉽게 이해할 수 있을까?' 라는 고민이 들었습니다. 커밋 컨벤션에서 scope를 어떻게 설정해야 할지 몰라 나름대로 분류해 작성했지만, 그 결과 바로 이해되지 않는다는 피드백을 받게 되었습니다.
터미널에 명령어를 입력할 때는 GPT나 구글링으로 알게 된 것을 맹목적으로 치지 않고, 하나하나 그 의미를 공부하며 정확한 명령어만 입력해야 한다는 것을 배우게 되었습니다. git을 잘못 다뤄 깃허브의 커밋이 전부 날아가는 경험을 하면서, 그제야 제가 입력한 명령어의 의미를 이해하기 시작했습니다. 특히, --force 명령어가 매우 위험하다는 것도 깨달았고, 앞으로는 신중하게 사용해야겠다고 생각했습니다. 이 외에도, git commit -m 뒤에는 짧은 커밋 메시지를 적고, git commit 명령어만 입력하면 긴 커밋 메시지를 작성할 수 있다는 것을 하나하나 공부하며 알게 되었습니다.
구글링의 중요성을 배우게 되었습니다. GPT를 사용하지 않고 테스트 코드에서 fail이 발생하면 에러 메시지를 제가 이해해야 다음에도 GPT 없이 테스트 코드의 문제를 해결할 수 있다는 것을 알게 되었습니다. GPT를 사용하지 않고 구글링하며 스스로 학습했을 때 더 오래 기억에 남고 학습 효과가 좋다는 것도 깨달았습니다. 오히려 이렇게 했을 때 몰입도 더 잘 되었습니다.
함수명과 파일명 네이밍의 중요성을 알게 되었습니다. 코드 리뷰를 받아보니 함수명에 일정한 규칙이 있다는 것도 깨달았습니다. 예를 들면, '함수 이름은 동적으로 작성하기', 'true/false를 판별하는 함수 이름 앞에는 is를 사용하기' 와 같은 것들 입니다. 이 두 가지 규칙만 적용을 했을 뿐인데, 제가 봐도 제가 작성한 코드가 더 쉽게 이해되었습니다. 또한, 리팩토링을 하면서 ‘읽기 좋은 코드가 좋은 코드다’라는 책을 읽으며 공부했는데, 제가 만든 변수명, 함수명, 파일명이 모호했다는 것을 깨달았습니다. 그래서 다른 사람이 제가 작성한 코드를 한 번에 이해하기 위해서는 단어 구체적인 단어 선택이 중요하다는 것을 배웠습니다.
앞에 회고록에서 회고한 것을 포함하여 원래 제가 설정한 목표와 통합하여 목표 정리를 하였습니다 .
1. GPT 사용 줄이기
2. 개발 시간 단축
3. 터미널 명령어 학습 후 사용
1. 클린 코드 작성
2. 가독성 좋은 커밋 작성
1. 배운 내용 정리 및 공유
2.코드 리뷰 교환