본문 바로가기
[한달어스] Handal.us/[한달독서] 22기

[Day 08] 소프트웨어 장인 - 02

by Aterilio (Jeongmee) 2022. 8. 1.

 

1부 이념과 태도

1장 21세기의 소프트웨어 개발
2장 애자일
3장 소프트웨어 장인정신
4장 소프트웨어 장인의 태도
5장 영웅, 선의 그리고 프로페셔널리즘
6장 동작하는 소프트웨어
7장 기술적 실행 관례
8장 길고 긴 여정

2부 완전한 전환

9장 인재 채용

10장 소프트웨어 장인 면접하기

11장 잘못된 면접 방식
12장 낮은 사기의 대가
13장 배움의 문화
14장 기술적 변화의 실행
15장 실용주의 장인정신
16장 소프트웨어 장인으로서의 커리어
부록 소프트웨어 장인정신에 대한 오해와 설명

 


 

오래 전에 작성했던 코드를 지금에 와서도 고칠 부분이 없어 보인다면,
그것은 그동안 배운 것이 없다는 뜻이다.

 

  • 고객이 바라는 바를 가장 효율적인 방법으로 만족시키는 것이 우리의 목표다.
  • 경험이 적은 소프트웨어 장인과 지식을 나누는 것 또한 우리의 직업 윤리적 의무이다.
  • "네 커리어와 프로페셔널로서의 미래는 누구의 책임인가?"
  • 나의 커리어를 주도적으로 이끄는 방법과 어떻게 해야 시대의 흐름에 뒤떨어지지 않는지, 모르는 것을 발견하는 방법과 그 시간을 어떻게 만들어 낼 수 있을지 고민이 필요하다.
  • 프로페셔널들을 찾아갈 때는 어떤 문제를 해결하기 위해서다.
  • 고객을 만족시키기 위한 투자는 스스로 해야 한다.
  • 고객은 프로에게 좋은 서비스 및 최선의 방법으로 문제가 해결되기를 기대하며 대가를 지불한다.
  • 소프트웨어 프로페셔널로 대우받기를 원한다면 프로처럼 행동해야 한다.
  • 상명하복 관리 방법은 소프트웨어 프로페셔널의 의욕을 크게 꺾어 버리고 기업을 대단히 비효율적으로 만든다.
  • 소프트웨어 프로페셔널은 여러 업무 중에서도 비즈니스에 기여하고, 해결책에 옵션을 제공하고, 우리가 개발하는 소프트웨어의 기술, 품질, 구현에 최상의 서비스를 제공해야 한다.
  • 애자일 방법론, 소프트웨어 장인정신, 린 소프트웨어 개발, 심리학, 철학, 경영에 대한 책을 참고한다.
  • 현재 배우는 것이 무엇이든 글로 써서 기록을 남기는 것은 가치가 있다.
  • 일을 할 때의 방법은 그 실행 결과만큼이나 중요하다.
  • 품질이 좋은 코드를 능숙하게 작성하고 싶다면 높은 품질의 코드를 작성하는 방법을 훈련해야 한다. 훈련 외에 다른 수단은 없다.
  • 훈련을 할 때는, 문제의 해결 자체가 아니라 해결에 사용한 테크닉에 집중해야 한다.
  • 실행 관례와 새로운 기술들을 배우는 것도 자동차의 운전과 같다. 더 많이 훈련할수록 더 편안해지고 별도의 주의 집중과 의식적인 노력이 없어도 자연스럽게 할 수 있게 된다.
  • 훈련할 때는 작성 가능한 최선의 코드를 만드는 데 집중해야 한다.
  • 내게 있어 최고의 자가 학습, 자가 훈련 방법은 펫(Pet) 프로젝트다. 펫 프로젝트는 취미생활과도 비슷한 나만의 소프트웨어 프로젝트다. 대신 일정이나 예산 등 압박 요인이 아무것도 없다. 수익을 낼 필요도 없고 요구사항도 내 마음대로다. 특히 어떤 기술과 방법론을 적용할 것인지는 내키는 대로 정할 수 있다.
  • 무엇보다도 펫 프로젝트는 재미있어야 한다. 펫 프로젝트를 시작할 때의 가장 흔한 문제는 좋은 프로젝트 감을 찾는 것이다.
  • 열정적으로 관심이 있는 주제를 선택하면 뭔가 개선하고 기능을 추가하는 데 아이디어가 마를 날이 없다는 장점이 있다. 그 일을 하고 만든 결과물을 항상 사용하고 싶을 것이다.
  • 자신의 애플리케이션과 코드 베이스에 너무 애착을 가진 나머지, 시장이 실제로 원하는 것을 못 볼 가능성이 정말 높다. 펫 프로젝트를 비즈니스화하고 싶다면 비즈니스 자체에 집중하고, 작성된 코드들을 시장이 원하는 방향이 아니라면 얼마든지 버릴 준비가 되어 있어야 한다.
  • 기여할 부분이 보인다면 작은 것부터 시작하자. 문서에 내용을 추가한다든가, 테스트 코드를 작성한다든가, 버그 목록이나 구현해야 할 기능 목록에서 가장 간단한 것을 선택해 시도하자. 작은 기능을 새로 제안하고 구현해도 좋다.
  • 걱정거리가 페어 프로그래밍을 꺼리는 이유라면 극복해야만 한다. 혼자서 배우는 데는 한계가 있다. 물론 개발자들은 상당 수준의 지적 역량이 있기 때문에 혼자 배우고 싶다면 무엇이든 배울 수 있다. 문제는 시간이다. 더불어 스스로에게만 의존하면, 자신만의 좁고 편향된 생각에서 벗어날 방법이 없다.
  • 훌륭한 개발자는 다른 어떤 개발자가 보더라도 이해할 수 있는 코드를 작성한다. 페어 개발자가 나의 작업 내용에 동의하지 않거나 무엇을 하는 건지 이해하지 못하고 있다면 좋은 토론 기회로 삼아야 한다.
  • 지역 커뮤니티에서도 페어 프로그래밍을 함께 할 사람을 찾는 것도 좋은 방법이다. 원격으로 페어 프로그래밍 환경을 구축하는 사람들도 점점 늘고 있기 때문에 거리의 제약 없이 페어 프로그래밍을 할 사람을 찾는 것도 가능해졌다. 편리한 원격 페어 프로그래밍 세션을 만들어 주는 도구들도 많이 나와 있다.
  • 소프트웨어 프로페셔널이 할 수 있는 최대의 실수는 자신이 모르는 것을 모른다고 받아들이지 않는 것이다. 모르고 있다는 것을 인지하지 못한 상태를 '2단계 무지'라고 한다.

 

계획대로 안 될 가능성이 매우 높다는 것을 인정해야 한다.
무언가 예상하지 못한, 예상할 수가 없는 문제가 항상 발생한다.
언제, 어디서, 어떻게 그런 일이 있을지 안다는 것은 불가능하다.

 

  • 다른 사람에게 내가 작성한 코드를 보여주고, 특별히 도움이 필요하지 않더라도 코드에 잘못된 부분은 없는지 검토 요청을 해보자.
  • '무지'라는 장애요소를 제거하는 것은 우선순위에서 높이 두어야 한다.
  • 업무 외 개인 시간을 내어 커리어에 대한 투자해야 한다고 하면 항상 "그럴 시간이 없다" 라는 대답이 돌아온다. 당신도 그렇게 생각할 수 있다. 어쩌면 그것이 맞다.
  • 한 주에 하루 정도는 출근 전에 카페에서 한 두 시간 동안 자기계발을 해보자. 코드를 작성하거나, 기술 문서를 읽거나, 블로그에 글을 올리는 등 새로운 것을 배우고 커리어에 도움이 된다고 생각되는 일들을 하자.
  • 업무 외 시간을 잘 활용하려면 그 시간에 제대로 집중하는 것이 핵심이다.
  • 시간을 쓰기 전에 그 시간을 어디에 쓸지 미리 정해두는 것이 좋다.
  • 그 시간을 투자하여 얻고자 하는 바가 무엇인지만 염두에 둘 수 있으면 된다.
  • 뽀모도로를 할 때는 하려는 일에만 집중하고 나머지는 머릿 속에서 완전히 비워야 한다.
  • 무엇을 하든지 페이스를 유지하는 것이 중요하다. 일과 삶의 균형을 건강하게 유지하기가 어렵기는 하지만 가능하다.
  • 경쟁력있는 프로페셔널로서 좋은 인적 네트워크를 가지고 시장이 요구하는 기술을 습득하고 있다면 프로페셔널로서의 삶에 대해서 크게 걱정하지 않아도 된다.
  • 소프트웨어 장인으로서 성공적인 커리어를 가지려면 결단력과 열정이 필요하다. 집중하지 못하면 많은 노력들이 낭비된다.
  • 더 많은 지식과 기술을 가질수록 더 쉽게 커리어를 관리할 수 있다. 언제, 어디서, 누구와 일하고 나의 일에 대한 대가로 얼마를 받을지에 대한 결정권을 가질 수 있다.

 

 한 챕터에서만 이만큼의 갈무리가 나오고 나니, 과연 이렇게 갈무리 하는 게 좋은가 하는 회의가 문득 든다. 책 내용에 너무 많은 공감을 하고, 너무 내 얘기 같아서 버릴 말이 거의 없다. 책을 통째로 옮길수도 없고 어쩌면 좋을지 고민을 좀 해봐야겠다. 다 좋은 말이지만 정말 인상 깊은 한 두 구절만 남겨야 할 수도.

 

 

댓글