우테코 2주차. 몸풀기였던 온보딩 미션이 끝나고 이제 진짜배기 미션이 시작되었다.
프리코스에서 날 가장 괴롭혔던 로또.. 다시 돌아와서 날 괴롭혔다.
새로운 미션은 화요일에 새로 진행되는데 이때 모두가 보는 앞에서 랜덤으로 페어를 정한다.
이번에 내 페어가 된 사람은.. 두구두구 바로 반달이었다~!
온보딩에서 함께했던 산군은 이미 친한사이였기 때문에 이번이 진짜 제대로된 페어프로그래밍이었다고 생각한다.
반달은 굉장히 신중한 사람이다.
내가 무언가 의견을 제시하면 반달은 한참동안 열심히 고민하고 대답해주었다.
신중한 성격의 반달 덕분에 고민할 거리도 많아지고 질문거리도 많아졌던 것 같다.
아 질문하니까 생각났다.
내 로또 미션 리뷰어님은 바로! 우테코 안드로이드 과정 코치님인 레아다!!
레아로 말하자면 잠시 링링의 말을 인용하겠다.
이상 링링의 의견이었다.
나도 레아와 함께 로또 미션을 진행하면서 정말 좋았다.
내 질문 폭탄에도 모두 자세하게 대답해주었고,, 내가 답만 알아가는게 아니라 생각해서 답을 떠올릴 수 있게 해주었다!
레아 고마웠습니당~!
(아 레아는 테트리스를 잘한다. 레아라는 이름은 어떤 게임에서 따왔다고 한다. 순수하고 착한 시골소녀...?)
다시 미션 얘기로 돌아가자.
로또 미션의 주된 프로그래밍 요구사항은 이랬다.
- 모든 기능을 TDD로 구현해 단위 테스트가 존재해야 한다. 단, UI(System.out, System.in) 로직은 제외
- indent(인덴트, 들여쓰기) depth는 1까지만 허용한다.
- 함수(또는 메서드)의 길이가 10라인을 넘어가지 않도록 구현한다.
- 기능을 구현하기 전에 README.md 파일에 구현할 기능 목록을 정리해 추가한다.
- git의 commit 단위는 앞 단계에서 README.md 파일에 정리한 기능 목록 단위로 추가한다.
- 배열 대신 컬렉션을 사용한다.
- Enum 클래스를 적용해 구현한다.
- 모든 원시값과 문자열을 포장한다.
- 일급 컬렉션을 사용한다.
우선 이전 미션과 가장 큰 변화는 TDD, 원시값 포장, 일급 컬렉션 이었다.
TDD는 Test-Driven Development 즉 테스트 주도 개발이다.
코드를 먼저 작성하고 해당 코드에 맞는 테스트를 짜는게 아닌, 프로그램을 설계하여 기능목록을 먼저 작성하고
기능목록에 맞게 테스트 코드를 짠 뒤, 테스트 코드에 맞게 코드를 작성하는 방식이다.
TDD를 사용하면 초기에는 개발 속도가 느려지지만 이후 볼륨이 커졌을 땐 개발 속도가 훨씬 빨라진다고 한다.
(코치님 왈 TDD와 함께라면 술 취하고도 코드를 작성할 수 있다고..)
약간 그런 것 같다.
나도 무작정 머리 박고 구현했던 프리코스보다 미리 세세하게 설계를 해놓고 시작한 최종 코테가 훨씬 빠르고 수월했다.
아마 TDD도 같은 맥락이지 않을까..? 하는 생각이 든다. 이게 너무 느낌이라 말로 표현하기 애매하다,,
TDD로 개발하는 것은 처음이었기에 꽤나 어려웠고 아직 적응을 덜 한 것 같다.
특히 처음 개발할 때는 TDD가 그나마 됐는데 리팩토링할 때는 TDD가 잘 적용되지 않았다.
(그냥 코드 먼저...)
다음 블랙잭 미션은 더더욱 어렵다고하니 TDD로 차근차근 해봐야할 것 같다.
원시값 포장과 일급 컬렉션도 나에겐 처음 보는 내용이었다.
두 가지 모두 값들을 생으로 드러내지 않고 객체로 감싸 해당 값이 필요로하는 로직들은 해당 객체 내에서 처리하는 공통점이 있다.
처음에는 언제 어떤 경우에 어떤 것들을 감싸야하는지 잘 몰랐었다.
근데 로또 미션을 진행하고 나서 어떤 것들을 감싸야할지 조금은 감이 왔다고 말할 수 있을 것 같다.
이번 미션에서 어려웠던 점은 1단계 제출 시간이 너무 짧다는 것이었다.
혼자 할 때보다 페어와 함께 진행할 때 더 많은 시간이 필요한데, 페어와 함께 1차 제출하는 시간이 훨씬 짧았다.
그래서 반달과 나는 다른 공부는 전혀 하지 못하고 오로지 로또 페어 프로그래밍에 모든 시간을 쏟았다.
결국 제출일엔 기진맥지해져 둘 다 많이 고민하지 못하고 진행했다.
1단계를 마치고 각자 리팩토링과 2단계를 진행하였다.
2단계 리팩토링에서는 자동으로 발급하던 로또를 자동과 수동 모두 가능하도록 해야했다.
또한 추천사항에 예외처리를 통해 에러가 발생하지 않도록 하는 것이 있었다.
시간은 1단계가 급했지만 2단계에선 시간은 많았음에도 자꾸 무언가에 막히는 느낌이 들었다.
Purchaser를 만들었는데 너무 이상하게 만들어서 다시 지우고...
결국 LottoCount를 만들었는데 이마저도 이상... 마지막 한 가지가 자꾸 안됐다.
또 예외처리를 다 했는데,, 이렇게 일일이 하는게 맞을까..? 하는 생각과 함께.. 킁
코드를 작성하면서 자꾸 나에게 의구심만 들었다.
내 코드에 명확한 주장도 근거도 없이 자꾸 불가능한 근거만 쌓여
질문도 구체적으로 할 수 없었다. 그냥 애매한 느낌만 남아 뭐라고 질문해야할지도 모르겠는 그런 상황을 아는가..? ㅠㅠ
로또 코드는 여기 있다,,
후기를 적는 지금은 블랙잭 미션 공개를 내일로 앞둔 월요일이다.
뭔가 쓰다보니 알맹이 없는 두서 없는 후기가 된 것 같지만,, 일단 내 머리도 여기까지가 한계인 것 같아 멈춰야할 것 같다.
내일은 좀 더 fresh한 머리로 돌아와 블랙잭 미션을 하고싶다,,
내 페어는 누굴까? 너무 궁금하다.
'우아한 테크 코스' 카테고리의 다른 글
[우아한테크코스] 합격 및 온보딩 미션 후기 (0) | 2023.02.27 |
---|---|
우아한 테크 코스 최종 코딩테스트(점심 메뉴 추천) 회고 (0) | 2022.12.21 |
우아한 테크 코스 4주차(다리 건너기) 회고 (0) | 2022.12.21 |
우아한 테크 코스 3주차(로또) 회고 (0) | 2022.11.17 |
우아한 테크 코스 2주차(숫자 야구 게임) 회고 (0) | 2022.11.09 |