본문 바로가기
[실용주의 프로그래머] 디버깅 [실용주의 프로그래머] 디버깅 -소프트웨어 결함은 요구사항을 오해하는 것에서 코딩 에러에 이르기까지 여러 모습으로 나타난다. 디버깅의 심리 -디버깅은 단지 문제 해결이라는 사실을 포용하고, 그 방식으로 공략하라.다른 사람의 버그를 발견한 후, 그 버그를 만들어낸 부정한 범죄자를 비난하는 데에 시간과 노력을 들이는 수가 있다.하지만 기술의 전당에서는 남을 비난하기보다 문제를 고치는 데에 집중하고 싶어한다. 비난 대신 문제를 해결하라. -버그가 여러분의 잘못인지 다른 사람의 잘못인지는 그리 중요한 게 아니다. 어쨌거나 그 버그는 여러분의 문제로 남는다. 디버깅 사고방식 -디버깅을 시작하기에 앞서서 올바른 사고방식을 갖는 게 중요하다.자신의 자아를 보호하기 위해 매일 사용하는 많은 방어시설을 꺼버려야 한다. .. 2018. 10. 21.
[실용주의 프로그래머] 소스코드 관리 [실용주의 프로그래머] 소스코드 관리 -언제나 소스코드 관리 시스템을 사용하라. -언제나, 혼자서 한 주짜리 프로젝트를 진행하는 경우일지라도, 나중에 ‘버리기로 한’ 프로토타입일지라도, 심지어 여러분이 작업하는 것이 소스코드가 아닐지라도, 모든 것이 소스코드 관리 아래 있도록 하라. 소스코드 관리와 빌드 -전체 프로젝트를 소스코드 관리 시스템의 보호막 아래에 두는 것에는 엄청나게 큰 이득이 숨겨져 있다.제품 빌드가 자동화되고 그것을 반복할 수 있게 되는 것이다. 하지만 우리 팀은 소스코드 관리 시스템을 사용하지 않는데 대표적 소스코드 관리 시스템 [실용주의 프로그래머] 소스코드 관리, 소스코드 관리 시스템 2018. 10. 20.
[실용주의 프로그래머] 파워 에디팅 [실용주의 프로그래머] 파워 에디팅 하나의 에디터 -하나의 에디터를 잘 사용하라. -에디터 하나를 골라서 완전히 마스터하고, 모든 편집 작업에 그 에디터를 사용하라. -선택한 에디터가 사용하는 모든 플랫폼에서 가능한지 확인하라. emacs, vi, CRiSP, Brief 등은 다중 플랫폼에서 사용가능하고 종종 GUI 와 텍스트 화면 버전 모두를 지원한다. 에디터의 기능 설정변경 가능 일반적인 편집 작업을 위해 키 입력만 사용하는 것이 마우스나 메뉴를 통한 명령보다 더 효율적인데, 이는 손이 키보드를 떠나지 않기 때문이다. 확장 가능 프로그램 기능 구문 강조(syntax highlighting)자동완성자동 들여쓰기코드나 문서 상용어구 지원관련 도움말 시스템IDE 기능 (컴파일, 디버그 등) 생산성 여기에서.. 2018. 10. 19.
[실용주의 프로그래머] 조개 놀이 (Shell Games) [실용주의 프로그래머] 조개 놀이 (Shell Games) -GUI 의 장점은 WYSIWYG(What You See Is What You Get)단점은 WYSIAYG(What You See Is All You Get) -GUI 환경의 기능은 일반적으로 설계자의 의도에 따른 제약을 받는다.설계자가 제공하는 모델 이상을 필요로 하더라도 대개는 어쩔 수 없다.그러나 여러분은 종종 그 모델 이상을 필요로 한다. -명령어 셸의 힘을 사용하라. 쉘 유틸리티와 윈도우 시스템 What You See Is All You Get, What You See Is What You Get, WYSIAYG, WYSIWYG, [실용주의 프로그래머] 조개 놀이 (Shell Games), 명령어 쉘의 힘을 사용하라 2018. 10. 18.
[실용주의 프로그래머] 일반 텍스트의 힘 [실용주의 프로그래머] 일반 텍스트의 힘 -도구는 재능을 증폭한다. 도구가 더 훌륭하고, 그걸 어떻게 사용하는지 더 잘 알수록, 여러분은 더 생산적일 수 있다.일반적으로 적용되는 기본적인 도구 세트로 시작하라.경험을 얻고 특별한 요구사항을 만나면서, 이 기본적인 세트에 다른 도구를 추가하게 될 것이다. -일을 하는 데에 더 나은 방법이 없는가 늘 주변을 살펴라. -많은 신참 프로그래머들은 특정 IDE 하나만 고집하는 실수를 저지르고, 그 편한 인터페이스에서 떠날 생각을 하지 않는다.이건 정말 실수다.IDE 가 강제하는 편리함의 울타리 바깥에서도 능숙하게 작업할 수 있어야 한다.유일한 방법은 기본 도구 세트를 늘 쓸 수 있도록 예리하게 유지하는 것이다. -실용주의 프로그래머로서 우리의 기본 재료는 나무나 .. 2018. 10. 17.
[실용주의 프로그래머] 추정 [실용주의 프로그래머] 추정 -정보가 누락되어 있는 무의미한 질문들이 있다.그러나 추정에 익숙하다면 답할 수 있는 문제들도 있다.추정치 산출 과정을 통해 여러분의 프로그램이 살고 있는 세계에 대해 좀 더 이해할 수 있게 될 것이다. -추정을 통해 놀람을 피하라. 얼마나 정확한 것이 충분히 정확한 것인가? -어떤 의미에서 모든 답은 추정치다.단지 누가 남보다 좀 더 정확한지가 다를뿐이다.그러므로 누군가 추정치를 물었을 때, 자신에게 물어보아야 할 첫 번째 질문은 여러분의 답변이 사용될 상황이다.질문자가 매우 높은 정확도의 답을 요구하는가, 아니면 단순히 큰 그림만을 요구하는가? -추정에서 한 가지 재미있는 사실은 사용하는 단위가 결과의 해석에 차이를 가져온다는 것이다. 기간을 추정할 때 다음과 같은 단위를.. 2018. 10. 16.
[실용주의 프로그래머] 도메인 언어 [실용주의 프로그래머] 도메인 언어 -언어의 한계가 곧 자기 세계의 한계다 - 루트비히 비트겐슈타인 -컴퓨터 언어는 여러분이 문제에 대해 생각하는 방식과 의사소통에 대해서 생각하는 방식에 영향을 미친다. 모든 언어에는 그 언어의 특징들의 목록이 딸려온다.특징들은 모두 어떤 해결 방안들을 제시할 수도 있지만 가려버리기도 한다. -우리는 언제나 앱 도메인의 어휘를 사용해서 코드를 작성하려고 노력한다.몇몇 경우, 한 차원 더 나아가서 실제로 그 도메인의 어휘, 문법, 의미론(즉 언어)을 사용해서 프로그래밍하는 일이 가능할 때도 있다. -사용자들이 정리가 잘 된 진술을 많이 해준다면, 여러분은 그들이 원하는 내용을 정확히 표현하는, 그 앱 도메인에 맞추어진 소형 언어(mini-language)를 만들 수 있다... 2018. 10. 15.
[실용주의 프로그래머] 프로토타입과 포스트잇 [실용주의 프로그래머] 프로토타입과 포스트잇 -소프트웨어 프로토타입은 위험요소를 분석하고 노출시키며 이를 매우 저렴한 비용으로 바로잡을 기회를 얻는 것이다.하나의 프로토타입을 프로젝트의 특정 측면에 중점을 두어 만들어 볼 수 있다. -프로토타입은 반드시 코드로 작성해야 한다고 생각하는 사람도 있지만, 꼭 그럴 필요는 없다.포스트잇은 작업흐름과 앱 로직과 같은 동적인 것들을 프로토타이핑해 볼 수 있는 훌륭한 도구다.사용자 인터페이스는 화이트보드에 그려 보거나, 페인트 프로그램, 인터페이스 빌더 등을 이용해 기능은 구현하지 않고 인터페이스만을 그려보는 방법으로 프로토타입을 만들 수 있다. -프로토타입은 제한된 몇 가지 질문에 답할 목적으로 설계되기 때문에 실제 제품보다 훨씬 작은 비용으로 빠르게 개발할 수 .. 2018. 10. 14.
[실용주의 프로그래머] 예광탄 [실용주의 프로그래머] 예광탄 -실용주의 프로그래머는 예광탄 사용을 선호한다. 어둠 속에서 빛을 내는 코드 -요구사항으로부터 최종 시스템의 일부 측면에까지 빨리, 눈에 보이게, 반복적으로 도달하게 해줄 무언가를 찾아야 한다.-> 목표물을 찾기 위해 예광탄을 써라. -예광탄 코드는 나중에 버리려고 만드는 것이 아니다. 그것은 계속 사용할 코드다.예광탄 코드에도 상용 코드와 마찬가지로 모든 에러 검사, 구조화, 문서화, 자기 검사가 포함된다.단지 예광탄 코드에는 아직 완전한 기능이 들어있지 않을 뿐이다. -예광탄 개발 방법은 프로젝트는 결코 끝나지 않는다는 관념과도 일맥상통한다.변화에 대한 요구와 추가할 기능은 언제나 계속 생기기 마련이다.예광탄 개발 방법은 점진적인 접근 방법이다. -예광탄 코드 접근 방법.. 2018. 10. 13.
반응형