본문 바로가기
Book/실용주의 프로그래머

3장 : 기본적인 도구

by dug_developer 2022. 4. 1.
반응형

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

📔일반 텍스트의 힘

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

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

일반 텍스트란?

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

  • 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을 추천한다.

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

 

📔코드 생성기

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

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

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

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

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

반응형