개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
도구가 손의 연장선이 될 때 까지 도구의 사용에 익숙해져라.
한 가지 도구만을 고집하지 말고, 다양한 도구에 익숙해져라.
기록은 기억보다 더 믿을만하다.
TIL (Today I Learned) 날짜
2022. 05. 18
오늘 읽은 범위
3장. 기본도구
책에서 기억하고 싶은 내용을 써보세요.
도구는 여러분의 재능을 증폭한다. 도구가 더 훌륭하고 여러분이 더 사용법에 능숙해질수록 여러분의 생산성은 더 높아질 것이다.
각 도구에는 저마다 개성과 까다로운 면이 있을 것이기에 그에 걸맞게 다루어야 한다. 도구들은 제각기 고유의 방식으로 날카롭게 다듬어야 하고, 또 고유의 방식으로 손에 쥐어야 한다. 시간이 흐르면서 각 도구는 사용 습관에 따라 닳아서, 손잡이 부분은 마치 목수의 손을 본뜬 것 처럼 보일 것이고, 자르는 면은 도구를 드는 각도와 완벽히 평행을 이루게 된다. 이 시점에서 도구는 목수의 생각을 완성된 제품으로 끊임없이 전달하는 통로와도 같다. 도구가 손의 연장이 된 것이다.
실용주의 프로그래머로서 우리의 기본 재료는 나무나 쇠가 아니라 지식이다. 우리가 수집하는 요구 사항은 지식이고, 우리는 그 지식을 설계와 구현, 테스트, 문서로 표현한다.
일반 텍스트는 인쇄 가능한 문자로 이루어지고, 정보를 전달하기에 적합한 형식을 갖추어야 한다. 쇼핑 목록처럼 간단할 수도 있다. 우리가 만드는 일반 텍스트는 사람이 이해할 수 있어야 한다. 사람이 읽을 수 있는 것과 사람이 이해할 수 있는 것에는 차이가 있다.
여러분은 IDE가 갖는 한계를 넘어설 수 있어야 한다. 유일한 방법은 기본 도구들을 언제나 곧바로 사용할 수 있도록 예리하게 유지하는 것이다.
에디터에 유창해져야한다. 유창해지는 것의 가장 큰 이점은 더는 에디터 사용법을 생각하지 않아도 된다는 것이다. 뭔가를 생각하는 것에서 에디터 화면에 그게 뜰 때까지의 거리가 확 줄어든다. 생각이 자유롭게 흐를 것이고 프로그래밍에 큰 도움이 될 것이다.
버전 관리 시스템은 일종의 거대한 '실행 취소'키와 같다. 프로젝트 전체에 걸쳐서 코드가 실제로 컴파일되고 실행되던 지난주의 평화로운 시절로 돌려줄 수 있는 타임머신이다.
언제나. 혼자서 한 주짜리 프로젝트를 진행하는 경우일지라도, 나중에 '버리기로 한' 프로토타입일지라도, 심지어 여러분이 작업하는 것이 소스 코드가 아닐지라도, 모든 것을 버전 관리 아래에 둬라. 각종 문서, 전화번호 목록, 외부 업체에 보내는 메모, makefile, 빌드와 릴리스 절차, 로그 파일을 정리하는 작은 셸 스크립트까지 모두 다. 우리는 우리가 키보드로 입력하는 거의 모든 것에 대해 일상적으로 버전 관리 시스템을 사용한다. 이 책 원고도 마찬가지다. 우리가 특별한 프로젝트 작업을 하지 않을 때도 일상적인 작업은 저장소에 안전하게 보관된다.
디버깅은 단지 문제 풀이일 뿐이라는 사실을 받아들이고, 그런 마음으로 공략하라.
기술의 전당에서는 남을 비난하기보다 문제를 고치는 데에 집중해야 한다.
가장 속이기 쉬운 사람은 자기 자신이다.
문제를 맞이했을때 당황하지 말라. 근시안의 함정에 주의하라. 문제의 근본 원인을 찾으려고 노력하라.
다양한 방법으로 문제의 원인을 특정하고, 문제를 재현할 수 있을 만큼 이해하라.
일지를 써라. 일지를 쓰면 좋은 점이 세 가지가 있다. 기억보다 더 믿을만하며, 진행 중인 작업과 직접적인 관계가 없는 발상을 일단 쌓아 놓을 수 있는 곳이 생긴다. 또한 무언가를 쓰기 위해 하던 일을 멈추면 여러분의 뇌도 기어를 바꾼다. 누군가에게 이야기를 하는 것과 비슷하다. 하던 일을 돌아보기에 알맞은 기회가 생기는 것이다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
프로그래머는 기술자다. 그리고 기술자는 자신이 사용하는 도구에 숙달되어 있어야 한다. 일반 텍스트라고 하는 재료를 컴퓨터 내의 다양한 도구들을 사용하여 최종 사용자가 사용하는 프로그램을 만드는 것이 프로그래머라는 기술자가 하는 일이다. 목공 기술자가 목재를 가공해 가구를 만들듯, 프로그래머는 지식을 담은 일반 텍스트를 가공하여 프로그램을 만드는 것이다. 그러므로 프로그램을 잘 만들기 위해서는 프로그램을 만들기 위한 도구들에 익숙해질 필요가 있다.
도구에 익숙해지는 방법은 책에 자세히 기술되어 있으니 3장은 자주 찾아보고 참고하며, 연습하는 방법을 참고하기 위해서 자주 찾아볼 것 같은 느낌이 든다.
3장의 전반적인 내용은 기술자로써 도구와 재료를 다루는 방법에 대한 상세한 기술이라는 느낌이 든다.
특기할 내용이라고 한다면, 이 책이 꾸준하게 실용주의의 관점에서 넓게 보고 돌발 변수에 유연하게 대처 할 수 있도록 버전 관리 시스템 사용을 권장하고, 보다 직관적이고 다양한 상황에 사용 할 수 있는 쉘에 익숙해지라고 말하는 것이 이 책이 왜 실용주의 프로그래머라고 지어졌는지에 대해 이해 할 수 있을 것 같다는 느낌이 든다.
또한 디버그라는 프로그래머가 가장 흔히 겪을 벽에 대해서 두려워 하지 말고 문제라고 가볍게 생각하여 문제를 해결하기 위한 프로세스가 정교하게 이루어져있다는게 놀랍다. 또한 다양한 도구들을 활용해 문제가 어떻게 발생했는지, 어떤 부분에서 오류가 발생하는지 그 모든 과정을 기록하고 보관하여 추후에 분석하고 해당 문제를 재현할 수 있게끔 생활화 하라는 말이 너무나도 크게 와 닿는 것 같다. 어떤 문제든 전혀 예상하지 못하는 곳에서 발생할 수 있으니 사소한 것이라도 기록해 나가는 삶의 태도는 정말 본받을만 하다는 생각이 든다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
오늘 읽은 다른사람의 TIL