개발자 99% 커뮤니티에서 수다 떨어요!
도구는 여러분의 재능을 증폭한다. 사용하는 도구로 다룰 수 없는 문제를 마주쳤다는 생각이 들면, 도움이 될 만한 뭔가 다른 것이나 더 강력한 것을 찾아보아야 한다.
기본 도구 들을 언제나 곧바로 사용할 수 있도록 예리하게 유지하라.
아무리 흐린 먹물일지라도 가장 훌륭한 기억력보다 낫다. 여러분의 생각과 역사를 기록으로 남겨라.
2022.03.23
3장 기본 도구
실용주의 프로그래머로서 우리의 기본 재료는 나무나 쇠가 아니라 지식이다.
우리가 만드는 일반 텍스트는 사람이 이해할 수 있어야 한다.
지식을 일반 텍스트로 저장하라.
사람이 읽을 수 있는 것과 사람이 이해할 수 있는 것에는 차이가 있다.
명령어 셸의 힘을 사용하라.
셸에 익숙해지면 여러분의 생산성이 급상승할 것이다.
별칭과 셸 함수. 맨날 사용하는 명령어에 간단한 별칭을 만들어서 작업을 단순화하라.
에디터를 유창하게 쓸 수 있게 하라.
유창해지는 것의 가장 큰 이점은 더는 에디터 사용법을 생각하지 않아도 된다는 것이다.
모든 동작을 일일이 생각하면서 운전하는 초보 운전자와 의식하지 않고 차를 모든 경험 많은 운전자는 완전히 다르다.
여러분의 삶을 편하게 해 주는 명령어를 배워라.
유용한 기능을 새로 찾았다면 이 기능을 여러분의 몸이 기억하도록 만들어야 한다.
마우스나 트랙패드를 치워라. 1주일 동안 키보드로만 에디터를 사용하라. => 타격, 충격
진보라는 것은 변화와는 거리가 멀고 오히려 기억에 의존한다. 과거를 기억하지 못하는 사람을 과거를 반복할 운명이다.
버전 관리 시스템은 일종의 거대한 '실행 취소' 키와 같다.
버전 관리 시스템은 소스 코드나 문서의 모든 변경 사항을 기억한다. 소프트웨어 이전 버전으로 언제든지 되 돌아갈 수 있다.
VSC를 사용하면 소프트웨어의 특정 릴리스를 찾을 수 있다.
버전 관리 시스템을 사용하면 둘 이상의 사용자가 동일한 파일들을 동시에 작업할 수 있다.
언제나 버전 관리 시스템을 사용하라.
VSC의 매우 강력하고 유용한 기능으로, 개발 중인 내용을 섬처럼 따로 데어 격리하는 '브랜치'가 있다.
중앙 저장소가 있으면 프로젝트 업무 흐름을 원활하게 해 주는 수많은 확장 기능을 이용할 수 있다.
안전하게 롤백하는 명령어를 익히자.
디버깅은 단지 문제 풀이일 뿐이라는 사실을 받아들이고, 그런 마음으로 공략하라.
디버깅 1법칙: 당황하지 말라.
실제 문제는 여러분 눈앞에 있는 것에서 몇 단계 떨어져 있고, 또 다른 여러 가지와 연관되어 있을 확률이 다분하다.
자세한 정보를 충분히 얻으려면 해당 버그를 보고한 사용자가 시연하는 것을 눈으로 직접 확인해야 할 수도 있다.
처음에 받은 자료 이상을 얻기 위해서 버그를 보고한 사용자를 인터뷰할 필요가 있다.
경계 조건과 실제 최종 사용자의 사용 패턴 모두를 철저히 테스트해야 한다.
버그를 고치는 첫걸음으로 가장 좋은 것은 그 버그를 재현할 수 있게 만드는 것이다.
코드를 고치기 전 실패하는 테스트부터.
그놈의 오류 메시지 좀 읽어라.
디버거에서 호출 스택 위아래로 어떻게 이동하고, 스택의 지역 변수를 어떻게 확인하는 지 숙지하라.
스택 프레임을 일일이 조사하는 것보다 더 빠른 방법이 '이진 분할'을 하는 것이다.
문제의 크기가 조금만 커지더라도 이진 분할이 훨씬 더 빠르다.
고무 오리: 그냥 누군가에게 문제를 설명하라.
예상치 못한 '놀라운' 실패를 대면했을 때 자신이 세운 가정이 적어도 하나는 잘못되었다는 것을 받아들여야 한다.
놀라운 버그를 마주쳤을 때, 단순히 그걸 고치는 것을 넘어서 왜 이 문제가 더 일찍 발견되지 않았을까 생각해 봐야 한다.
버그를 수정하는 김에, 혹시 이것과 동일한 버그가 있을 법한 다른 코드가 있는지 살펴봐라.
디버깅은 그 자체만으로도 충분한 도전 거리다.
일지를 쓰면 좋은 점: 기억보다 더 믿을 만하다. 위대한 발상을 잊어버릴 걱정 없이 지금 하는 일에 계속해서 집중할 수 있다. 하던 일을 돌아보기에 알맞은 기회가 생긴다.
엔지니어링 일지를 남겨 보라. 파일이나 위키말고 종이를 사용하라.
이번 3장을 읽으면서 github의 엄청난 장점에 대해서 다시 한 번 더 생각할 수 있었고 앞으로 더 깃허브라는 버전 관리 시스템을 적극 사용해봐야겠다.
파워 에디팅에 나온 마지막... 마우스나 키패드 없이 코딩을 하라는 도전 과제가 충격적이다. 아마 현재의 나로는 마우스, 트랙패스 없이 코딩하는 것은 셸로 에디터를 키는 것 부터 엄청난 시간이 걸리지 않을까 싶다ㅎㅎ 그래도 마스터하기 위해서는 도전해 볼 만한 과제인 거 같다!
마지막으로 디버깅에 대해서 다른 Topic보다 많은 글을 정리했다. 지금 내게 필요한 것은 바로 디버깅이 아닐까 싶다.