본문 바로가기
source-code/software

소프트웨어 장인 정신 이야기 (1)

by mattew4483 2024. 5. 7.
728x90
반응형

책을 읽으며 기억하고 싶은 부분을 기록했다.

1장. 장인 정신

...
이 연대표를 항공학 연대표와 비교해 보자. 비슷한 점을 찾을 수 있는가? 이론의 단계적인 발전, 마니아들이 성급한 도전과 실패, 역량의 단계적인 발전이 보이는가? 우리가 무엇을 하는지도 몰랐던 수십 년의 기간이 보이는가?
...
오늘날의 항공기 조종사들만큼이나 자기 기술을 깊이 이해하는 프로그래머를 양성해 왔는가? 분명히 장인이 필요한데 우리에게는 장인이 있는가?

 

항공학 역사를 소개하며, 장인 정신의 필요성을 강조한 구문이 굉장히 인상 깊었다.

 

프로그래밍 역시 (항공학과 유사하게) 

  1. 인류의 삶에 밀접하게 연관되어 있으며
  2. 빠른 속도로 발전했고
  3. 명확한 장인 정신이 구축되지 않은 상태로 사용되었으며
  4. 이로 인해 불필요한 시행착오들이 반복되고 있다 는 것!

즉... 오늘날의 항공학이 '안전하게 비행기를 만들고 띄우는 방법을 마침내 배운' 것처럼

소프트웨어 산업에도 '장인 정신'이 자리 잡아야만 한다.

(= 각 개발자들도 이를 자각하고, 노력해야 한다)

 

책에서는 이러한 장인 정신을 1) 기준 2) 규율 3) 윤리라는 세 가지 수준으로 나누어 제시한다.

 

1부. 규율

저자는 1999년 등장한 익스트림 프로그래밍과 그 실천 방법에 기반해

  • 테스트 주도 개발
  • 리팩터링
  • 단순한 설계
  • 짝 프로그래밍
  • 인수 테스트

라는 소프트웨어 개발자가 지켜야 할 다섯 가지 규율을 제시한다.

 

2장. 테스트 주도 개발

해당 장에서는 테스트 주도 개발 법칙을 소개하고

소인수 분해, 볼링 게임 등의 예제를 통해 테스트 주도 개발의 호흡을 실제와 가깝게 보여주고 있다.  

그리고 이는 정말 멋지다!

...
테스트 주도 개발이 바로 복식 부기(회계 업무에서 비롯한, 거래 기록의 이쪽과 저쪽을 모두 합하면 0이 되어야 하는 기법)다. 같은 목적으로 실행하고 같은 결과를 가져다주는 동일한 규율이다. 모든 것을 두 번씩 쓰고, 계속 테스트를 통과하게 함으로써 두 번 쓴 장부의 금액을 맞춘다.

 

저자는 회계 업무와 프로그래밍이 공통점(복잡하고, 세부 기호 하나하나가 중요한 의미를 가짐 등)을 예시로 들며,

회계 업무의 규율인 복식 부기를 프로그래밍 세계에서 테스트 주도 개발로써 지켜나가야 함을 주장한다.

 

그리고 이러한 테스트 주도 개발의 세 가지 법칙에 대해 설명한다.

  1. 실패하는 테스트 없이는 제품 코드를 쓰지 말라. 테스트 코드를 먼저 작성하라.
  2. 테스트 또는 컴파일이 실패하는 데 필요한 만큼만 테스트 코드를 쓰라. 그다음에는 제품 코드를 작성하여 테스트를 통과시키라.
  3. 실패한 테스트를 고치는 데 필요한 만큼만 제품 코드를 작성하라. 
  4. 테스트가 통과하면, 방금 만든 지저분한 코드를 정리하라.
여러분은 테스트 코드와 제품 코드 사이의 문맥을 전환하는 이 아주 작은 고리에 영원히 갇힌다.

 

실패하는 테스트를 작성하고, 이를 통과시키는 제품 코드를 조금 작성하고, 작성한 제품 코드를 리팩터링 한다.

 

이 순환 고리 속에서 코드를 작성하는 것은... 처음에는 굉장히 어색하고 힘들다.

(제품 코드를 계속해서 작성하고 싶은 욕망에 사로잡히기 십상!)

아마 개발자들이 테스트 주도 개발에서 중도 하차하는 가장 큰 이유이지 않을까?

→ 이를 실천하기 위해서는, 결국 의식적인 노력을 반복해, 체화시키는 수밖에 없다!

 

 

728x90
반응형