Skip to content

Latest commit

 

History

History
43 lines (42 loc) · 5.02 KB

README.md

File metadata and controls

43 lines (42 loc) · 5.02 KB

소프트웨어 장인 (프로페셔널리즘, 실용주의, 자부심)

  • 산드로 만쿠소 저/권오인 역 | 길벗

기억에 남는 글귀 정리

  • 일을 어떻게 했느냐는 일을 해낸것만큼이나 중요하다.
  • 기업들은 이제 시키는 일만 하는 값싼 코더가 아니라 프로페셔널 개발자를 원하고 있는 것이 요즘의 현실이다.
  • 코드를 잘 작성하는 것은 소프트웨어 프로페셔널이 가져야 할 최소한의 요건이다.
  • 방대한 문서 작업보다는 동작하는 소프트웨어를
  • 자동화한 테스트에 투자하지 않는다면 지속적인 코드 통합(intergration)은 크게 의미가 없다.
  • 소프트웨어 장인정신은 소프트웨어을 일종의 공예 작품으로 보아 소프트웨어 개발자를 중세의 대장장이에 비유한다.
  • 소프트웨어 장인정신은 소프트웨어 개발자가 스스로가 선택한 커리에어 책임감을 가지고, 지속적으로 새로운 도구와 기술을 익히며 발전하겠다는 마음가짐이다.
  • 소프트웨어 장인정신은 시켜야만 일하는 역량 미달의 노동자가 아니라 소프트웨어 프로페셔널의 수준을 높여, 프로의 모습으로 일하는 소프트웨어 개발자를 지향한다.
  • 소프트웨어 장인정신 매니페스토
    • 소프트웨어 장인을 열망하는 우리는, 스스로의 기술을 연마하고, 다른 사람들이 기술을 배울 수 있도록 도움으로써 프로페셔널 소프트웨어 개발의 수준을 높인다. 이러한 일을 하는 과정에서 우리는 다음과 같은 가치들을 추구한다.
      • 동작하는 소프트웨어뿐만 아니라, 정교하고 솜씨 있게 만들어진 작품을,
      • 변화에 대응하는 것뿐만 아니라, 계속해서 가치를 더하는 것을,
      • 개별적으로 협력하는 것뿐만 아니라, 프로페셔널 커뮤니티를 조성하는 것을,
      • 고객과 협업하는 것뿐만 아니라, 생산적인 동반자 관계를,
    • 이 왼쪽의 항목들을 추구하는 과정에서, 오른쪽 항목들이 꼭 필요함을 의미한다.
  • 좋은 소프트웨어라면 그 애플리케이션이 얼마나 오래되었든 간에 개발자가 쉽게 이해할 수 있어야 한다.
  • 소프트웨어 장인은 공장 노동자가 아니다. 적극적으로 프로젝트의 성공에 기여해야 한다.
  • 스스로를 발전시키는 데 자신의 돈과 시간을 들여야 한다.
  • 시간이 없다는 말은 더 이상 변명이 될 수 없다. 우리는 항상 시간이 있다. 우리는 모두 정확히 같은 만큼의 시간이 주어진다. 차이점은 우리가 그 시간을 어떻게 쓰느냐일 뿐이다.
  • 모든 '아니오'에는 반드시 하나 이상의 대안들이 따라와야 한다. '아니오'라고 대답하기 전에 문제를 분석해서 대안이 있어야 한다.
  • 아무런 대안 없이 그냥 안 된다고만 하면 그 대답을 듣는 사람 입장에서는 뭔가 할수 있는 여지가 없기 때문에 상황에 별 도움이 안 된다.
  • 일정을 맞추기 위해 코드의 품질을 희생한다면 그 다음번, 그리고 그 이후의 일정을 지키기가 점점 더 어려워질 것은 뻔하다.
  • 프로그래밍은 집을 짓는다기보다는 정원을 돌보는 것에 더 가깝다.
  • 단위 테스트는 우리가 코드를 작성하는 방식에 이미 녹아있는 것이지 별도의 작업이 아니다. 테스트하지 않았다면 코드 작성을 완료했다고 할 수 없다.
  • 일을 즐길 수 있느냐 없느냐는 우리의 태도에 달려 있다.
  • 테스트 코드는 잘 정리된 요구사항의 역할도 하기 때문에 딱 필요한 만큼만 코딩하도록 유도하여 불필요하게 복잡해지거나 오버 엔지니어링 하는 것을 줄여준다.
  • 잘못된 테스트는 아예 테스트가 없는 것보다 못하다.
  • 애당초 코드를 수정할 필요가 없다면, 리팩토링해야 할 이유도 없다. 리팩토링은 더 자주 변경되는 부분을 대상으로 시작해야 한다.
  • 어디로 가고 있는지 모르고 있다면, 결국 가고 싶지 않은 곳으로 간다. -Yogi Berra-
  • 우리는 지속적으로 결정을 재평가하고 다시 목표를 세워야 한다.
  • 건강하고 지속되는 커뮤니티를 만드는 비결은 리듬을 가지는 것이다.
  • 소프트웨어 장인은 여러가지 훌륭한 도구들을 포용하면서 맡은 일의 맥락에 가장 적합한 것을 꺼내어 적용할 수 있어야 한다.
  • 단순한 설계를 위한 네 가지 원칙
    • 모든 테스트를 통과해야 한다.
    • 명료하고, 충분히 표현되고, 일관되어야 한다.
    • 동작이나 설정에 중복이 있어서는 안 된다.
    • 메서드, 클래스, 모듈의 수는 가능한 적어야 한다.(구성요소의 최소화)
  • 앞으로 나아가지 못하고 정체되어 있다고 느낀다면, 무언가를 배우거나 스스로 일을 즐기지 못한다면, 그때는 움직여야만 한다.