[회고] level1 - 체스 미션 회고

Junseo Kim·2021년 4월 5일
0

[우아한테크코스3기]

목록 보기
14/27

2021.03.16 ~ 2021.04.02

체스 미션을 하면서 공부한 내용을 정리해보았다.


난이도 급상승

개인적으로 level 1의 마지막 미션은 생각하던 것 보다 난이도가 훅 올라갔다. 이때까지의 미션들(레이싱카, 로또, 블랙잭)은 각각 2주간 진행했는데, 이번 체스 미션은 3주간 진행했다. 미션 진행 기간이 3주로 늘어났을 때 알아봤어야했는데, 어 좀 여유롭겠네라고 생각했었다. 정말 큰 착각이었다 ㅎㅎ..

체스 미션 같은 경우는 처음으로 콘솔기반 뿐만아니라 아닌 웹과 연동해보는 경험과, DB와 연동해보는 경험까지 포함된 미션이었다.

페어프로그래밍

이번 미션은 위에서도 잠깐 언급하긴했지만, 체스게임을 구현하는 것이었다. 웹, DB와 연동하기전은 여태까지와 마찬가지로 콘솔기반으로 미션을 구현하는 것이었고 페어프로그래밍으로 진행했다. 이번 페어는 포츈이었다. 포츈은 원래 정말 세세한 것 까지(네이밍까지) 설계를 완벽하게 하고 구현에 들어가는 성향이라고 했다. 그치만 3번의 페어프로그래밍을 해보면서 어느정도 기준이 완화되었다고 했다. 나 같은 경우는 기능 목록은 크게 신경 쓰지 않는 타입이었다. 주어진 요구사항을 보고 딱 떠오르는 것만 정리해두고 후에 필요하면 추가하는 타입이었다. 우리는 서로 이야기를 해보고 기능 목록을 간단하게 짜기로 결정했고, 구현을 시작했다.

어떤일이 생겼을까? 결론부터 말하자면 우리는 구현을 멈추고 기능 목록부터 다시 설계했어야했다. 레이싱카, 로또, 블랙잭 같은 경우는 기능 목록이 간단해서 크게 복잡하지 않았는데, 체스 같은 경우는 체스판을 어떻게 만들건지부터 시작해서, 말들을 어떻게 이동시킬건지(특히 폰은 특수한 녀석이라 신경써줘야했다) 등 생각해야할 부분들이 많았다. 설계를 너무 러프하게 하니까 프로그램이 조금만 복잡해져도 막히는 부분들이 많았다. 한 번 설계를 엎고 나서 내린 결론은 설계는 너무 자세할 필요까지는 없어도 어느 정도는 구체화가 되어야한다는 것이다.

TDD. 우리는 TDD를 하고싶었다. 처음에는 제이슨이 보여주신 방법대로 진행해보았다. 1) 한 명이 테스트 코드 작성. 2) 나머지 한 명이 해당 테스트 코드를 만족하는 프로덕션 코드 작성. 3) 테스트 코드를 작성한 사람이 리팩토링. 이 3단계 과정을 거치면서 TDD를 해보려고 했다. 초반에는 나름 괜찮은 방법이라는 생각이 들었다. 하지만 진짜 이번 미션은 TDD도 쉽지 않았다. 앞선 미션들을 TDD로 진행하면서 뭐야 TDD 별거 없네라는 생각을 조금 가지고있었는데, 그 생각은 바로 없어졌다. 안되는걸 억지로 하려는 것 보다는 프로덕션 코드를 짜고 단위 테스트를 하기로 결정했다. 결국 구현의 한 80% 정도는 프로덕션 코드를 먼저 짰던 것 같다.😭

포츈이 한 말 중에 가장 기억에 남는 말이있다. 잘하고 못했고를 떠나서 페어를 같이 했던 사람이 나중에 기억하기를 재미있게 페어했던 기억으로 남았으면 좋겠다. 포츈이 나중에 물어본다면 나는 망설이지 않고 재밌었어요. 성공하셨네요.고 말할 수 있을 것 같다. 포츈과 페어프로그래밍을 하면서 미션 외적인 것도 나름 많이 했다. 같이 맛집도 갔고, 석촌호수도 가고, LCK도 자주 같이 봤다. 미션 뿐만아니라 이런 활동을 같이 했던 게 좋았다.

내가 느낀 포츈은 자기주관이 확실하고, 주도적인 사람이다. 나는 그 반대인 사람이다. 늘 그런 성향을 가지고 싶었다. 페어프로그래밍을 할때는 그래도 내 의견을 많이 말하려고 하는데 이때까지 페어들이 그렇게 느낀지는 모르겠다.

이번 페어를 하면서 배운 것도 많다고 생각한다. 기억에 남는 2가지가 있는데 하나는 단축키이고, 나머지 하나는 학습방법이다. 포츈은 유용한 인텔리제이 단축키를 매우 많이 알고있다. 맨날 마우스로 하다가 표츈에게 단축키를 많이 배웠는데, 몇 가지는 꽤 유용하게 사용하고 있다.🤣 학습 방법은 포츈이 말해준 반복학습법이다. 포츈은 새로운 걸 알게 되면 깃헙에 정리해두고, 1일, 3일, 14일, 29일(시간이 정확한지는 모르겠다.)이 지날때마다 복습하면서 자기꺼로 만든다고 했다. 나도 반복의 중요성과 효과는 알고 있지만 잘 실천하지 않는다. 그냥 새로운 걸 알게 되면 블로그에 정리만 해놓고 다시 보는 일은 필요할 때 아니면 거의 없다. 반복하는게 정말 쉽지 않은데 진짜 대단하다고 생각했다. 나도 그런 습관을 만들고 싶다.

웹 & DB

페어와 콘솔기반 구현 후, 스스로 진행하는 미션으로 콘솔기반으로 만든 체스 게임을 웹과 연동해보고, DB와도 연동해보는 것이었다. java spark를 사용해 클라이언트의 요청을 받아 처리해주었는데, 처음 써보는 거였고, 학교 다닐 때, html, css, javascript를 해보긴했지만 제대로 공부한 것은 아니어서 그런지 처음에 조금 헤맸다. 그래도 웹을 아에 안해본건 아니여서 어찌저찌 하긴 한 것 같다. 이번 미션을 하면서 프론트는 잘 안맞는구나라는 생각이 들었다. 코딩 결과가 화면에 바로바로 보이는 것은 좋았으나, javascript는 어떻게 돌아가는지도 모르겠고, 나에게는 특히 css가 너무 스트레스를 준다😭😭

이 미션을 진행하면서 깜짝 미션으로 자바스크립트를 이용한 todo list 구현과 sql 연습 미션이 주어졌다. 체스 게임진행 계획을 다 세워놨는데, 갑자기 미션이 주어져서 당황스러웠다. 결국 어찌저찌 다 하긴했지만, 좀 미리 미션의 여부를 알고있었으면 좋았을 것 같다. 이 미션을 하면서도 느낀게 자바스크립트는 나랑 안 맞는 것 같다ㅎㅎ.. 타입이 없는 것도 헷갈리고, 왜 작동하는지 모르겠는 부분도 많다ㅎㅎ..

엘레강트 오브젝트 수업

포비가 엘레강트 오브젝트 관련 수업을 진행했다. 처음 수업을 들었을 때 너무 극단적인 내용이라 충격을 받기도 했고, 한꺼번에 너무 많은 양이 들어와서 소화하기도 힘들었다. 상단에 링크 걸어둔 새로 배운 내용에 정리하긴 했는데 잘 와닿지는 않는다. 정확한 건 책을 읽어봐야 알겠지만 거기 나오는 모든 내용에 동의가 되지는 않을 거 같긴하다. 제이슨은 주니어 개발자에게 비추천 도서라고 하기도 했다. 수업 중 제이슨이 한 말이 기억에 남는다.

결국 이 책은 Yegor의 기준일뿐이고, 여러가지를 경험해보고 나만의 기준을 만드는 것이 중요하다고 생각한다. 포비 말대로 일단 동의되지 않더라도 전문가들의 기준을 따라보고 수용이 안되면 수용하지 않으면 된다고 생각한다. 지금부터라도 조금씩 나만의 코딩 규칙, 기준을 블로그에 정리해두려고한다.

마무리

이번 미션을 마지막으로 level 1이 끝나면서, 데일리 조도 바뀌게 된다. 우리 데일리조는 체스 미션을 하면서부터 친해졌다. 정확히 말하자면 체스 미션 페어프로그래밍이 끝난 후 부터니까 정말 얼마 안 됐다. 우테코를 하면서 현재까지 하나 아쉬운 점을 꼽자면 너무 늦게 친해졌다는 것이다. 다른 데일리조는 맨날 모여서 있었는데 우리는 각각 흩어져있었다. 조이가 우리도 모여서 해요라고 하지 않았으면 아직도 크게 안 친했을수도 있다. 그 날 이후로는 자주 모여서 하고 놀기도해서 친해질 수 있었다. 뒤늦게 친해진게 많이 아쉽지만, 그래도 친해지긴해서 다행이라고 생각한다. 조가 바껴도 같이 생활하고 못보는 것은 아닌데, 그래도 뭔가 조가 바뀐다고 생각하니 허전한? 느낌이 들긴한다. 다들 다른 조로 가더라도 계속 잘 지냈으면 좋겠다.

4개의 댓글

comment-user-thumbnail
2021년 4월 7일

저두 에어한테서 정말정말 많이 배워갑니다!
특히 요렇게 회고 하면서 적는건 대충 TIL에 해오긴 했는데, 에어처럼 꼼꼼히 적어가야겠어요!
전에 stable sort랑 collections sort 이야기했을때, 바로 메모해간뒤에 정리하는 모습 + 추가 질문하는 모습에서 저건 정말 벤치마킹 해야겠다 생각했네요

아무튼 서있는 자세가 제일 섹시한 크루 1등 에어
종종 LCK 계속 같이 봅시다 ㅎㅎ

1개의 답글