회고/코드스쿼드 - Java 과정 19

[TIL] 코드스쿼드 2022 백엔드 35일차 회고(7주차)

오늘은 무슨 일이? 오늘은 donggi와 함께 로또 프로젝트를 마무리 지었습니다! 사실, 처음에는 페어프로그래밍 자체에 익숙해지느라 미션을 어떻게 해쳐나갈지 큰 그림을 그리지 못한 것 같습니다. 그래서 일단 역할과 책임이 뭉쳐있는(?) 안좋은 코드라고 하더라도 동작하는 코드를 먼저 만들어보고, 점진적으로 코드를 개선해 나가야겠다고 생각했습니다. 첫날부터 검증이나 예외처리까지 다 하면서 미션을 진행하다 보니, 진행하다 보니 개선할 점들이 너무 많았습니다. 서비스 검증을 위해 빠르게 달린 스타트업의 기술부채를 아주 아주 살짝 맛본것 같은 느낌이었습니다. 그러나 다행인것은 첫날부터 많은 기능들을 구현해놓은 덕에, 그 후의 미션 요구사항 중에서 이미 구현된 것들이 있었고 그래서 리펙토링에 더 집중할 수 있었습니..

[TIL] 코드스쿼드 2022 백엔드 34일차 회고(7주차)

오늘은 무슨 일이? 추상화, Mocking 오늘 호눅스 수업에서는 Random 을 테스트 하는법에 대해 배웠습니다. Random 처럼 결과를 예측할 수 없는 모듈을 사용하는 로직을 테스트하기 위해서 여러가지 시행착오를 일부러 보여주셨는데요. Random 을 사용한 메소드를 테스트 하려고 보니, 여러번 테스트 해보는 방법 밖에는 없었습니다. 그래서 10번 100번 10000번 테스트를 해도 그 결과가 영 찝찝했습니다. 다른 방법을 찾으며 마지막에 알게된 방법은, 추상화와 가짜 객체(Mock Object)를 이용하는 것 이었습니다. 예측할 수 없는 모듈을 인터페이스로 추상화 하고, 해당 로직에서는 Random 대신 인터페이스를 참조하여 사용합니다. 그리고 해당 클래스에서 생성자에서 인터페이스의 구현체를 주입..

[TIL] 코드스쿼드 2022 백엔드 33일차 회고(7주차)

오늘은 무슨 일이? 조금씩 익숙해져가는 페어 프로그래밍 이번주는 쭉 페어프로그래밍으로 미션을 진행하고 있는데, 몇달치 말을 이번 2일에 다 한것같은 느낌이 들었습니다. 월요일에는 휴식없이 쭉 달려서 피로가 많이 누적되었고, 화요일은 빨리 구현하고싶은 마음에 페어를 배려하지 못했습니다. 그래서 오늘은 스크럼을 마치고, donggi와 그라운드 룰을 다시 정했습니다. 20분 마다 드라이버, 네비게이터 바꾸기(하던 중이라도 얄짤 없이 교체) 2시간 마다 30분 혹은 식사시간 되면 바로 휴식하기 드라이버와 네이게이터의 역할을 분명하게 정의 드라이버 : 간단한 변수명이나 짧은 로직, 커밋 메세지 등은 드라이버의 재량에 맡김 네비게이터 : 더 넓은 시야로 바라보며 조언(네이밍 컨벤션, 메소드 분리, 객체의 역할과 책..

[TIL] 코드스쿼드 2022 백엔드 31~32일차 회고(7주차)

어제는 무슨 일이? 어제부터는 donggi와 페어프로그래밍을 하게 되었습니다! CS10때 같은 조가 된적도 있었고, 평소 디스코드에서도 종종 모각코를 하고 있어서 어색하진 않아서 좋았습니다ㅎㅎ 얘기 나누다 보니, 저와 같은 경상도 출신이란걸 알게되어 뭔가 더 반가운 느낌이 들었네요😁 CS10 과정의 마지막주에 페어프로그래밍을 잠시 연습한적이 있었는데, 이번에는 본격적으로 하게되어서 걱정반 기대반이었는데요. 다행히도 donggi와 잘 맞아서 같이 변수명 하나까지도 같이 고민하면서 열정을 불태웠습니다..!👨‍💻 이렇게 페어프로그래밍을 하다 보니, 혼자 코드를 작성할때는 무의식적으로 작성했던 것들을 모두 상대가 이해할 수 있는 말로 풀어서 설명해야했고, 자연스레 내가 아는것을 말로 설명하는 연습을 많이 하게되..

[TIL] 코드스쿼드 2022 백엔드 30일차 + 주말 회고(6주차)

오늘은 무슨 일이? 코드스쿼드의 웹백엔드 Java 클래스 1 주차가 끝이 났습니다. 이번주 미션부터는 구현 내용을 PR 하면, 코드 리뷰를 받을 수 있었습니다. 본격적으로 리뷰를 받기 시작하니, 스스로 어떤 부분이 부족했었고 개선해야 하는지 명확하게 알 수 있어서 좋았는데요. 이번주 리뷰를 받았던 내용 중에서 가장 신경써서 반영하려고 했던 부분이 있었습니다. 클래스를 필요할 때 분리하기 이때까지는 저는 초반부터 클래스를 최대한 한가지 역할만 하도록, 유현한 변경이 가능하도록 쪼개면서 미션을 구현해 나갔습니다. 이러한 저의 기존 방식은 장단점이 있었는데요. 장점 클래스가 한 가지 역할만 하고 있어서, 추후 리펙토링을 하기 쉬움 변경에 유연한 구조로 만들었기 때문에, 미션 진행 중 요구사항이 변경될 경우 변..

[TIL] 코드스쿼드 2022 백엔드 29일차 회고(6주차)

오늘은 무슨 일이? 이번주에는 미션 진행 보다는, 스스로의 객체지향적인 코드를 작성하기 위한 접근방식에 대해 계속 고민했었습니다. 그리고 호눅스의 미리 나누기 보다는, 나중에 필요할 때 나누는것을 선호한다는 코멘트도 계속 머리속에 멤돌았습니다. 그러다 보니 프로젝트의 구조가 이전의 제 스타일처럼 잘게 나눠져있지 않고, 오히려 응집도가 높은 코드가 만들어졌습니다. 그러다가 종종 같이 객체지향과 서로의 코드에 대해 리뷰를 나눴던 동료가 연락이 왔습니다. 제가 이번주는 유독 힘이 없어보이고, 코드도 예전과 많이 달라서 혹시 무슨일이 있는건지 걱정해서였습니다. 그런데 저는 일단 제 표정과 코드를 보고 걱정해서 연락을 해주는 동료가 있다는 사실에 기쁘기도 하고 정말 고마웠습니다. 그것도 잠시, 제가 스스로의 상황..

[TIL] 코드스쿼드 2022 백엔드 28일차 회고(6주차) - 객체의 역할과 책임

오늘은 무슨 일이? - 객체의 역할과 책임 저는 지금까지 앞으로 생길 수 있는 갑작스런 변경에 유연한 구조를 미리 만들어놓아야 한다고 생각했었습니다. 그래서 순수 자바 프로젝트를 하더라도 객체의 기능과 구현을 분리하려고 노력했습니다. 하지만, 결국 기능 만으로는 코드가 동작할 수 없기에, 어디선가는 어떤 구현을 사용할 것인지 선언을 해주어야 했습니다. 그러면 결국 객체간 기능만 아는 유연한 연관관계 형성이 불가능하다는 것을 뼈저리게 느꼈습니다. 'DI 컨테이너의 대단함을 이제야 느꼈습니다...' 그래서 고민하던 차에 객체의 역할과 책임에 더 집중하여 한 가지 일만 하도록 만들고 구조적인 복잡도를 줄여서, 나중에 다른 동료가 보더라도 쉽게 이해하여 리펙토링할 수 있는 코드를 만들어야겠다고 생..

[TIL] 코드스쿼드 2022 백엔드 27일차 회고(6주차)

오늘은 무슨 일이? 처음으로, PR 승인을 받아보다 어제는 처음으로 PR을 작성해봤는데, 오늘은 처음으로 호눅스로부터 간단한 코드 리뷰를 받았습니다. 그동안 리뷰에 대한 갈증이 많았던 터라 기대가 되었습니다. 동료들과도 자주 리뷰를 했지만, 동료들 끼리 조언할 수 있는 한계가 있기도 하고 더 경험이 많고 시야가 넓은 리뷰어로 부터의 리뷰가 절실했습니다. 호눅스 혼자 40명의 소스를 리뷰해야해서, 저에게 온 피드백은 간단했습니다. 하지만 나머지 동료들은 어떤 소스를 작성했고, 어떤 피드백을 받았는지 살펴보며 많은 도움을 얻었습니다. Upstream을 Origin으로 옮기며 그렇게 코드리뷰 및 RP 승인을 받고, 이제 Upstream에 있는 merge된 내 브랜치를 Origin 으로 옮겨오고, PR 이후의 ..

[TIL] 코드스쿼드 2022 백엔드 26일차 회고(6주차)

Weekly I Learned → Today I Learned 오늘부터 WIL이 아니라 TIL을 쓰기로 했습니다. 이유는 다음과 같은데요. 주 단위로 쓰려고 하니, 해당 날짜의 생각이 제대로 기록되지 않음. 매일 쓰지 않고, 주말에 몰아서 쓰게됨. 주말에 휴식 및 밀린 일들을 하다가 회고를 늦게 쓰게됨 회고를 하는 이유는 내가 잘한것을 지속하고, 못한것을 개선하기 위해서 라고 생각하는데 어느새 회고를 숙제처럼 하고있는 자신을 발견하게 되었습니다. 그래서 앞으로는 매일 조금씩 시간을 할당하여 회고에 투자하려고 합니다. 오늘은 무슨 일이? 코드스쿼드 마스터즈코스 백엔드 Java 클래스가 시작되는 첫날 이었습니다. 생각보다 단순한 미션이 주어졌는데, 호눅스가 학습내용을 정리할 여유를 가질 수 있게 배려해준 것..