본문으로 건너뛰기

[리뷰] 소프트웨어 장인

· 약 11분
karais89

book image

스프트웨어 개발자 자기 계발서적

기간

2일

목적

ebook으로 구매

도서관에서 한번 봤다가 괜찮은 책인 것 같아서 구매 함.

더 나은 프로그래머가 될 수 있는 방법

"오늘 정말 멋지게 일 했어"라고 스스로 읉조리는 그런 프로그래머라면 이 책은 당신을 위한 책.

리뷰

  • 책의 저자는 브라질 시골 출신의 프로그래밍을 좋아하는 평범한 개발자이다.
  • 프로페셔널리즘/실용주의/자부심에 대한 책
  • 다루는 범위 (디자인패턴, 페어 프로그래밍, 테스트 주도 개발, 빠듯한 일정에 대응하는 방법, 채용 공고 작성법, 개발자 채용 인터뷰, 동료나 관리자와의 협업 방법 등)
  • 프로페셔널로 성장하고 소프트웨어 장인이 되기 위해 필요한 행동 양식, 태도, 조직 구조들에 대한 백과 사전같은 책
  • 일을 어떻게 했느냐는 일을 해낸 것만큼이나 중요하다.

요약

소프트웨어 장인정신이란?

위키피디아에서의 정의

소프트웨어를 개발할 때 개발자 스스로의 코딩 스킬을 강조하는 개념이다. 이러한 개념은 주류 소프트웨어 업계가 개발자의 역량보다는 다른 것들, 즉 예산과 같은 것들을 우선시하는 병폐에 대한 개발자들의 반발로 나타났다.

좀더 주관적인 정의

소프트웨어 장인정신은 마스터가 되어가는 긴 여정이다. 소프트웨어 장인정신은 소프트웨어 개발자가 스스로가 선택한 커리어에 책임감을 가지고, 지속적으로 새로운 도구와 기술을 익히며 발전하겠다는 마음가짐이다. 소프트웨어 장인정신은 책임감, 프로페셔널리즘, 실용주의 그리고 소프트웨어 개발자로서의 자부심을 의미한다.

짧은 정의

소프트웨어 장인정신은 소프트웨어 개발의 프로페셔널리즘에 대한 것이다.

이 문장 만큼은 기억하자.

소프트웨어 매니페스토1

소프트웨어 장인을 열망하는 우리는, 스스로의 기술을 연마하고, 다른 사람들이 기술을 배울 수 있도록 도움으로써 프로페셔널 소프트웨어 개발의 수준을 높인다. 이러한 일을 하는 과정에서 우리는 다음과 같은 가치들을 추구한다. 동작하는 소프트웨어뿐만 아니라, 정교하고 솜씨 있게 만들어진 작품을, 변화에 대응하는 것뿐만 아니라, 계속해서 가치를 더하는 것을, 개별적으 협력하는 것뿐만 아니라, 프로페셔널 커뮤니티를 조성하는 것을, 고객과 협업하는 것뿐만 아니라, 생산적인 동반자 관계를,

내 커리어의 주인은 누구인가

스스로를 발전시키는 데 자신의 돈과 시간을 들여햐 한다.

나 자신의 커리어의 주체로서 언제, 무엇을 배울지를 스스로 결정해야 한다.

끊임없는 자기계발

  • 독서
  • 블로그 (현재 배우는 것이 무엇이든 글로 써서 기록을 남기는 것은 가치가 있다.)
  • 기술 웹사이트

카타

카나는 품세라는 뜻으로 일본 무예 훈련에서 나온 용어다.

소프트웨어 카타는 작은 훈련용 코딩들을 의미한다.

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

  • codingkata.org
  • codekata.pragporg.com
  • kate.softwarecraftsmanship.org

펫 프로젝트

최고의 자가 학습, 자가 훈련 방법은 펫 프로젝트다.

펫 프로젝트는 취미생활과도 비슷한 나만의 소프트웨 프로젝트다.

일정이나 예산 등 압박 요인이 아무것도 없다. 수익을 낼 필요도 없고, 요구사항도 내 마음대로다. 특히 어떤 기술과 방법론을 정욕할 것인지는 내키는 대로 정할 수 있다. 내가 바로 사장이다.

펫 프로젝트는 흥미를 가지고 열정적으로 할 수 있는 주제를 찾으면 된다. 여행을 좋아한다면 여행에 대한 웹사이트를 만들면 되고, 달리기를 좋아한다면 얼마나 많이 달렸는지에대해서 진도를 보여주고 관리해주는 앱을, 일상을 효율적으로 관리하는 데 관심이 많다면 나만의 일정 관리 앱을 만들면 된다.

오픈 소스

오픈 소스 프로젝트에 기여하는 것도 좋은 훈련 방법이다.

작은 것부터 시작하자, 문서에 내용을 추가한다든가, 테스트 코드를 작성한다든가, 버그 목록이나 구현해야 할 기능 목록에서 가장 간단한 것을 선택해 시도해보자,

페어 프로그래밍

기술적인 실행 관례라기보다는 사회적 활동에 더 가깝다.

집중: 뽀모도로 기법

  1. 어떤 일을 할지 정한다.
  2. 뽀모도로(타이머)를 25분에 맞춘다.
  3. 타이머가 끝날 때까지 그 일을 한다.
  4. 짧게 쉰다(보통 5분)
  5. 매 4회의 뽀모도로마다 길게 쉰다(15~20분)

결단과 집중

어디로 가고 있는지 모르고 있다면, 결국 가고 싶지 않은 곳으로 간다.

스프트웨어 장인으로서 스스로의 커리어를 가치있게 여기고 아끼고 보살펴야 한다.

기회를 만들어 내기 위해 할 수 있는 몇 가지 활동들

  • 익숙하고 편한 것에서 벗어나 새로운 것을 공부하고 기술적 지식을 확장한다. 예를들어 새로운 프로그래밍 언어나 기술들을 배운다.
  • 지역 커뮤니티에 정기적으로 출석하거나 행사에 참여한다.
  • 다른 개발자, 비즈니스팬들과 교류한다
  • 새롭게 배운 것, 지금 하고 있는 것들에 대해 블로깅한다.
  • 오픈 소스 프로젝트에 참여한다.
  • 프로젝트를 만들고 공개한다.
  • 콘퍼런스에 참석한다.
  • 콘퍼런스에서 연사로 나선다.

이력서에서 열정 수준을 가늠할 방법

열정 : 자신의 커리어를 위해 개인 시간을 들여서 스스로에게 투자하는 사람.

  • GitHub 계정
  • 블로그
  • 오픈 소스 활동
  • 기술 커뮤니티나 사용자 그룹 활동 내역
  • 펫 프로젝트 내용
  • 트위터 계정
  • 좋아하는 기술서적 목록
  • 참석했거나 발표했던 콘퍼런스

면접에서 관심을 두어야 할 사항

  • 면접관은 누구인가? (프로젝트 관리자? 개발자? 팀 리더? 아키텍트?)
  • 얼마나 많은 지원자들을 면접보고 있나?
  • 원샷 먼접인가 다단계 면접인가?
  • 지원자에게 어떤 종류의 질문들이 주어지고 있나?
  • 특정된 질문인가 개방형 질문인가?
  • 면접관이 기술적 질문에 대해 yes/no 단답형을 좋아하는가, 좀더 상세하게 지원자의 생각들을 파보려 하는가?

바람직한 면접 방법

  • 좋은 면접은 자유 토론과도 같아야 한다. 소프트웨어 개발과 관련하여 지식과 정보를 교환하고, 기술/도구/방법론들에 대해세도 의견을 나누어야 한다.

관련 서적

  • 클린 코드
  • 클린 코더
  • 익스트림 프로그래밍
  • 도제의 형태: 소프트웨어 장인을 장려하기 위한 가이드북
  • 테스트 주도 개발
  • 도메인 기반 개발
  • 실용주의 프로그래머
  • 디자인패턴(GOF)
  • 열정적인 프로그래머

평점 및 한줄평

4 / 5


  1. 개인이나 단체가 대중에 대하여 확고한 정치적 의도와 견해를 밝히는 것으로 연설이나 문서의 형태이다. 종종 비정치적인 분야에서도 자신의 주장과 견해를 분명히 밝히는 때에도 사용된다.