클린 소프트웨어 1/3

참고 도서: 클린 소프트웨어 (로버트 C. 마틴)

클린 소프트웨어 책을 3권으로 분철하여 정리.

애자일 개발


인간관계는 복잡할 뿐만 아니라 그 파급 효과가 절대로 깔끔하고 명확하지 않지만 업무의 어떤 측면보다 더 중요하다. 

원칙, 패턴, 그리고 실천방법은 중요하다. 하지만 이것들이 제대로 기능하게 하는 것은 바로 인간이다. 위 구절 바로 다음에 나온는 문장이다.

인간보다는 사람이라 표현하는 것이 더 와 닿는다. 항상 생각하지만 사람의 중요성을 다시한번 생각하게 해 주었다.

기술적 조언을 하고자 하는 책에서 사람을 강조한다는 것은 상식적이지만 중요한 것을 잊지말라는 조언으로 느껴졌다.

올해 초 읽은 ‘행복의 기원’이라는 책에서 사람은 생존 수단이라는 문장이 있었다. 즉 내가 살기위해 사람이 필요하며 곧 사람 관계 속에서 삶의 의미를 느낄 수 있다고 말한다.

한편, 원칙, 패턴 등 기술 습득은 발전하는 삶을 위해 필수 적이며 발전하지 않으면 도태된다.

사람과 기술 모두 중요하지만 책에서는 사람이 먼저라는 말을 하고 있다. 무척 공감한다.

애자일 소프트웨어 개발 선언문

왼쪽 항목 각각에도 가치는 있지만, 오른쪽 항목에 가치를 더 부여한다.

마지막 항목을 보고 변화를 더 적극 수용하도록 해야겠다고 생각했다.

테스트 주도 개발 효과

리팩토링

모든 소프트웨어 모듈에는 세 가지 기능이 있다.

기능, 변경, 읽는 사람과의 의사소통 이다.

기능은 존재 이유이며, 변경이 쉬워야하고, 읽는 사람이 쉽게 이해할 수 있어야한다.

3가지중 한가지라도 잘못 되었다면 망가진 것이며 수리가 필요하다.

리팩토링은 이 세가지 기능에 있어 도움을 준다.

모듈을 읽기 쉽고 변경하기 쉽게 만듦으로써 기능의 오류를 줄여준다.

읽기 쉽고 변경하기 쉽게 만들기 위해서는 단순한 원칙과 패턴 이상으로 주의력 훈련과, 미를 창조하기 위한 열정이 필요하다.

애자일 설계

변화를 예상하라

요구사항의 변경으로 프로그램은 엉망이 되기 십상이다. 그리고 엉망이된 프로그램은 요구사항 변경때문이라고 탓할 수도 있다. 그러나 이런 변명은 소프트웨어 개발에서 가장 중요한 요소중 하나를 무시한 말이다.

요구사항은 언제나 바뀐다!

이는 우리가 개발자로서 받아들여야 하는 사실이다! 우리는 변하는 요구사항의 세계에 살고 있고, 우리가 만든 소프트웨어가 이런 변화 속에서 살아남을 수 있게 만드는 것이 바로 우리가 해야 하는 일이다.

만약 소프트웨어의 설계가 요구사항 변경 때문에 퇴화한다면, 우리는 애자일 방식대로 하고 있지 않은 것이다.

SOLID

SOLID 모든 원칙은 명백한 부분을 제외하고는 앞서 예상하지 않고 실제 변경이 발생할 때 적용 한다.