좋은 실수를 하는 방법

Jake·2024년 4월 17일
0

유튜브를 보다가 우연히 좋은실수 라는 제목의 쇼츠를 보게 되었어요.

좋은실수 / 출처 : youtube


저는 개발을 하며 실수는 반드시 존재하지만 그 실수를 좋은 경험으로 가져가는 것은 다른 문제라고 생각했었어요.

그러다가 이 영상을 보게 되고 많은 공감을 하며 저의 상황에 대입해보았어요.


실수를 (자신에게) 숨기지 않는다

실수를 했을때에 숨기지 않는 것이에요.

숨기는 대상은 다른사람에게 숨기지 않는 것은 물론이고

더 중요한 것은 자기 자신에게 숨기지 않는 것

이에요


저는 종종 실수들을 할때면 블로그에 그 기록을 남기려고 해요.

왜냐하면 어떤 부분에서 실수를 했는지 기록하고 정확하게 이해하기 위해서이죠.

실수를 하였을때 기록하고 개념을 찾아보고 고민해서 이해가 되는 경우도 있을거에요. 하지만 모든내용이 100% 이해가 되는 경우도 잘 없어요.

저는 이때 제가 기록하고 고민한 뒤에는 스스로가


그래 이쯤하면 되었어, 나는 할만큼 했고 어느정도 이해했으니 넘어가자


라는 생각을 했던 것 같아요.

저는 바로 이 과정이 교수님이 말하는


자기자신을 속이는 순간


이라고 순간적으로 생각이 들었습니다.

그러면 어떻게 하는게 좋을까요 ?


어떻게 자기 자신을 속이지 않을 수 있을까 ?


어떤 방법들이 있을까요 ?

그건 개인마다 다르겠지만 저의 경우

내가 이렇게 실수하게 된 생각의 원인을 찾아보자


라고 생각이 들었어요.

이유는 실수라는 것은 제가 어떠한 행동에 의해서 나온것이고, 행동의 원인은 저의 판단에 의해 이루어졌기 때문이에요


실수를 하는 과정


실수 -> 행동 -> 판단


그래서 이 판단의 원인이 된 이유를 찾고 그 지점부터 다시 고민을 해보는게 좋은 실수를 하는 방법이라고 생각이 들었어요.


예시


예를 들어 VO에서 검증하는 로직을 사용한다고 가정해볼게요.

...
public class PostAuthorName {
    @Column(name = "author_name")
    private String authorName;

...

    private void validateNotNull(String authorName) {
        if (Objects.isNull(authorName) || authorName.isBlank()) {
            throw new PostBadRequestException("게시글의 저자 이름은 필수 항목입니다.");
        }
    }
}

위 코드에서 제가 authorName에 대해 null 값에 대한 체킹을 하기 위해 .isNull이라는 메서드를 사용하였어요. 제가 이렇게 사용한 이유는 단지 나보다 잘해보이는 사람이 작성하였기 때문이였어요.

저는 반복적인 코드를 작성하다가


null 검증을 왜 Dto와 Domain 레벨 2군데에서 하지 ?


라는 의문을 가지게 되었고, 그와 동시에


이전에 다른사람들은 == null 로도 사용하던데 뭐가 다른거지 ?


와 같은 의문을 가지게 되었어요.


그래서 찾아보니


첫번째는 아직 확실하지는 않지만 값을 변경해야하는 상황에서 무결성을 위해 값을 변경하는 것이 아닌 새로운 VO를 생성할때 null을 자체적으로 검증하기 위한것 이지 않을까 ? 라는 결론을 내렸어요.


두번째는 위와 같은 상황에서 사용하는 isNull() 메서드 방법은 권장되지 않는 방법이었어요. 즉, 좋지 못한 사용법이었죠.

이유는

  1. isNull()이 가독성 측면에서 좋지 못하고
  2. 애초에 이렇게 null 체킹을 위해 만들어진 메서드가 아님

그래서 무작정 따라한 제 자신이 부끄러웠고, 다시 == null 로 바꿔야겠다는 생각을 하였어요.


왜 이렇게밖에 할 수 없었을까 ?


이러한 상황에서 좋은 실수 를 하기 위해


왜 내가 처음에 다른사람의 코드를 무작정 따라하였을까 ?

라는 고민을 해보는거에요.


앞서 설명드렸던 3가지의 개념(실수 - 행동 - 판단)을 가지고 역발상을 해보는거죠.

(판단 -> 행동 -> 실수)


지금 다시 생각해보면

이 사람은 나보다 코드를 잘 짜니까 모든 면에서 탁월할거고, 대부분의 내용이 매우 적절하게 사용되었을거야. 그러니 많이 참고해보자


라는 결론을 스스로 내렸던 것 같아요.

그렇게 판단이 흐려지니 잘못된 행동을 하게 되었고 그 결과 실수로 이어진 것이죠.

그러면 왜 이런 판단을 하게 되었을까요 ?


그러면 왜 이렇게 행동을 하였고 실수를 하였을까요 ?

다른사람의 코드를 보고 참고하는건 좋지만


무작정 참고 하는 것이 좋지 못했던 것이에요. 즉, 그 참고하는건 괜찮았지만 그 방법이 잘못된 것이었죠.


  1. 참고를 하더라도 코드를 보고 고민해보고,
  2. 왜 이렇게 작성하였을까? 에 대해서 스스로 납득이 될만한 이유를 찾은 뒤
  3. 행동으로 옮겨졌어야 하지만 이번 예시의 경우 그러지 못했어요.

그러니 앞으로는

다른사람의 코드를 참고할때 아래 원칙을 세우고 적용해보려고 해요.

  1. 코드의 의도를 파악한다
  2. 그 코드를 내가 다시 리팩터링 해본다
  3. 이해가 안되면 주변사람이나 오픈톡방에 물어본다
  4. 적용한다

여기서 핵심은 그냥 무작정따라하는 것이 아닌 내가 이해하고 그 방법을 사용하는 것 이에요.


2. 끝까지 제대로 실수한다

두번째는 끝까지 제대로 실수를 해보는 거에요.


후에 추가로 적어볼게요!

0개의 댓글

관련 채용 정보