2021.03.10 데일리 회고

천영석·2021년 3월 10일
post-thumbnail

Facts

  • 선배와의 특강을 들었다.
  • 유튜브 강의실 2단계 cypress를 모두 구현했다.
  • 유튜브 강의실 2단계 미션에서 화면 렌더링 기능까지 구현했다.

Feelings & Findings

선배와의 특강을 들었다.

백엔드, 프론트엔드 각각 한 분씩 오전 시간에 특강을 들었다.
백엔드 선배는 우테코 전 기수로 우테코에서 생활할 때 필요하다고 생각하는 것을 알려주셨다.

첫 번째로 페어 프로그래밍을 하면서 페어의 장점을 흡수하라는 것이었다.
누군가는 설명을 잘 할 수도 있고, 누군가는 말을 잘 들어줄 수도 있고, 누군가는 적극적으로 참여하는 장점을 가질 수 있다.
이 경우에 페어들의 장점을 기억해두었다가 페어 프로그래밍에서 같은 상황에 처했을 때, 적용해보면 도움이 많이 될 것이라고 말씀해주셨다.

그리고 페어의 장점을 아는 것과 비슷하게 중요한 것이 나의 단점을 아는 것인데, 이것을 위해 페어를 붙잡고 어떻게든 회고를 하는 것이 좋다고 말씀해주셨다.

회고를 해서 나의 단점을 알고, 고쳐나가면서 페어의 장점까지 흡수한다면 협업에 있어서 최고가 될 수 있지 않을까라는 생각을 하게 되었다.

두 번째로 우테코에서 제공하는 필독서를 모두 읽어보는 것을 추천해주셨다.
필독서를 읽는다고 생각하면 어떤 필독서는 바로 미션에 적용할 수 있어서 유익한 것 같지만 어떤 필독서는 배경지식과 같은 것이라서 미션에 적용하는 데 한계가 있다고 생각이 들 수 있다.

이때, 배경지식은 나중에 쌓고 지금은 크루들의 pr을 보면서 미션에 적용할 수 있는 실력을 기르는 것이 우선이라고 생각할 수도 있다고 하셨다.
하지만 결국에는 배경지식을 나중에는 쌓아야 하고, 그렇기 때문에 필독서를 시간이 날 때 틈틈이 읽는 것을 추천해주셨다.

요즘은 미션이 너무너무 바빠서 새벽까지 하느라 책을 읽을 시간이 없었는데, 미션 pr을 보내고 잠깐 시간이 남을 때라도 필독서를 읽는 습관을 들여야겠다는 생각을 하게 되었다.

프론트엔드 선배는 우테캠 2기 출신으로 정말 여러가지 스펙을 가지고 계셨다.
프론트엔드 선배님은 어떻게 개발자로서 실력을 향상시킬 수 있을지에 대한 방법을 말씀해주셨다.

학창시절에는 공부를 하면 성적이 정량적으로 나왔기 때문에 내가 잘했는지 못했는지 알 수가 있었다.

하지만 프로그래밍 공부는 정량적인 결과가 나오지 않기 때문에 내가 어느 위치에 있는지 알 수가 없고, 그러므로 내 실력을 알 수가 없다.

실력을 알 수 없다면 알 수 있게 만들면 되지 않을까라는 생각에 데일리 회고와 같은 일기에 내가 한 것을 정성적이 아닌 정량적으로 작성하는 것을 추천해주셨다.

오늘 페어 프로그래밍 한 것을 정량적으로 표현해보면 구현해야 하는 테스트 코드 3개를 모두 구현했고, 구현해야 하는 기능 6개 중에서 2개를 구현했다. 구현해야 하는 기능을 모두 구현할 수 있었지만 2개 밖에 하지 못한 이유는 구조를 잡고 코드를 구현하기 위해서 시간을 많이 쏟았기 때문이다. 총 소요시간은 6시간 정도인 것 같다.
그래서 내일은 남은 4개를 2 ~ 3시간이면 마무리할 수 있지 않을까 생각한다.

이런식으로 할 수 있을 것 같다. 이렇게 되면 나는 테스트코드 3개와 기능 3개를 6시간 동안 구현한 것이고, 한 개당 1시간 정도의 시간이 소요된 것을 알 수 있다.

이렇게 정량적으로 회고를 하다보면 내 실력을 어느 정도 알 수 있게 된다고 한다.
더 나아가서 지라를 사용해 시간 계획표를 만들 수 있다고 하셨다.

만약 내가 구현해야 할 기능이 6가지가 있다고 하자.

  • 가장 처음에는 저장된 영상이 없으므로, 비어있다는 것을 사용자에게 알려주는 상태를 보여준다.
  • 이후 페이지를 방문했을 때 기본 메인 화면은 내가 볼 영상들의 리스트를 보여준다.
  • 영상 카드의 이모지 버튼을 클릭하여 아래와 같은 상태 변경이 가능해야 한다.
    • ✅ 본 영상으로 체크
    • 🗑️ 버튼으로 저장된 리스트에서 삭제할 수 있습니다. (삭제 시 사용자에게 정말 삭제할 것인지 물어봅니다.)
  • 사용자가 버튼을 클릭했을 때 해당 행위가 정상적으로 동작하거나, 실패하였음을 snackbar를 통해 보여준다.
  • 본 영상, 볼 영상 버튼을 눌러 필터링 할 수 있다.

여기에서 모두 1시간의 시간을 잡아놓고, 기능 구현이 완료될 때마다 시간을 체크해서 스케줄표에 남겨놓게 되면, 내가 어느 기능을 구현하는데 얼마나 걸리는구나에 대한 감을 잡을 수 있다고 한다.

결론적으로 시간 계획에 대한 중요성을 배우게 되었고, 정량적인 학습이 나에게 꼭 필요하다고 생각이 들었다.

왜냐하면 나는 항상 눈에 보이는 결과가 중요한데, 최근에 프로그래밍을 공부하면서 내 눈에 아무런 결과물이 보이지 않는다고 생각이 들었기 때문이다.
정말 딱 맞는 강의를 들었다고 생각하고, 오늘 강의를 해주신 선배님들께 너무 감사한 하루였다.

유튜브 강의실 2단계 cypress를 모두 구현했다.

구현해야 할 cypress 테스트 코드가 총 3개가 있었는데, 모두 구현을 완료했다. 테스트 코드를 구현하는 데에는 총 1시간 반 정도가 걸린 것 같다. 더 빨리 할 수 있었는데
cy.get('.js-stored-videos .watched').should('have.length.of.greaterThan', 0); 이 코드를 찾기 위해 시간이 조금 걸렸다.

원하는 것은 cy.get()으로 받은 element의 길이가 0보다 커야된다는 것이었는데, cypress에는 모두 expect를 사용하는 것으로 나와 있었다.
하지만 should로 해보고 싶은 고집이 있었고, 결국 have.length.of.greaterThan이라는 alias를 찾아내서 성공하게 되었다.

유튜브 강의실 2단계 미션에서 화면 렌더링 기능까지 구현했다.

구현한 것은
1. 가장 처음에는 저장된 영상이 없으므로, 비어있다는 것을 사용자에게 알려주는 상태를 보여준다.
2. 이후 페이지를 방문했을 때 기본 메인 화면은 내가 볼 영상들의 리스트를 보여준다.
이렇게 두 가지를 구현했다.

시간은 4시간 정도 걸린 것 같은데, 이 시간 중에 대부분은 다른 크루들과 MVC 패턴에 대한 토론 및 우리가 작성할 코드에 대한 구조를 잡기 위한 시간이었다.

그래서 막상 구현한 시간은 길지 않았다.
한 번 구조를 잡고 시작을 하니까 어떤 순서로 나아가야 할지 눈에 보이기 시작했고, 능률이 향상되는 것을 느낄 수 있었다.
구조를 잡고 시작한 뒤에는 한 1 ~ 2시간 정도 걸린 것 같다.

화면 렌더링이 버그 한번 없이 동작을 했는데, 페어랑 정말 박수를 미친듯이 치면서 좋아했었다.
이런게 코딩의 참맛인가?? 라는 생각이 들었는데, 이렇게 버그 없이 동작할 수 있었던 이유도 구조를 완벽하게 잡아놨기 때문이라고 생각한다.

앞으로는 코드부터 들이밀지 않고 구조를 생각해놓고 코드를 짜는 습관을 들여야겠다는 생각을 하게 되었다.

Plans

  • 다른 크루들의 pr보면서 배우기
  • 틈틈이 필독서 읽기
  • 미션 2단계 마무리하기
profile
느려도 꾸준히 발전하려고 노력하는 사람입니다.

0개의 댓글