우아한 테크 코스 백엔드 1주차 회고

@hongo · February 13, 2023 · 3 min read

[수정필요 ><>]

레벨1의 학습 목표

  • 자바 프로그래밍 언어에 대한 핵심 개념을 익혀 프로그래밍하는 경험을 한다.
  • 읽기 좋은 코드를 구현하는 것이 왜 중요한지와 코드를 개선해 읽기 좋은 코드로 변경해 보는 경험을 한다.
  • 자신이 구현한 코드에 대해 단위 테스트리팩토링하는 경험을 한다.
  • 데이터베이스를 활용한 콘솔 애플리케이션을 개발하는 경험을 한다.

레벨 1의 주요 키워드는 자바, 클린 코드, 단위 테스트이다. 우테코 프리코스를 하면서 자바를 처음 사용해봤는데, 이번 기회에 자바에 익숙해져야겠다. 공부 방식은 미션을 하면서 궁금한게 생기면 캠퍼스에 있는 자바 기본서를 참고해가며 공부할 예정이다. ㅎㅎ

시간이 된다면 클린 코드에 대한 책도 읽어보고 싶은데 자바에 익숙해지는데도 시간이 많이 걸릴 것 같아 최우선순위는 자바로 정했다!

학습 목표를 달성하는 것이 최종 목표인가?

  • 프로그래밍 자체가 얼마나 재미있는 활동인지 경험하고,
  • 효과적으로 프로그래밍을 학습하는 방법을 경험하고,
  • 프로그래머로 어떻게 성장하고,
  • 어떻게 살아갈 것인지 같이 고민하는 시간으로 만들기 위함이다.

롱런하는 개발자가 되려면 어떻게 해야할까? 개발 자체를 즐겨야 개발과 오래오래 갈 수 있지않을까? 레벨1에서는 학습자체에 너무 집착하지 않고 미션 자체를 즐기는데에 집중해야할 것 같다. 학습은... 미션을 하면서 궁금한게 생기면 겸사겸사 하는 걸로...^^

1주 차 - 온보딩, 단위 테스트

📌 단위테스트를 해야하는 이유?!

대망의 우테코 첫 번째 수업의 주제. 단위테스트... 왜 해야할까?

  • 테스트 코드를 비즈니스 로직에서 분리
  • 유지 보수 편리
  • 디버깅 편리 (어디서 에러가 발생했는지 확인이 쉬움)
  • 지원하는 기능이 많음(assertJ, Junit)

📌 자동차 경주 게임 첫 번째 pr을 날리고 느낀점

단위테스트를 하기위해선 각 기능(메소드)의 입력값과 출력값을 미리 확정짓기때문에, 처음에 설계한 구조에서 어긋나지않게 구현할 수 있어서 좋은 것 같다.

그리고 역시 테스트를 지원하는 모듈이 존재해서 단위별로 테스트하기가 편했다.

하나의 기능에 집중에서 여러가지 입력값을 설정할 수 있다. 어디서 에러가 나는지 확인하기가 편리

📌 단위테스트는 어떻게 진행하면 좋을까?

  • 기능이 어떤 상황에서 문제가 생길지 먼저 고민을 함
  • 경계값검증, 실패하는 테스트부터 작성
  • 값이 변하는 부분 체크
  • 극단적인 값으로 테스트(0, 1, INT_MAX)

코드 품질

잘 작동하고, 읽기 좋고, 유지보수 하기 좋고, 테스트하기 좋은 코드를 작성해야 한다.

코드 품질을 높이려면 어떻게 해야할까?

  • 기능 목록을 문서에 작성한 뒤 코드를 작성하면 좋다.

    • 리드미에 이 미션으로 무얼 얻을 것인지를 적어도 좋다..~
  • 일관성있게 코드를 작성하면 좋다.

    • 새로운 깨달음을 얻어도 갈아치우지 말고 일관성있게 처음에 목표했던 대로 코드를 짜도록 해라...~ 일단 오키

디자인 패턴을 활용해서 확장성 높은 코드를 작성하면 되지 않을까...?

자동차 경주 게임

자동차 경주 게임 포스팅은 작성할 내용이 많아서 포스팅을 분리했다. ㅎㅎ

  • 자동차 경주 게임 미션을 하면서 getter를 무조건 쓰지않아야하는 법은 없다는 걸 배웠다.
  • 또, 테스트를 위해 assertJ의 다양한 메소드들을 사용했다.

첫 페어인 오잉과 함께한 첫 페어 프로그래밍이었는데 생각한 것 보다 더 재밌었다! 메소드명같이 작은 걸 정할때도 둘이 토론을 해서 시간이 2배로 걸리긴 했지만 ㅎㅎ 토론하는거 너무 재밌었다! 혼자서 프로그래밍 할 때는 아 이렇게 하면 되겠지. 이게 맞겠지 하고 끝났는데, 오잉과 각자 구현하고 싶은 방법을 말하고 토론하면서 우리가 지금 생각한 방식이 정말 최선의 방식인지 깊게 생각해볼 수 있었다. 🥰

우테코에서 한 주를 보내고 달라진 점

📌 why?!

속으로 왜?! 라는 질문을 많이 하게 된 것 같다. 예전에는 코드를 작성하다가 의문점이 있으면 구글에 검색해서 다른 사람들의 블로그글을 보며 바로 수긍했다.

하지만 우테코에서는 왜?라는 질문을 던지는 것을 매우 강조한다. 일단 환경자체가 질문이 많이 날아오는 환경이다... 크루들은 쉬는 시간에도 개발과 관련된 토론장을 자주 연다...ㅎㅎ 개발 중독자들이 분명
또 페어프로그래밍을 하다보니 변수명 하나를 지을때도 왜 그렇게 생각했는지 전부 말해야한다. 그러다보니 내가 생각하는게 정말 최선의 방법인지, 더 좋은 방법은 없을지 계속 생각해보게 된다.

물론 지금도 개발 잘하는 사람들의 블로그글을 보며 많이 수긍한다. (당연! 나는 아는게 없음!) 그래도 바로 그렇구나~하고 마는 것이 아니라 왜 이 방법이 좋은지 혼자서 더 생각해보게 되었다.

📌 스터디... 하고싶다...

우테코 들어오면 꼭 하고싶었던 것 중 하나가 스터디였는데 아직은 하나의 스터디도 들어가지 않았다!
스터디 모집글이 두 개 올라왔는데 둘 다 놓쳐서 스터디에 참여하지 못했다... 두 개다 참여하고 싶은 스터디였는데... 😭😭 둘 다 마감된 후에 모집글을 봐버렸다...😭😭😭 자바를 학습한 내용을 발표하는 스터디를 하고싶은데 다른 크루들을 꼬드겨서 스터디를 만들어볼까도 생각중이다;ㅎㅎ

@hongo
홍고 블로그