전체 글

😼 Github : https://github.com/Mingyum-Kim
우아한테크코스/레벨1

[TDD] 2단계 `사다리 게임 실행`구현 & 코드 리뷰 회고

글을 작성하기 시작한 때는 3월 초이다. 그러나 사다리 미션의 회고를 제대로 작성하지 못한 채 블랙잭 미션이 시작되었고, 정신없이 미션을 수행하다 보니 어느 덧 3월 중순이 되어있었다. ☹ 더는 미룰 수 없어서, 사다리 타기 미션의 마침표를 작성하려 한다. 사다리 타기 2단계 미션을 진행하며 1단계 미션과 비교해서 달라지고 싶었던 점은 TDD의 장점을 이해하는 것이다. 당연히 꼭 이해할 필요는 없다. 그저 자연스럽게 "이래서 TDD를 쓰는구나!"를 느끼고 싶었지만 1단계 미션에서는 이를 느끼지 못해서 아쉬웠었다. 미션 구현 요약 하지만 2단계 미션이 끝나도 여전히 TDD의 장점은 와닿지 않았다. 조금 더 사이즈가 큰 미션을 수행하게 된다면 알게 될까? 이번 미션의 객체 설계도이다. 이번 미션의 가장 큰 ..

우아한테크코스/레벨1

[회고] 우아한테크코스 6기 백엔드 레벨1 4주차 회고

Keep (잘한 것) 브라운 코치와의 면담에서 지난 회고의 아래 부분에 대하여 이야기하고 나름의 틀을 잡게 되었다. 다행히 브라운이 나의 말의 요점을 잘 파악해주고 내가 목표해야하는 이상치를 구체적으로 이야기해준 덕에, 어떤 식으로 우아한테크코스 생활을 이어나가야 할 지 감을 잡을 수 있었다. (그러나 여전히 완벽히 그려진 것은 아니다 😥 크루들과 이야기하면서 나의 목표를 잡아나가야 할 것 같다.) 우아한테크코스라는 교육을 온전히 즐기면 될 지, 조금은 스트레스 받으면서 컴포트 존에서 벗어나려 노력해야하는 지 궁금하다. 내가 우아한테크코스를 끝내면 어떤 사람이 되고 싶은 지 생각해보고 어떻게 해야 그 목표에 달성하고 싶은지 구체적으로 체크리스트를 만들고 그 목표를 위해 실천해보자. 개발자라는 틀에서 벗어..

우아한테크코스/레벨1

[회고] 우아한테크코스 6기 백엔드 레벨1 3주차 회고

Keep (잘한 것) 우아한테크코스 크루들과 많이 편해지고 환경에 잘 적응했다. 사람들과 함께 하는 순간과 오로지 코딩에만 몰두하는 시간을 잘 분리하였다. 급하게 미션을 마무리하려고 하지 않고, 리뷰어님과 크루들, 코치님들에게 할 수 있는 질문을 많이 하면서 미션을 마무리하였다. 자동차 경주 미션에서는 1, 2단계를 통합하여 회고를 작성한 것과 다르게 사다리 미션에서는 1단계 미션에서 페어 프로그래밍 한 것과 리뷰 받은 것을 토대로 따로 회고를 작성하였다. 주말에도 코딩을 많이 하였다. 잠을 잘 자고 내 삶을 잘 챙겼다. Problem (아쉬운 것) [업무] 시간을 효율적으로 사용한 느낌이 들지 않는다. 소프트 스킬이나 피드백 강의 시간이 많아서 그렇게 느껴지는 것 같기도 하다 아침에 일찍 일어나지 못해..

우아한테크코스/레벨1

[TDD] 1단계 `사다리 생성 미션` 페어 프로그래밍 & 코드 리뷰 회고

이번 미션은 🔥TDD🔥 가 가장 중점적인 학습 목표이다. 사다리 타기 미션을 함께하게 된 레디와 페어 프로그래밍을 진행하고, 리뷰어 현구막에게 리뷰를 받고 리팩토링한 후기를 작성하려 한다. TDD가 학습 목표라며 운을 뗐지만 사실 이번 미션을 진행하면서 TDD의 장점에 대해 깊이 이해하지 못하였다. 페어 프로그래밍 때는 우선 아래와 같은 TDD의 사이클을 지키면서 TDD를 경험해보았다. TDD cycle 1. 요구사항 정의하기 2. 실패하는 테스트 케이스 생성하기 3. 테스트가 성공하도록 구현하기 4. 리팩토링하기 그리고 시간 안에 기능을 구현하는 것에 집중하였고, 생각보다 사다리 출력 기능을 구현하는 것에서 많은 시간을 소비하였다. 그리고 리팩토링을 할 때는 객체의 역할 분리와 추상화, 가독성에 대해서..

DEV book/TDD

[TDD] 테스트 주도 개발 (켄트 백) 예제 - 화폐 계산기

주가를 곱하는 기능 구현 기능 요구사항 - 다중 화폐를 다루는 보고서를 만들기 위해 화폐 연산 기능을 구현한다. 기능 구현 목록 - 통화가 다른 두 금액을 더해서 환율에 맞게 변환한 금액을 구한다. - 주가를 주식의 수로 곱한 금액을 구한다. 두 번째 기능부터 구현하기 위해 테스트 코드를 작성한다. class MoneyTest { @Test void testMultiplication() { Dollar five = new Dollar(5); five.times(); assertEquals(10, five.amount()); } } 컴파일 오류가 생기는 원인을 정리해보자. Dollar 클래스가 없음 생성자가 없음 times() 메서드가 없음 amount 필드가 없음 public class Dollar { ..

우아한테크코스/레벨1

[회고] 우아한테크코스 6기 백엔드 레벨1 2주차 회고

KPT를 활용한 회고 작성을 추천 받아 내가 이번 주에 잘한 것, 잘 하지 못한 것 그리고 개선할 점을 간단하게 작성해 보려고 한다. 은근 회고도 에너지 소모가 크기 때문에 내가 힘들지 않을 만큼 성실하게 써보려고 한다 ㅎㅎ Keep (잘한 것) 많은 사람들과 적극적으로 네트워킹 한 것 틈틈이 다른 사람들의 코드를 보면서 내 코드를 개선하려 한 점 페어 프로그래밍 과정에서 다룬 내용들을 기록한 것 Problem (아쉬운 것) 주말에 코딩을 많이 하지 않았다. 하나의 일을 4시간 이상 몰입해서 하지 못했다. 환경상 사람들과 함께 하는 것이라 어쩔 수 없기도 하지만, 나만의 공간에서 일정 시간 이상 몰입하고 싶다. 회고를 꾸준히 작성 하지 못했다. 잠을 충분히 자지 못해서 효율적인 아침을 보내지 못했다. T..

우아한테크코스/레벨1

[UnitTest] 🚗자동차 경주🚗 페어 프로그래밍 & 리팩토링 회고

우아한 테크코스의 레벨1이 본격적으로 시작되면서 첫 미션인 자동차 경주를 페어 프로그래밍으로 진행하게 되었다. 온보딩 미션인 자동차 경주에서는 단위 테스트를 학습하는 것을 주요 목표로 삼았고, 미션 진행 과정은 다음과 같이 2단계로 나뉘어져 있었다. 미션 진행 및 코드 리뷰 1단계 - 자동차 경주 (페어 프로그래밍) 2단계 - 자동차 경주 리팩터링 나는 테바와 페어가 되어 함께 1단계 자동차 경주 미션을 구현하게 되었다. 그리고 수달의 리뷰를 통해 코드를 리팩토링해보았다. 페어 프로그래밍에서 다룬 내용들 자동차 경주 미션을 수행하면서 사소한 코드부터 큰 범위의 로직까지 많은 내용을 다뤘다. 그 중에서 의문으로 남았던 몇 가지 큰 주제들에 대해서 정리해보려 한다. RandomNumberGenerator 테..

우아한테크코스/레벨1

Random 기능이 포함된 메서드를 어떻게 테스트할 수 있을까? (feat. 전략 패턴)

우아한테크코스 레벨 1 미션을 진행하면서 무작위로 숫자를 생성하는 기능이 사용된 메서드를 테스트 하는 것에서 난항을 겪었다. 우여곡절 끝에 1단계 미션의 기능을 구현했지만, 2단계 미션에서 아래와 같이 테스트 가능한 부분과 불가능한 부분을 분리해 테스트 가능한 부분에서 단위 테스트를 진행하라는 요구사항이 나왔다. 그래서 이번 포스팅에서 내 나름대로 이 방법을 고민하고 반영한 과정에 대해서 기록해보려 한다. 메서드 시그니처를 수정하기 public CarStatus move() { int power = RandomNumberGenerator.generate(); if (power >= POWER_LOWER_BOUND) { position++; } return new CarStatus(carName.getNa..

우아한테크코스/레벨1

[회고] 우아한테크코스 6기 백엔드 레벨1 1주차 회고

우아한 테크코스 1주차 요약 2월 13일 : 오리엔테이션 / 연극 조 팀원들과 친해지는 시간 2월 14일 : 단위 테스트 학습 / 자동차 경주 미션 진행 (feat. 페어 프로그래밍) 2월 15일 : 자동차 경주 미션 마감 (feat. 페어 프로그래밍) 2월 16일 : 자동차 경주 미션 피드백 / 연극 리허설 1주차 소감 [최적의 루틴 찾기] 1주차는 정말 정신 없이 지나갔다. 정말 정말 정신없이 .. 😶 뭔가 새로운 걸 해내기보다는 우아한테크코스라는 공간, 시간에 적응하면서 나의 생활 리듬을 찾아가는 것이 1주차의 목표였다. 자취를 새로 시작했기 때문에 환경에 대한 적응 시간을 가지고, 나의 생활 패턴을 계획하고 이것 저것 테스트해보았다. 결과적으로 내가 가장 편안할 수 있으며 내가 해야 할 일을 해낼..

MINGYUM
코딩하는 겸