Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
3장 기본 도구
#pragmatic
2년 전
601

오늘 TIL 3줄 요약

  • 텍스트는 사람이 이해할 수 있어야 한다.

  • 에디터를 유창하게 사용할 수 있게 하라.

  • 디버깅은 단지 문제 풀이 일 뿐, 당황하지 말라.

TIL (Today I Learned) 날짜

2022.05.18

오늘 읽은 범위

3장 기본 도구

책에서 기억하고 싶은 내용을 써보세요.

도구는 여러분의 재능을 증폭한다. 도구가 더 훌륭하고 여러분이 더 사용법에 능숙해질수록 여러분의 생산성은 더 높아질 것이다. 언제나 일을 하는 데에 더 나은 방법이 없는지 살펴라. 사용하는 도구로 다룰 수 없는 문제를 마주쳤다는 생각이 들면, 도움이 될 만한 뭔가 다른 것이다 더 강력한 것을 찾아보아야 한다는것을 명심하라. 필요에 따라 도구를 취하도록 하라.

이번 장에서는 자신의 기본 도구 상자에 어떻게 투자할지에 대해 이야기할 것이다.

Topic 16. 일반 텍스트의 힘

실용주의 프로그래머로서 우리의 기본 재료는 나무나 쇠가 아니라 지식이다. 그리고 우리는 지식을 저장하는 최고의 포맷이 일반 텍스트(plain text)라고 믿는다. 일반 텍스트를 사용하면 수작업으로든 프로그램으로든 동원 가능한 거의 모든 도구로 지식을 다룰 수 있게 된다.

일반텍스트는 인쇄 가능한 문자로 이루어지고, 정보를 전달하기에 적합한 형식을 갖추어야 한다. 음식 목록처럼 간단할 수도 있다.

  • 아이스 카페라떼

  • 초콜릿

  • 떡볶이

정보를 전달한다는 부분이 중요하다. 다음은 쓸모없는 일반 텍스트다. 이 문자들을 읽어도 467abe의 의미가 뭔지 전혀 알 수 없다. 우리가 만드는 일반 텍스트는 사람이 이해할 수 있어야 한다.

  • Field19=467abe

사람이 읽을 수 있는 형태의 데이터와 그 자체만으로 의미가 드러나는 데이터는 다른 어떤 형태의 데이터 보다 오래 살아 남을것이다. → 지원중단에 대한 보험

버전 관리 시스템에서 에디터, 명령 줄 도구에 이르기까지 컴퓨터 세계의 거의 모든 도구는 일반 텍스트를 다룰 수 있다. → 기존 도구의 활용

특별한 도구를 만들 필요 없이 간단하게 테스트 데이터를 추가하거나 수정할 수 있다. → 더 쉬운 테스트

Topic 17. 셸 가지고 놀기

텍스트 파일을 다루는 프로그래머에겐 명령어 셸이 작업대다. GUI는 훌륭한 것이고, 몇 가지 간단한 조작에는 더 빠르고 편리할 수도 있다. 하지만 모든 작업을 GUI로만 하면 여러분이 가진 환경의 능력을 전부 이용할 수 없다. 일반적인 작업을 자동화할 수 없고, 가용한 도구의 역량을 온전히 사용할 수 없다. 명령어 셸의 힘을 사용하자.

Topic 18. 파워 에디팅

텍스트는 프로그래밍의 기본 원재료이므로 텍스트를 최대한 손쉽게 조작할 수 있어야 한다.

에디터를 유창하게(fluency) 쓸 수 있게 하라.

  • 마우스나 트랙패드 없이 텍스트를 편집하는 능력

    ex. 문자, 단어, 줄, 문단 단위로 커서 이동 내용선택, 들여쓰기 자동으로 맞추기, 에디터 창을 여러 구역으로 쪼개고 각 구역 사이를 이동하기, 특정 줄 번호로 이동, 여러 줄을 가나다순으로 정렬, 여러개의 커서를 만든 다음 동시에 여러곳의 텍스트 편집 등

  • 개인에게 편한 에디터 명령어를 배워라

Topic 19. 버전 관리

  • 공유 디렉터리는 버전 관리 시스템이 아니다

  • 혼자 작업하더라도 언제나 버전 관리 시스템을 사용하라

  • 브랜치 사용하라

  • 프로젝트 허브로서의 버전관리

Topic 20. 디버깅

‘ 참으로 고통스러운 일입니다. 자신이 겪는 어려움을 보고는 알게 되죠. 다른 누구도 아닌 바로 자신이 문제를 만들었다는걸.’ 소포클래스라는 사람이 이렇게 슬픈 말을 했다.

아무도 완벽한 소프트웨어를 작성하지 못하므로 하루 대부분을 디버깅으로 보낼 것이라는 건 기정사실이다. 디버깅은 단지 문제 풀이일 뿐이라는 사실을 받아들이고, 그런 마음으로 공략하라.

  • 만약 다른 사람의 버그를 발견하다면 → 비난 대신 문제를 해결하라

  • 마감일이 코앞이거나 신경질적인 상사나 고객이 여러분을 바짝 붙어서 감시하고 있더라도, 한발짝 뒤로 물러 나서 버그라고 생각하는 증상의 원인이 무엇일지 진짜로 생각해 보는 것이 정말 중요하다 → 당황하지 말라

  • 디버깅 전략

    • 버그 재현하기 - 코드를 고치기 전 실패하는 테스트부터

    • 그놈의 오류 메시지 좀 읽으렴

    • 이진분할

    • 고무 오리 - 고무오리를 붙들고 차근 차근 설명해 나가는 단순한 행위

    • 외부제품에 문제가 있더라도 여러분의 코드에 문제가 없다는 것을 확인해야 한다

    • 가정하지 말고 증명하라

Topic 21. 텍스트 처리

범용 텍스트 처리도구가 필요한 때를 위해 텍스트 처리 언어를 익혀라.

유닉스나 맥을 사용하는 개발자들은 명령어 셸의 능력을 즐겨 활용하는 경우가 많은데, 여기에 awk나 sed와 같은 도구를 결합하여 사용하기도 한다. 좀 더 체계적인 도구를 선호하는 사람들은 파이썬이나 루비 같은 프로그래밍 언어를 더 좋아한다.

Topic 22. 엔지니어링 일지

일지를 쓰면 좋은점이 크게 세 가지 있다.

  • 기억보다 더 믿을 만하다.

  • 진행 중인 작업과 직접적인 관계가 없는 발상을 일단 쌓아 놓을 수 있는 곳이 생긴다. → 적어두면 다시 볼 수 있을테니 잊어버릴 걱정이 없다는 걸까?

  • 고무 오리와 같은 역할을 할 수 있다.

그 밖의 이점도 있다. 때때로 수년 전에 여러분이 무엇을 하고 있었는지 돌이켜 볼 수 있다.

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

빨간 에러는 늘 초조하게 만들고 침착함을 유지하기 어렵게 만든다. 종종 에러가 쉽게 해결되지 않을 때, ‘이걸 해결하지 못하면 어떡하지?’라는 불안감에 사로잡히곤 했다. 해결하기까지의 시간에 대한 압박감에 더 덜덜덜 했었던것 같다. 당황하면 오류 메시지는 눈에 잘 들어오지 않는다. 그러다가 다시 정신차리고 평정을 찾았을 때서야 오류 메시지를 천천히 읽어보면 해결 할 수 있었다. 그리고 나 자신을 한심해 한다. 그래서 ‘그놈의 오류 메시지좀 읽어라' 부분에서 빵터졌다. 사람사는거 다 똑같구나.

에러도 침착하게 깔끔하게 클리어하는 으른스런 시니어가 되고 싶다. 지금은 약간 오리 붙들고 애걸복걸하는 편...

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

디버깅부분에서 이진 분할 사례가 잘 이해가 가지 않았다. 예시를 한번 알아보는게 좋을 것 같다.

오늘 읽은 다른사람의 TIL