목록책 내용 요약/실용주의 프로그래머 (4)
윤개발
깨진 창문을 내버려 두지 말라. 엔트로피는 시스템 내의 무질서한 정도를 나타내는 물리학 용어이다. 소프트웨어의 무질서도가 증가할 때 이를 소프트웨어의 부패라고 부른다. 소프트웨어의 부패가 발생하는데에는 심리적이거나 문화적인 요소가 있다. 깨진 창문이론 오랜 기간 수리하지 않고 방치된 창문 하나가 거주자들에게 버려진 느낌을 스며들게 한다. 강국자들이 그 건물에 별 관심이 없다는 느낌이다. 그래서 다른 창문이 하나 더 꺠진다. 사람들은 이제 어지르기 시작한다. 심각한 구조적 손상이 시작되고 느낌은 현실이 되어버린다. 깨진창문을 내버려 두지 마라. 나쁜 설계, 잘못된 결정, 혹은 형편없는 코드를 고치지 않은채로 내버려 두지 마라. 발견하자마자 고쳐라. 고칠 시간이 벗다면 주석으로 처리하거나 '구현되지 않았음'..
가장 큰 약점은 약점을 보일 것에 대한 두려움이다. - 보쉬에 실용주의 철학의 초석 중 하나는 자신과 자신의 행동에 대해 책임을 지는 것이다. 무지나 실수를 인정하는 일은 가장 즐거운 부분은 아니지만 분명 일어나는 일이다. 우리는 자신의 능력에 대해 자부심을 가질 수 있지만 실수나 무지 같은 단점에 대해서도 정직해져야 한다. 1. 책임지기 실수를 저지르거나 잘못된 판단을 했다면 정직하게 인정하고 다른 방안을 제안하도록 노력하라. 다른 무언가를 비난하거나 변명을 만들어 내지말고 해결안을 제공하는 것은 여러분에게 달려있다. "고양이가 내 소스코드를 삼켰어요" 라고 말하는 것은 별 도움이 안될 것이다. 어설픈 변명을 만들지 말고 대안을 제시하라. 안된다고 하지 말고 상황을 개선하기 위해 무엇을 할 수 있는지 ..
당신이 가진 생각이 하나밖에 없다면, 그것만큼 위험한 것은 없다. - 에밀 사르티에 만약 어떤 사실을 굳게 믿고 그 사실에 전적으로 의존하고 있다면, 거의 100% 그것이 변하게 될 것이다. "이 것은 이 방법으로만 해결 할 수 있어"와 같은 근시안 적인 생각을 갖고 프로젝트에 참여한다면 아마도 예상치 못했던 경우에 의해 한숨지을 일이 많을 것이다. 1. 가역성 우리가 프로젝트 초기에 항상 최선의 결정을 내리는 것은 아니라는 점에서 유연한 프로젝트를 만들어야 한다. 프로젝트의 초기에 특정 관계형 데이터베이스를 사용하기로 결정했다고 치자. 한참 후 성능 테스트를 하면서 너무 느리다는 사실을 발견 했고 다른 데이터베이스가 더 빠르다는 것을 알게 되었다. 특정 데이터베이스를 사용하는 코드들이 전반에 퍼져 있을..
설계, 빌드, 테스트 그리고 확장하기에 쉬운 시스템을 만드는데에 있어 직교성은 매우 중요한 개념이다. 1. 직교성이란? 직교성은 기하학에서 빌려온 용어다. 그래프의 축과 같이 두 직선이 직각으로 만나는 경우 직교한다고 말한다. 벡터의 입장에서 보면, 두 개의 선은 독립적이다. 컴퓨팅에서 이 용어는 결합도 줄이기를 의미한다. 하나가 바뀌어도 나머지에 어떤 영향도 주지 않는다면 직교한다고 할 수 있다. 2. 직교성의 장점 비직교적인 시스템은 본질적으로 변화와 조정을 하기가 복잡하다. 시스템의 컴포넌트들이 고도로 상호의존적인 경우, 특정 부분만 수정하는 방법이란 없다. 관련 없는 것들 간에 서로 영향이 없도록 하라. 컴포넌트들이 각기 격리되어 있으면 어느 하나를 바꿀 때 나머지 것들을 걱정하지 않아도 된다. ..