Just Do IT!

[우아한 테크코스] 프리코스 1주차 회고 본문

우아한 테크코스 프리코스

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

MOON달 2023. 10. 27. 14:32
728x90
왜 프리코스를 하지?

에 대한 질문을 나에게 해봤다. 생각보다 오랫동안 고민했는데 바로 취업과 공부 더하기 사이에서 고민을 오래 했기 때문이었다. 솔직히 캠프 끝나고 학교와 병행하며 정신없이 취업 준비 했던 게 나에게는 별로 도움이 되지 않았던 것 같다.

학교 다니면서 이력서 쓰고 어딘지 잘 모르는 회사에 지원하고 면접 제의가 오면 뒤늦게 준비하고...

뭔가 중요한게 있는데도 중요한 걸 놓치고 상반기를 보낸 기분이었다.

그래서 7-8월에는 동아리를 한다는 핑계로 좀 쉬면서 보냈고 하반기 역시도 그렇게 바쁘게 취업 준비를 하고 싶지 않았다.

 

그래도 나를 잡아줄 무언가는 필요했고 그때쯤 우테코 OT 관련 광고를 보았다. 사실 우테코는 작년부터 하고 싶었던 부트캠프 중 하나였다. 그런데 프리 코스와 코딩 테스트에 지레 겁을 먹고 지원조차 하지 않았던...ㅋㅋㅋㅋ 그러다가 이제는 한 번 도전해보고 싶다는 생각이 들어서 마감 이틀 전까지 서류를 써서 지원했다. 심지어 첨삭도 받았다! ㅋㅋㅋ

 

아무튼 올해 프리코스는 서류 지원하고 모든 사람들이 참여할 수 있었기에 다행이다는 생각을 가지고 1주차 메일을 접하게 되었다. 이전 기수들의 블로그 후기들을 보면 1주차에는 코딩테스트 문제 같은 작은 문제들이 여럿 나왔다고 하는데, 이번에는 1주차부터 숫자 야구였다.

 

 

 

 

 

 

 

1주차 숫자 야구 

https://github.com/woowacourse-precourse/javascript-baseball-6

 

GitHub - woowacourse-precourse/javascript-baseball-6

Contribute to woowacourse-precourse/javascript-baseball-6 development by creating an account on GitHub.

github.com

 

매주 목요일 15시에 과제 관련 메일이 온다. 그릭 지난주 목요일, 메일을 받고 나서 본격적으로 과제를 열어보게 되었다.

숫자 야구가 프리코스에 나온다는 건 알고 있었지만, 우테코에 지원해야겠다는 다짐을 너무 늦게 해서인지 이전 기수들의 후기들밖에 보지 못했다. 풀어보면서 공부해보고 싶었는데, 그건 좀 아쉽다.

 

메일을 받고 당일 저녁에 바로 내 깃허브에 fork 해오고 문서를 천천히 읽어봤다.

바닐라 자바스크립트라니...!!

리액트와 타입스크립트에 익숙해진 나에게는 놀라운 소식이었다.

(물론 프리코스가 순수 자바스크립트인 것은 알고 있었지만 그거랑 그거랑은 다름...!!)

 

그리고 나에게 닥친 테스트.

테스트 코드 관련 면접 질문도 받아보고, 테스트 코드에 관한 중요성은 익히 들어 알고 있었지만, 실제로 해보지 않아서 뭔가 설레이는 기분이었다.

 

코딩테스트를 준비하는 것과는 다른 기분이었달까. 더군다나 최근 코테 준비를 소홀히 하고 있었어서 나에겐 아주 좋은 공부할 기회였다.

 

 

 

 

 

 

 

본격적으로 과제하기

그렇지만 언제나처럼 시간은 내 마음대로 흘러가지는 않았다.

주말에는 다른 기업의 코딩테스트를 준비하느라 바빴고, 이번주에는 감기 몸살에 걸려버렸다.

결국 나에게 주어진 시간은 고작 2일 반이었다.

 

화요일날 정신을 차려서 남은 과제를 완료하고 제출하고 보니 화요일 저녁이었다.

결국 이번 1주차 과제는 하루 안에 완성한 셈인데...솔직히 너무너무 아쉬웠다 ㅠㅠ

 

공부하면서 하긴 했다만....2주차에는 이러지 말아야지, 하면서 회고록을 남기는 거기도 하다. ㅋㅋㅋㅋ

 

 

 

우선은 docs 폴더에 나만의 readme를 작성했다.

사실 이건 과제를 받고 난 뒤에 구현할 기능 목록과 커밋 메세지를 가장 먼저 작성했긴 하다. (지난주 목요일 저녁에)

 

문서 정리에 대한 건 가장 중요한 거기도 하고, 커밋 메세지는 항상 내가 프로젝트를 할 때마다 공유 문서에 적어놓음에도 항상 까먹기 때문에....ㅋㅋㅋ나를 위해 작성해두기로 했었다.

 

숫자 야구는 간단한 듯 보이면서도 구현해야 할 게 제법 있었다. (나만의 생각일수도?)

컴퓨터가 받는 3개의 숫자(랜덤), 사용자가 입력하는 3개의 숫자

그리고 그 둘을 비교하고 볼/스트라이크 판별

게임 종료 관련

마지막으로 에러 처리까지.

 

솔직히 처음에는 바닐라 자바스크립트로 해야 하는 게 너무 막막했다.

그래서 무작정 깃허브로 이전 기수들이 작성했던 코드들을 참고하기도 하고 블로그 회고글을 꼼꼼히 읽기도 했다.

큰 그림부터 안그려져서 좀 오래 걸렸다.

 

 

 

 

 

 

 

class와 this

이전에는 class로 구현해본 적이 없었다. 항상 함수를 사용했고 기능하마 작은 함수로 컴포넌트화하면서 했는데 class는 해본적 없어서 사실 그게 가장 당황스러웠던 것 같다.

 

그렇지만? 그렇다면 구글링 해야지... class에 대해 구글링해봤다.

https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/Classes_in_JavaScript

 

Classes in JavaScript - Web 개발 학습하기 | MDN

OOJS에 대한 개념을 설명했으니, 이 글에서는 부모 클래스에서 자식 클래스를 상속하는 방법을 알아봅니다. 덤으로 OOJS를 구현하는데 몇 가지 참고사항도 있습니다.

developer.mozilla.org

 

이 문서를 보기도 하고 간단하게 class로 구현한 자바스크립트 코드를 보면서 공부해봤다.

그리고 나서 든 또다른 의문. this를 어떤 식으로 써야 할 것인가...!

 

https://ko.javascript.info/class

 

클래스와 기본 문법

 

ko.javascript.info

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/this

 

this - JavaScript | MDN

JavaScript에서 함수의 this 키워드는 다른 언어와 조금 다르게 동작합니다. 또한 엄격 모드와 비엄격 모드에서도 일부 차이가 있습니다.

developer.mozilla.org

 

이 두 사이트 말고도 내가 참고한 수많은 블로그들...감사합니다...

분명 코어 자바스크립트를 캠프에서 읽었떤 것 같은데 왜 실전에서는 잘 모르겟었지...? 나의 공부 부족이겠지 뭐.

 

여튼, class와 class 안에서 this를 어떤 식으로 쓰는지 배울수 있었다.

 

속성으로나마 파악하고 난 뒤에서야 코드를 작성할 수 있었다.

 

 

 

 

 

 

 

다시 기능 구현하기

너무 급하게 구현을 시작해서인지 구현 시작하고 한 번 갈아엎었다.

내가 작성한 readme에 구현 순서가 있는데, 이게 다시 시작하면서 적으면서 해야겠다 싶어서 작성했다.

 

처음에는 유효성 검사를 먼저 구현했는데, 왜 이걸 처음부터 했는지는...잘 모르겠다.

그냥 에러 처리도 해야 하고, 3개의 숫자를 구현해야 했으니까 이걸 제한할 수 있는 기능을 먼저 추가하고 싶었는데 그 이후에 다른 기능을 만드려니까 갑자기 헷갈리기 시작했다.

 

그래서 그냥 다 지워버리고 처음부터 다시 시작했다.

 

  1. 컴퓨터 랜덤 생성 기능 구현
  2. 볼&스트라이크 판정 기능 구현
  3. 재시작 기능 구현
  4. Error 기능 추가
  5. 리팩토링

 

위의 순서대로기능을 구현했고 마지막 리팩토링은...사실 별거 없다! ㅋㅋㅋㅋㅋㅋ

기능별로 따로 파일을 만들어보고 싶었는데 어떤 기준으로 나눌지 아직은 확신이 없었고 테스트를 해보고 돌아간다는 사실이 너무 기뻤기에....그냥 app.js 파일에 전부 구현했다. ㅋㅋㅋㅋ

 

우선은 컴퓨터가 받을 3개의 숫자를 먼저 구현하고 보니 이제야 감이 잡혔다.

역시 천천히 생각하면서 구현해야 하는 거였다.

 

덕분에 잘 구현하고 npm test를 통해 테스트 코드도 통과함을 볼 수 있었다.

 

아참, 그리고 생각해보니 테스트 관련해서 공부가 좀 부족했던 것 같다. 이것도 2주차 과제를 하면서 함께 보완해야 할 것 같다. 테스트를 왜 하는지는 알겠는데, 어떤 식으로 돌아가는지 심층적인 공부가 필요하다.

 

 

아래는 내가 구현한 깃허브 저장소이다.

 

https://github.com/seoyeon-jung/javascript-baseball-6/tree/seoyeon-jung

 

GitHub - seoyeon-jung/javascript-baseball-6

Contribute to seoyeon-jung/javascript-baseball-6 development by creating an account on GitHub.

github.com

 

 

이렇게 작성하고 혹시나 까먹을까봐 바로 pull request도 날렸다.

잘못 할까봐 얼마나 벌벌 떨면서 했는지...ㅋㅋㅋ

 

그리고 우테코 플랫폼에도 작성을 해야 해서 빠르게 그것도 작성했다.

 

이렇게 플랫폼 안에서 예제를 테스트 해볼 수도 있다. vscode에서 테스트해볼 때는 당연히 통과해서 안심했는데 혹시나 싶어서 이것도 초조하게 기다렸다. 혹시나 안되면...눈물나니까....ㅋㅋㅋㅋㅋ

 

그렇지만 새로고침 해보니 잘 되는 것 같아서 안심했다.

 

 

 

 

 

 

 

 

 


이렇게 1주차가 끝이 났다. 사실 수요일에 끝났지만 금요일에 회고글을 남긴다.

역시 뭐든 매일매일 꾸준히 기록하는 건 어렵긴 하다. 2주차에도 매일매일 과제를 할수 있을까? (이미 어제는 실패함)

 

어제 2주차 과제 매일이 왔고 fork해와서 읽어보긴 했는데, 이제 회고글 다 작성했으니 천천해 해야지.

뭐든 내뜻대로 흘러가지는 않지만, 그래도 우테코를 하면서 많은 공부가 되었으면 좋겠다.

이미 1주차를 하면서도 내가 모르는게 많다는 사실을 절실히(!) 깨달았긴 하다.

 

2주차도 화이팅해야지...!