본문 바로가기

책/소프트웨어 장인 (완)

15. 실용주의 장인정신

💡 해당 책은 수필 느낌의 성격이 강하며 챕터 하나의 분량이 약 30페이지로 상당히 짧습니다. 그렇기에 포스팅이 다소 짧을 수 있습니다. 아래는 제가 책을 읽으며 가슴에 와닿은 내용들입니다.


품질은 선택사항이 아니다.

어떤 결정을 하든지 간에, 심지어 저품질을 선택해야 하는 경우에서도 항상 품질이 좋기를 희망한다.

 

좋은 품질은 비싸고 시간이 오래 걸릴까

어떤 실행 관례를 배우고 마스터하는 데는 시간이 필요하다. 배우는데 시간이 든다고 해서 그 실행 관례가 나쁘다고 할 수는 없다.

 

테스트 주도 개발이 항상 필요할까

TDD등 XP 실행 관례를 전파하고 싶다면 먼저 스스로 충분히 능숙해져야 한다.

 

리펙토링

  • 특별한 이유도 없이 코드를 열어서 재정리하는 일은 아무런 의미가 없다.
  • 레거시 코드를 대상으로 작업할 때는 최소한 수정한 부분만큼은 원래보다 깨끗하게 만들어 놓아야 한다.

소프트웨어 개발 방법의 한 가지 예

장인이라면, TDD와 같은 XP 실행 관례들을 절대 불변의 진리라고 믿어서는 안 된다.

 

단순하고 빠른 솔루션

  • '빨리 만들었다는 것이 엉망이다' 라는 것이어서는 안된다.
  • 개발팀 차원에서 비즈니스를 도울 방법을 찾아서 실행했다는 저멩 주목해야 한다.

소프트웨어 프로젝트는 우리를 위한 것이 아니다.

  • 프로페셔널로서, 소프트웨어 프로젝트가 개발자를 위한 것이 아니라는 사실을 이해할 필요가 있다
  • 프로젝트를 수행한 사람들이 떠나간 후 그것을 유지보수할 사람들을 고려해야만 한다.

비범한과 평범함

비범한 개발자와 폄범한 개발자를 가르는 기준은 어떤 방식으로 그것을 동작하게 만드느냐이다.

 

단순한 설계를 위한 네 가지 원칙

작성되는 모든 코드들이 이 원칙들을 따를 수 있도록 노력해야 한다.

  1. 모든 테스트를 통과해야 한다.
  2. 명료하고, 충분히 표현되고, 일관되어야 한다.
  3. 동작이나 설정에 중복이 있어서는 안 된다.
  4. 메서드, 클래스, 모듈의 수는 가능한 적어야 한다.

패턴을 위한 리팩토링

  • TDD에 능숙한 개발자는 개발 초기부터 디자인 패턴을 적용하는 일이 극히 드물다.
  • 당장의 합당한 이유 없이 단지 '미래를 대비해야 한다'는 모호한 전제로, 초기부터 추상화를 하면 애플리케이션이 엉망이 된다.
  • 어플리케이션이 진화 및 변경할 수 있도록 모든 가능성에 대비하는 것을 똑똑한 대응이라고 생각할 수도 있다. 진실은, 반대로 매우 바보같은 짓이다.
  • 실용적인 접근 방법은 실제로 필요한 상황이 생겼을 때만 추상화를 도입하는 것이다. 그렇게 하면 전체적인 복잡도를 낮추는 데 도움이 된다.
  • 무조건적으로 범용 코드를 추구해서는 안 된다. 대신 주어진 문제에만 특정된 코드로 먼저 솔루션을 찾은 후 나중에 필요한 상황이 생겼을 때 범용화하는 것이 좋다.

장인정신과 실용주의

장인이 가장 중요하게 초점을 맞추는 것은 고객의 만족이다.

 

요약

서로 다른 맥락에서 각각의 실행 관례들이 어떤 가지가 있는지 이해해야 한다.

' > 소프트웨어 장인 (완)' 카테고리의 다른 글

16. 소프트웨어 장인으로서의 커리어  (0) 2024.03.24
14. 기술적 변화의 실행  (0) 2024.03.24
13. 배움의 문화  (0) 2024.03.24
12. 낮은 사기의 대가  (0) 2024.03.22
11. 잘못된 면접 방식  (1) 2024.03.22