부제: 디버깅의 고통을 절반으로 줄이는 고수들의 행동패턴 따라하기
배휘동님의 글을 살펴보다가 문득 깨달았다.
나는 책을 애정 하거나 글쓰기에 관심을 가진 분들을 특히 호감으로 보는구나..
강연 중에는 이런 뉘앙스를 전혀 느끼지 못했는데, 좋아하는 글에 공통점이 있어서 신기하다. 좋은 글을 만들기 위한 노력이 엿보이거나, 어떤 애환(?)이 느껴지는 순간 홀딱 빠진다.
그렇다. 좋았던 강연의 인상과 마음에 드는 글 조각이 시너지를 발휘하며.. 미친 듯이 좋잖아? 로 바뀌었다. - 책이나 글 한정으로 금사빠😍
about 지식공유자
✔️ 배휘동님 블로그: https://www.stdy.blog/about-kr/ <- 뉴스레터 구독 가능하다!
✔️ 맘에 들어온 글: https://steady-study.super.site/developer-who-wanted-first-nobel-prize-in-korea
이렇게 핥듯이 읽어대는 사람을 만나면 쑥스러워하실 것 같지만.. ㅎㅎ
강연 내용
인프콘 2024 다시보기
을 정리한 것입니다. 흐린 눈으로 보고 강연 동영상을 참고.
▫️ 디버깅
- 의도대로 동작하지 않는 무언가를 정상화하는 행위
- 정상적인 환경에서는 어떤 조건에서 어떤 순서로 어떤 일들이 벌어져야 하는가?
▫️ 디버깅 전문가를 만나다.(인터뷰)
➡️ 인터뷰 모음
▫️ 크롬 디버거
chrome for developers
크롬에서도 중단점을 설정해서 디버깅할 수 있구나. 😯 자바스크립트를 잘 모르지만, F12의 재발견이다.
▫️ 디버깅의 3단계
- 원인 파악 ⭐⭐⭐ <- 전문성의 핵심
- 문제 해결
- 사후 처리
▫️ 문제 원인 파악을 위한 5단계 가이드
사전: 작업을 위한 계획 세우기
1. 문제 정의
2. 정상 동작 정의
- 현재 벌어지는 일 관찰
- 관찰 정보 및 내가 이미 아는 것 적어보기(given, when, then)
- 올바른 동작을 테스트코드처럼 적어보기
- 올바른 동작이 정의되지 않는다면, 정의를 위해 추가 정보 수집.
3. 최소 재현 환경 구축하며 관찰
- 직접 재현하기
- 문제 발생 시점 확인, 문제가 발생한 사용자 환경과 동작을 그대로 따라함
- 문제를 더 작게 격리, 패턴 관찰.
4. 차이를 발생시키는 다양한 원인 탐색
- 추상적이든 구체적이든 떠오르는대로 적어보기
- 주니어는 훈련을 위해서라도 3개 정도 적어보기
- 옵션 적기가 어렵다면 추가 정보 수집.
5. 가설 설정 및 검증
- 옵션을 검증 가능한 가설 형태로 문장화(ex. A가 B로 되어있는 게 C 현상의 원인이라면, B를 B'로 변경했을 때 C가 C'로 바뀌어야 한다.)
- 작은 변경을 가하면서 가설대로 현상이 변하는지 관찰
- 가설이 틀렸다면 다음 가설로 넘어감
- 끝내 원인 파악 안되면 추가 정보 수집
(1 ~ 5 반복)
사후: 해결법 설계, ROI(Return on Investment) 파악, 우선 순위 결정
강연 중에 과학적 방법론이 떠올랐는데.. 구체적인 사례를 들어주셔서 직관적으로 이해하기가 좋았다. 데이터 수집의 굴레가 느껴지는 건 기분 탓이겠지..?
▫️ 디버깅 고수들의 습관
- TDD(Toilet Driven Development)
- DDD(Description Driven Development): git pull request 상세하게 기록하기. 검색이 쉬워짐
- IDD(Issue Driven Development) : github issue 활용하기
▫️ 디버깅은 누구나 배울 수 있는 기술이다.
디버깅 고수들이 어떤 생각을 하며 어떤 행동을 하는지 알고
그들의 행동을 따라하며 내걸로 만들어 연습하여
좋은 심적 표상을 쌓아나가면
누구나 디버깅 역량을 효과적으로 늘릴 수 있다.