-
실용주의 프로그래머 정리 3Study/실용주의 프로그래머 2021. 11. 22. 23:05
기본적인 도구
개발 생산성을 높이기 위해서는 적합한 도구를 쓰는 것이 중요하다. 기본적인 도구와 더불어 상황에 맞는 도구를 확장해서 능숙하게 사용할 수 있어야 한다. 이번 장에서는 도구를 잘 활용하는 방법에 대해 알아보도록 하자.
일반 텍스트의 힘
일반 텍스트는 그 자체로 알아보기 쉽고 다루기 쉽다. 데이터를 효율적으로 저장하기 위한 경우를 제외하면 일반 텍스트를 잘 활용하자. 잘 정의된 일반 텍스트는 강력하다.
쉘 게임
쉘은 자동화 하기에 정말 좋은 도구다. GUI 기반의 툴들은 제한된 동작을 제공하지만(사실 요즘 GUI들은 플러그인이나 커스터마이징을 많이 지원해준다. 옛날 책이라 그런듯) 쉘을 이용하면 무궁무진한 기능을 제공할 수 있다. 특히 반복적인 작업을 자동화할 때 아주 유용하다. 쉘 스크립트와 명령어를 조합해서 DRY 원칙을 잘 지켜보자
파워 에디팅
자기가 주로 쓰는 에디터의 기능을 잘 익히고 사용한다면 생산성을 매우 늘릴 수 있다. 여러 개의 에디터를 쓰는 것도 좋지만 우선 자기가 주로 사용하는 에디터의 기능을 익히자. 신세계가 펼쳐질 것이다.
소스코드 관리
소스코드 관리는 매우 중요하다. 요즘은 대부분 git을 사용해서 소스코드를 관리한다. 소스코드 버전, 릴리징 관리 등 다양한 기능이 있어서 협업 및 생산성에 큰 도움이 될 뿐만 아니라 문제가 생겼을 때 원인이 되는 코드를 찾을때도 유용하다. 만약 팀에서 버전관리시스템을 쓰고있지 않다면 개인 작업 공간에서만이라도 사용하자. 큰 이득이 있다.
디버깅
디버깅은 매우 고통스러운 작업이다. 실제로 개발하는 시간보다 디버깅 시간이 더 길때도 많다. 몇가지 디버깅 원칙을 익혀서 디버깅 속도를 높여보자.
- 자기 방어를 위해 코드가 옳다고 생각하지 말자. 코드와 자신을 동일시 하지말자. 코드가 틀렸다고 내가 틀린건 아니다. 코드가 틀리지 않았다는 생각에 갇혀버리면 문제를 제대로 바라보기 힘들다.
- 경계 테스트를 하자. 사용자는 개발자가 예상한대로 사용하지 않는다. 따라서 기능에 대한 경계 지점을 잘 테스트하자. 버그를 재현할 수 있을 것이다.
- 시각화 툴을 이용해서 데이터를 눈으로 보자. 디버깅할 때 큰 도움이 될 것이다.
- 동시성 등 확인하기 힘든 문제가 발생했을 때는 로그 등을 남겨서 추적할 수 있도록 하자.
- 고무 오리에게 설명하듯이 버그가 발생한 부분의 구현을 하나하나 설명해보자. 버그가 보일 것이다.
- 문제를 좁혀나가자. 문제가 발생한 코드를 좁혀나가면서 버그를 격리하자. 좀 더 찾기 수월해질 것이다.
텍스트 처리
텍스트 처리 언어를 익히면 생산성에 큰 도움이 된다. ex) awk, sed, 파이썬, perl, ruby, ... 이런 도구들을 사용하면 기존에 사용하던 언어보다 훨씬 빠르게 텍스트를 처리할 수 있을 것이다. 자바 코드의 getter, setter 코드를 자동 삽입해주거나, 데이터베이스 스키마로부터 entity 파일을 생성해주거나 여러가지 것들을 자동화하는데도 쓸 수 있다.
코드 생성기
때때로 유사하지만 다른 반복적인 코드를 작성해야할 때가 있다. 이때는 코드 생성기를 만들어보자. 트레이드 오프를 잘 계산해서 코드 생성기를 만들었을 때 생산성이 더 올라간다면 시간을 아낄 수 있을 것이다.
'Study > 실용주의 프로그래머' 카테고리의 다른 글
실용주의 프로그래머 정리6 (0) 2021.12.12 실용주의 프로그래머 정리5 (0) 2021.12.06 실용주의 프로그래머 정리 4 (0) 2021.11.28 실용주의 프로그래머 정리 2 (0) 2021.11.21 실용주의 프로그래머 정리1 (0) 2021.11.17