3장 : 기본적인 도구

박상훈·2021년 12월 2일
0

모든 장인들은 기본적인 훌륭한 도구들을 몇 개 갖고 자신의 여정을 시작한다.

📔일반 텍스트의 힘

실용주의 프로그래머로서 우리의 기본 재료는 나무나 철이 아니고 지식이다.

우리가 지식을 저장하는 최고의 포맷은 **일반 텍스트**라고 믿는다

일반텍스트란?

사람이 직접 읽고 이해할 수 있는 형태의 인쇄가능한 문자로 이루어진 텍스트

  • XML, JSON,HTML등은 잘 정의된 구조를 가진 일반 텍스트의 예다.

지식을 일반 텍스트로 저장하라.

단점

  1. 압축된 이진 포맷을 사용하는 것보다 더 많은 공간을 차지함
  2. 일반 텍스트 파일을 해석하고 처리하는 데에 더 많은 계산이 필요할 수 있다.

텍스트의 힘

구식이 되는 것에 대한 보험

텍스트는 어떤 다른 형태의 데이터와 그걸 생성한 애플리케이션보다 더 오래 살아남을 것이다.

데이터가 살아있는 한 그걸 사용할 수 있는 기회가 찾아오기 마련이다.

어쩌면 원래의 애플리케이션이 소멸해 버린 한참 뒤에도...

호환성

컴퓨팅 세계의 거의 모든 도구들은 일반 텍스트를 다룰 수 있다.

더 쉬운 테스트

특별한 도구를 만들어야 할 필요 없이 간단히 테스트 데이터를 추가, 수정, 삭제할 수 있다.

📔조개 놀이

GUI의 장점은 WYSIWYG(What You See Is What You Get) - 보는것이 얻는 것이다

단점은 WYSIAYG(What You See Is All You Get) - 보는것이 얻는것의 전부이다.

명령어 셸의 힘을 사용하라


📔파워 에디팅

하나의 에디터를 잘 사용하라.

하나의 에디터에 대해서 숙련되라는 내용이다.

나 같은 경우에는 VSCode 더 잘 사용하면 될 듯하다.


📔소스코드 관리

진보라는 것은 변화와는 거리가 말고 오히려 기억에 의존한다, 과거를 기억하지 못하는 사람은 과거를 반복할 운명이다 -조지 산타야나-

소스코드 관리 시스템, 넓은 의미의 형상관리 시스템은 소스코드나 문서 관련의 모든 변화를 기억한다.

언제나 소스코드 관리 시스템을 사용해라.

  • 나 같은 경우에는 깃헙이나 깃을 지금처럼 잘 사용하라는 내용이다.

📔디버깅

디버깅의 심리

디버깅 자체는 많은 개발자에게 예민하고 감성적인 주제다.

풀어야 할 퍼즐로 공략하는 대신 부정, 지목, 어설픈 변명 혹은 냉담 같은 것들을 대하게 될 것이다.

다른 사람의 버그를 발견한 후, 그 사람에게 비난을 하게 되는 경우가 많은데 그러면 안된다.

비난 대신 문제를 해결하라.

디버깅 사고방식

디버깅를 하기 앞서서 올바른 사고방식을 갖는 게 중요하다.

  • 자신의 자아를 보호하기 위한 방어기제를 꺼야한다.
  • 여러분에게 부과되는 프로젝트의 압박도 무시하고 스스로를 편안하게 만들어야한다.

디버깅을 할 때 당황하지 마라.

  • 한 발짝 뒤로 물러나서 생각하는 것이 중요하다.

"절대 그럴리가 없는데..."라는 생각은 하지도 말아라, 실제로 일어난 일이니까!

근본적인 원인을 발견하려고 노력하고, 그 문제의 특정한 증상만 고치려고 하지 말아라.

데이터를 가시화하라.

백문이 불여일견 : 백 번 듣는 것이 한 번 보는 것만 못하다.

어떤 개발자가 select 시스템 콜이 콜라리스에서 제대로 작동하지 않는다고 확신했다.
어떤 설득이나 논리도 그를 설득할 수 없었다.
그는 오랜 기간에 걸쳐 우회하는 코드를 작성했지만, 뭔가 이상한 이유로 문제가 해결되지 않았다.
결국 자리에 앉아서 select에 관한 문서를 읽도록 강요받자, 
그는 문제를 발견해냈고 몇 분만에 문제를 해결했다.

결국 그 개발자가 select에 대한 무지로 인해서 생긴 일이었다.

그 후로 자신의 실수일 수 있는 일을 시스템의 문제라고 비난하기 시작하는 사람이 있기만 하면 그 사건을 기억하기 위해 'select가 망가졌어' 라는 문구를 사용한다.

'select'는 망가지지 않았다.

놀람의 요소

어떤 버그로 놀라게 될 때, 애지중지 믿고 있던 진실들을 재평가해야만 한다.

뭔가 잘못되었을 때 놀라는 정도는 그걸 신뢰하던 정도에 비례한다.

가정하지 마라. 증명하라.

버그를 발견하고 고치는 것을 넘어서 왜 이 버그가 더 일찍 발견되지 않았을까 생각해보고 작성을 해라, 다음번에는 놀라지 않기 위해!


📔텍스트 처리기

텍스트 처리 언어를 하나 익혀라.

책에서는 Perl 을 추천한다.

아직 텍스트 처리기를 접할 기회가 없어서 낯선 개념이었다!


📔코드 생성기

코드를 작성하는 코드를 작성하라

반복적인 타이핑 회수를 줄여서 수근관증후군에서 우리 자신을 보호해야한다.

똑같은걸 만들 때는 템플릿을 써먹으면 된다.

잘만든 템플릿은 두고두고 써먹는다.

반복되는 작업을 통한 실수를 대폭 줄여주고 실제로 해야할 구현에만 집중할 수 있게 해준다.

profile
널 가로막는 벽을 넘어서면 그 벽은 널 지키는 성벽이 될거야 -월담장인 박상훈-

0개의 댓글