소프트웨어 장인

  • 소비자들은 기민한 서비스를 원한다.
  • 오늘날의 프로젝트들은 여러가지 기술들을 복합적으로 사용하고 복수의 integration point를 두어 점진적이고 반복적으로 개발된다.

애자일 매니페스토 원칙 중

  • 가치있는 소프트웨어를 일찍, 지속적으로 전달하여 고객을 만족시키는 것을 최우선으로 한다.
  • 동작하는 소프트웨어를 몇 주에서 몇 개월 단위로 자주 전달한다. 가능한 한 전달주기를 짧게 한다.

애자일

  • 시간, 인건비 낭비라며 페어 프로그래밍 (두 명이 한 코드를 작성), 테스트 주도 개발 거부하는 회사나 개발자가 많다. -> 설계 단순화, 코드에 공동의 오너십을 갖기 힘들어진다. -> 오류를 빨리 발견할 수 없다.
  • 짧은 피드백 루프는 기업이 기민해지기 위한 핵심 요소다.
  • 애자일 전환이 절차와 도구로 끝나버리는 것을 경계해야한다.(스크럼 도입, 스탠딩업 미팅, 백로그 관리 툴)

소프트웨어 장인 정신

  • SW 개발자가 책임감, 프로페셔널리즘, 실용주의, 그리고 자부심을 갖고 지속적으로 새로운 도구와 기술을 익히며 발전하겠다는 마음가짐을 말한다.
  • 보이스카웃에는 캠핑 장소를 처음 발견했을때버다 더 깨끗하게 남겨두라는 규율이 있다.
  • 멘토링, 프로페셔널 커뮤니티를 조성하기, 경험이 적은 개발자와 지식을 공유하기를 주저하지 않는 사람
  • 적극적으로 요구사항에 질문하고 비즈니스를 이해하고 개선사항을 제안하며 고객 또는 고용주와 생산적인 동반자가 되어야한다.
  • 고객은 프로페셔널의 지식과 기술에 대한 돈을 지불한다. 나 자신의 커리어의 주체가 될 것.
  • 오늘날 우리는 계속해서 늘어만 가는 정보 속에, 계속해서 줄어만 가는 의미를 목도하는 세상에서 살고 있다. / 장 보드리야르

동작하는 소프트웨어

  • 로컬에서 돌려볼 수 있는 단위 테스트를 작성해야한다.
  • 단위 테스트는 우리가 코드를 작성하는 방식에 이미 녹아있는 것이지 별도의 작업이 아니다. 구현이 완료되었다고 하려면 테스트까지 통과해야한다.
  • 자동화된 테스트!
  • 테스트 주도 개발: 테스트가 코딩 방향을 주도하면 복잡한 코드 작성이 어려워지므로 요구 사항만큼만 만족시키는 간결한 코드가 탄생한다.
  • 자주 변경되는 부분을 대상으로 리팩토링해야한다.

실용주의 장인정신

  • 품질은 선택하는 게 아니다.
  • 테스트 주도 개발이 항상 필요한 건 아니지만 TDD에 능숙한 사람은 테스트 주도 개발때문에 일정이 지연되지 않는다.
  • 모든 테스트를 통과할 것, 중복을 최소화할 것, 명료성을 최대화할 것, 구성요소를 최소화할 것.

책을 읽은 후 나의 감상

아직 개발을 시작한 지 얼마 되지 않았지만 온라인에서, 오프라인에서 많은 소프트웨어 장인들을 만났다. 내가 본 그들의 공통점은 개발에 관한 이야기를 할 때 마냥 밝은 건 아니어도 눈빛이 살아있다는 것, 더 나은 코드를 짜려고 계속 고민한다는 것, 새로운 기술을 적용해보려한다는 것 등이다. 이 책에서 저자가 한 줄로 정리한 '소프트웨어 장인'은 책임감, 프로페셔널리즘, 실용주의, 자부심을 갖고 계속 수련하는 것!!! 이 중에서 실용주의는 특히 내 기술을 깊고 또 넓게 해야만 가능할 듯하다. 기민함은 내가 속해있는 단체에서 어느정도 지원해줘야겠지만, 내 스스로도 이를 적용할 방법을 계속 생각해봐야겠지! 테스트 주도 개발을 거의 해보지 않아서 TDD에 대해 더 알아봐야겠다.