유튜브를 보다가 우연히 좋은실수 라는 제목의 쇼츠를 보게 되었어요.
저는 개발을 하며 실수는 반드시 존재하지만 그 실수를 좋은 경험으로 가져가는 것은 다른 문제라고 생각했었어요.
그러다가 이 영상을 보게 되고 많은 공감을 하며 저의 상황에 대입해보았어요.
실수를 했을때에 숨기지 않는 것이에요.
숨기는 대상은 다른사람에게 숨기지 않는 것은 물론이고
더 중요한 것은 자기 자신에게 숨기지 않는 것
이에요
저는 종종 실수들을 할때면 블로그에 그 기록을 남기려고 해요.
왜냐하면 어떤 부분에서 실수를 했는지 기록하고 정확하게 이해하기 위해서이죠.
실수를 하였을때 기록하고 개념을 찾아보고 고민해서 이해가 되는 경우도 있을거에요. 하지만 모든내용이 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() 메서드 방법은 권장되지 않는 방법이었어요. 즉, 좋지 못한 사용법이었죠.
이유는
그래서 무작정 따라한 제 자신이 부끄러웠고, 다시 == null
로 바꿔야겠다는 생각을 하였어요.
이러한 상황에서 좋은 실수 를 하기 위해
왜 내가 처음에 다른사람의 코드를 무작정 따라하였을까 ?
라는 고민을 해보는거에요.
앞서 설명드렸던 3가지의 개념(실수 - 행동 - 판단)을 가지고 역발상을 해보는거죠.
지금 다시 생각해보면
이 사람은 나보다 코드를 잘 짜니까 모든 면에서 탁월할거고, 대부분의 내용이 매우 적절하게 사용되었을거야. 그러니 많이 참고해보자
라는 결론을 스스로 내렸던 것 같아요.
그렇게 판단이 흐려지니 잘못된 행동을 하게 되었고 그 결과 실수로 이어진 것이죠.
그러면 왜 이런 판단을 하게 되었을까요 ?
그러면 왜 이렇게 행동을 하였고 실수를 하였을까요 ?
다른사람의 코드를 보고 참고하는건 좋지만
무작정 참고 하는 것이 좋지 못했던 것이에요. 즉, 그 참고하는건 괜찮았지만 그 방법이 잘못된 것이었죠.
- 참고를 하더라도 코드를 보고 고민해보고,
- 왜 이렇게 작성하였을까? 에 대해서 스스로 납득이 될만한 이유를 찾은 뒤
- 행동으로 옮겨졌어야 하지만 이번 예시의 경우 그러지 못했어요.
그러니 앞으로는
다른사람의 코드를 참고할때 아래 원칙을 세우고 적용해보려고 해요.
여기서 핵심은 그냥 무작정따라하는 것이 아닌 내가 이해하고 그 방법을 사용하는 것 이에요.
두번째는 끝까지 제대로 실수를 해보는 거에요.
후에 추가로 적어볼게요!