소프트웨어 장인의 감상문 및 요약

calendar_todayAugust 30, 2019
local_offer#book#review

소프트웨어 장인(저자: 산드로 만쿠소)를 읽으면서 기억했으면 좋겠다 싶은 내용을 적어 두었다.

진정한 프로페셔널의 시각을 제시하여 주는 읽기도 쉽고 내용도 좋은 책이였다. 클린코드 정신을 강조하는 만큼 책 내용도 간결했고, 예시로 드는 일화도 흥미로워서 재미있게 읽었다.

특히나 나는 언급된 예시를 내 경험에 비추어 생각하며 읽다보니 더더욱 공감이 되면서 더욱 재밌게 읽었다.


소프트웨어 장인이란?

주어진 일만 하는 공장 노동자가 아닌 스스로 개선점을 찾고, 배운 것을 공유하고 나아가서 도제(후배 같은…)를 양성하는 사람

개발자는 코딩만 하는 사람이라고 생각하지 않는 사람

소프트웨어 장인이 되기 위한 훈련 방법에는?

카타(kata)

작은 훈련용 코딩

반복하면서 익숙해지게 하는 데에 의의가 있음

같은 코딩 카타를 반복하더라도 매번 다른 테크닉, 언어, 기술, 접근 방법을 사용해야 효과를 최대화 할 수 있다.

펫 프로젝트

무엇을 배울지( 즉 , 어떤 실행 관례, 실행 원칙, 방법론, 기술 등을 배울지) 정하고

그 다음에 그것을 이용해서 해결할 문제를 찾는다.

펫 프로젝트는 실제 프로젝트의 몇 가지 측면을 미리 경험 할 수 있다는 점에서 중요하다

  1. 프로젝트 아이디어 짜기
  2. 기능들을 상세화 하고
  3. 백로그에 할 일 들을 정리하여 준비

    • 백로그를 준비한다는 것은 작업을 분할하고
    • 그 우선 순위를 생각하고
    • 대략적인 일정을 추산하고
    • 사용자 스토리를 작성하는 것을 의미
  4. 그 밖에도 테스트, deploy, 버전 컨트롤, 지속적인 통합, 사용성, 사용자 인터페이스, 코드 베이스, 설계, 데이터 베이스와 같은 것들도 필요함

무엇보다도 재밌어야한다! → 흥미를 가지고 열정적으로 할 수 있는 주제를 찾으면 된다.

오픈소스에 기여 하기

배우고 싶은 내용과 연관 있는 것을 찾고, 소스코드를 내려받아서 실행해보고 테스트 코드가 있으면 읽어보자

기여할 부분이 있다면 작은 것부터 시작하자.

  • 문서에 내용을 추가 한다던지
  • 테스트 코드를 작성한다던지
  • 버그 목록이나 구현해야 할 기능 목록에서 가장 간단한 것을 선택해서 시도하자
  • 작은 기능을 새로 제안하고 구현해도 좋다.

오픈 소스 프로젝트에 참여할 때 또 하나 좋은 점: 훌륭한 개발자들이 어떻게 일하는 지 체험 할 수 있다는 것

→ 그들이 어떻게 코드를 작성하고 문제를 해결하는지 살펴보는 것은 코드를 잘 만들기 위한 좋은 기회가 된다.

덤으로 공개적으로 자신의 활동을 알릴 수 있는 기회가 되기도 함.

페어 프로그래밍(짝 코딩)

나의 한계가 드러날 수 있다는 걱정에서 페어 프로그래밍을 꺼리게 된다면 극복해야 한다!

혼자만의 좁고 편향된 생각에서 벗어 날 수 있게 해줌

새로운 내용을 빨리 배울 수 있다.

요즘 개발자를 구인 구직할 때 위에서 제안한 활동을 하는지 살펴보는 경우가 굉장히 많았는데,이런 것이 다 소프트웨어 장인 정신을 가진 사람을 찾기 위해서가 아니었나 싶은 생각이 들었다.

무지에 대항 하는 습관을 들이자.

모르는 것을 모른다고 받아들이지 않는 것은 나쁘다!

모르면 무시당한다는 그런 생각을 버리자!

일과 삶의 균형

“그럴 시간이 없다” → 진실은, 우리는 항상 시간이 있다.

다만 시간을 최적화하지 못할 뿐이다.

생산적으로 시간을 쓴다는 것이 꼭 공부하는데에 시간을 다 써야 한다는 것은 아니다.

소중한 사람을 만나는데 쓰거나, 쉬는 데 쓰는 것도 중요하고 생산적으로 시간을 쓴 것이다.

생산적인 시간을 확보하는 방법으로는

→ 책의 저자는 목적없이 웹 서핑하거나, 기계적으로 친구들의 소셜 네트워크 뉴스피드를 보거나, 컴퓨터 게임을 하는 시간을 줄이는 것으로 시간을 관리했다.

확보한 시간은 인터넷 연결이 되는 카페에 나가서 자기계발을 한다.

사는 곳 근처에 개발자 커뮤니티나 그룹이 있다면 참여 해보자. 짧은 시간 내에 많은 것들을 배우게 된다.

혼자라도 뭐든지 공부하면 배울 수 있을 것 같은 기분이 들겠지만, 어디서부터 시작해야 하는지 알 수가 없을 때도 있다.

침대에 평소보다 30분 정도 일찍 들어서 잠들기 전에 독서를하거나, 블로그를 보거나, 기술 관련 스크린 캐스트들을 보자.(특히 효과가 좋았던 방법)

전자책 리더를 사서 항상 휴대하며 자투리 시간을 이용해보자

프로페셔널리즘

실망시키지않기 위해서, 영웅이 되고 싶어서, 일정 수준 이상의 품질을 가진 소프트웨어를 만들 수 없는데도 할 수 있다고 대답하지 말자. → 아니오 라고 대답 할 수 있어야 한다

다만 아니오라고 대답할 땐 반드시 하나 이상의 대안이 따라와야 한다.

→ 대안을 내기 위해서는 문제를 분석해야 한다. 풀어야 할 방법을 모른다면 최대한 이른 시점에 그 사실을 정직하게 알려야 한다. 그리고 그 문제를 풀기 위해 최선의 노력을 다 하고 있음을 보여 주어야 한다!

소프트웨어 장인과 면접

면접을 볼 때, 일자리를 구걸하는 입장이 아니라는 것을 기억하라

면접 시에 질문을 많이 하라 → 협업 능력과 비즈니스 기여 가능성을 가늠 할 수 있는 중요한 사항. 면접 때 조차 아무런 질문이 없던 사람이, 실제 업무 현장에서 갑자기 적극적으로 질문을 하리라고 기대 할 수 있을까?

지원자 입장에서의 관점

면접관들이 말하는 과장들은 필터링할 필요가 있다.

다만 세부적인 요소에 집중하면 진실이 무엇인지 힌트를 얻을 수 있다.

  1. 면접관들이 실무 개발자가 아닌 관리자, 아키텍트, 팀 리더 들로만 구성된 경우 → 관리층이 개발자를 신뢰 하지 않을 가능성이 있다.
  2. 다단계 면접이 아닌 경우 → 너무 급해서 적합한 인재를 채용할 시간이 없을 가능성이 있다.

면접관들의 질문은 대개 면접관이 중요하게 생각하는 것들을 반영한다. → 그 팀에 합류 했을 때 지원자에게 기대하는 것들을 담고 있다.

실용주의 장인정신

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

J.B.레인즈버거 버전

  1. 모든 테스트의 통과
  2. 중복의 최소화
  3. 명료성의 최대화
  4. 구성요소의 최소화
©koal, Built with Gatsby-blog-starter