본문 바로가기
일기/우아한테크코스 3기

[우아한테크코스 3기] 레벨 1 - 1주차 회고

by 검프 2021. 2. 8.

5Fs 시작.

회고하는 방법을 제대로 알지 못해 회고에 대한 두려움과 불안함이 먼저 다가왔었습니다.

하지만 멈춰 있을 수 만은 없는법!

교육과정 중 회고법에 대한 블로그를 공유받게 되어 의시적으로 연습해보려 합니다.

 

5Fs란?

1. Facts(한 것)

실제로 했던 일이나 겪었던 일의 사실을 적습니다.

2. Feelings(느낀 것)

일을 하거나 겪으면서 느꼈던 감정이나 느낌을 적습니다.

3. Findings(배운 것)

일을 하거나 겪으면서 새롭게 배운 점이나 알게 된 점을 적습니다.

4. Future Actions(할 것)

배운 점을 토태로 이후엔 어떻게 유지하고 개선할 것인지 적습니다.

5. Feedbacks(시간이 지난후 결과)

적절한 기간 이후 (저는 1달로 정함) 결과가 어떘는지 적습니다.

 

1. Facts(한 것)

우아한 테크코스가 시작됐다.

  • 오리엔테이션에 참석했다.

페어가 지정됐다

  • 1단계 미션을 시작했다.
  • dirver/navigator를 정하여 코드를 작성했다.

데일리 미팅이 진행됐다.

팀 프로젝트(보이는 라디오)가 시작됐다.

  • 팀원들을 zoom으로 만났다.

제이슨의 package와 import & 클래스와 인스턴스 수업을 들었다.

페어랑 분리됐다.

  • 추가 구현 및 리펙토링을 했다.

리뷰 요청 (pr)을 했다

  • 제이에게 피드백을 받았다.
  • 검증 후 할당 vs 할당 후 검증에 대한 의문점을 블로그에 정리했다.

 

2. Feelings(느낀 것)

목적없는 의식이아닌 목적있는 의식의 중요성을 느꼈다.

  • 과거의 나와 경쟁하자.

단축키를 잘 사용하면 편하다는것을 느꼇다.

페어 프로젝트는 생각보다 소프트스킬이 많이 필요하다는 생각을 했다.

케빈에게 많은 것을 배울 수 있어서 좋았다.

다른 크루와 코치를 알아가는 데일리 미팅이 좋다.

  • 빨리 다들 친해지고 싶다.

리뷰어(제이)를 만났다는 것이 감사하다.

  • 리뷰를 통해 성장한다는 느낌을 강하게 받았다.
  • 많은것을 여쭤보고, 배우고 싶다.

지식을 전달할 때는 나만의 명확한 답이 있어야 한다는 것을 느꼈다.

 

3. Findings(배운 것)

정규식을 어떻게 사용해야 좋을지에 대해 배웠다.

String.matches가 결국 Pattern을 쓰기 때문에, 미리 메모리에 올려놓고 사용하는 것이 리소스 절감 면에서 좋다고 한다.

     private static class Car {
        private static final Pattern PATTERN = Pattern.compile("[a-zA-Z]{1,5}");

        private final String name;

        public Car(String name) {
            this.name = name;
            validateName();
        }

        private void validateName() {
            if (Objects.isNull(this.name)) {
                throw new IllegalArgumentException();
            }
            Matcher matcher = PATTERN.matcher(this.name);
            if (!matcher.matches()) {
                throw new IllegalArgumentException();
            }
        }
    }

에러를 뱉지않음을 보여주는 코드에 대해 배웠다.

assertThatCode(() -> {
            new Car("pobi");
        }).doesNotThrowAnyException();
  • 에러를 뱉지 않으면 테스트가 성공한다.

소프트 스킬에 관해 배웠다.

타당한 근거와 장단점을 설명할 줄 알야함 ( 언제쓸때 좋은지, 안좋은지 등의 )

근거만 있으면 설득력이 없고, 고집뿐이 안된다

꼭 장단점이 함께 있어야한다 ( 그렇기 때문에 더 공부해야한다.! )

은탄환은 없다

항상 옳은 답은 없다! (이런 상황에선 이게 유리~ 등의 )

왜 이렇게 했냐에 대한 답은 본인이 명확히 가지고 있어야 함

누군가에게 지식을 전달할 때는 나의 생각과, 답을 명확히 가지고 있어야 상대방도 이해할 수 있다.

Random한 행위를 테스트하는 것은 어떤 값이 발생될지 모르기 때문에 아직 할 수 없다

멱등성을 가져야 하는 테스트가 특정 클래스로 인해 깨지는 것 (특정 범위내 숫자가 나온다 정도로 테스트 할 수 있을 것 같음 )

→ 유틸리티 클래스를 interface로 추출하여 원하는 값이 나오게하게끔 하여 테스트할 수 있는 방법을 배울 것이다.

협력을 구상할때 구체적인 접근보다는 큰 틀에서의 협력을 우선적으로 그려보는 접근이 더 좋다.

큰 틀이 그려지고 나면 디테일한 부분은 그 때 가서 구현하면 되기 때문

인스턴스화가 필요없는 클래스에 대해 생성을 막아두자

public class InputView {
    private static final Scanner SCANNER = new Scanner(System.in);

    private InputView() {
    }

abstract class는 body가 있는 공통 메서드를 추출할 수 있거나 공통의 멤버변수를 활용할 수 있을 때 사용한다.

공통의 메서드, 멤버변수가 없다면 interface를 사용하자.

테스트를 위해서 실제 사용하지 않는 메서드를 굳이 정의할 필요는 없다.

테스트를 위한 메서드를 만들지 말자.

Collections.singletonList(), Collections의 함수를 조금더 배웠다.

Collecions를 한번 파악해 봐야겠다. ****

검증은 한 클래스내에서 이루어지는 것이 아니다 & 자바 API를 의심하라

이는 노션으로 정리했습니다.

https://www.notion.so/Java-Java-API-8f4dceee5c84440288a5424a6326e457

에러가 발생했을때 인자를 넘겨주자

 ****     private static class Car {
        private void validateName() {
            if (Objects.isNull(this.name)) {
                throw new IllegalArgumentException();
            }
            Matcher matcher = PATTERN.matcher(this.name);
            if (!matcher.matches()) {
                throw new IllegalArgumentException();
            }
        }
    }

여기서 어떤 값 때문에 에러가 발생한지 모르기 때문.

 

4. Future Actions(할 것)

의식적인 연습을 더 신경쓰자

소프트웨어 의식적 연습 - 객체지향 생활 체조 원칙

규칙 1: 한 메서드에 오직 한 단계의 들여쓰기(indent)만 한다.
규칙 2: else 예약어를 쓰지 않는다.
규칙 3: 모든 원시값과 문자열을 포장한다.
규칙 4: 한 줄에 점을 하나만 찍는다.
규칙 5: 줄여쓰지 않는다(축약 금지).
규칙 6: 모든 엔티티를 작게 유지한다.
규칙 7: 2개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.
규칙 8: 일급 콜렉션을 쓴다.
규칙 9: 게터/세터/프로퍼티를 쓰지 않는다.

지식을 전달할 때 정확히 알고있자

지식을 주장하게 앞서, 타당한 근거와 장단점을 설명할 줄 알야함 ( 언제쓸때 좋은지, 안좋은지 등의 )

아직 많이 부족하다!

Collections함수에 대해 공부하자

자주 쓰는 메서드와, 한번쯤 알고있어도 좋을 메서드들을 살펴보자.

Abstarct 클래스와 interface를 공부하자.

둘의 차이점을 공부해볼 필요가 있다.

 

5. Feedbacks(시간이 지난후 결과)

댓글