All Posts

개발자로서의 행동강령 '소프트웨어 장인 - 산드로 만쿠스' 을 읽고

더 나은 개발자가 되고 싶은 마음은 항상 가지고 있지만 그 마음을 지속적인 행동과 자극을 통해 유지해야 한다는 걸 알기에… 잡게 된 ‘소프트웨어 장인’이란 책을 읽고, 몇몇을 발췌해봤다.

결론만 말하면…(톺아보기)

‘소프트웨어 장인’의 4장인 소프트웨어 장인의 태도를 나열하면 다음과 같다. 내 커리어의 주인은 누구인가?(고용자 & 피고용자의 관계) 끊임없는 자기계발(독서, 블로그, 기술 웹사이트), 팔로우할 리더 찾기(소셜미디어), 끊임없는 훈련(카타, 펫 프로젝트, 오픈 소스, 페어 프로그래밍), 사회 활동: 다른 개발자들과 어울리기(개별적으로 협력하는 것뿐만 아니라 프로페셔널 커뮤니티를 조성하는 것을), 의도한 발견, 일과 삶의 균형(시간만들기, 집중: 뽀모도로 기법, 균형). 많은 개발자들이 이미 행하고 있거나 들어봤거나 어찌보면 틀에 박힌 소리 같은 이 내용을 통해 지금의 개발자로서의 내 태도를 되돌아보게 했다.


이미지 출처: YES24

슈퍼 개발자, 실리콘밸리 테크 컴퍼니, 파급력 높은 서비스, 억대 연봉, 트렌디하고 핫한 기술을 익히고 이를 빠르게 적용하는 능력… 시선과 동기를 자극하는 매력적인 대상들에 시선이 사로잡히는 시대에 바라는 이상향과 사뭇 동떨어져있는 내 자신에 대한 고민을 하던 중 이 책은 소프트웨어를 만드는 장인의 태도에 대해 말한다. 아직 장인정신을 말하기에는 턱없이 부족하지만 더 나은 개발자가 되기 위해 허우적대는 내게는 다시 본질로(Ad Fontes) 되돌아가야한다는 울림을 준다.

개발자로서의 기술

같은 코드를 반복해서 연습한 적이 언제였던가? 처음 코딩을 배울때는 이해안되는 코드를 반복해서 쳐보긴 했지만, 실무를 하면서는 같은 코드를 얼마나 반복해서 연습해봤을까 싶다.

필수적이진 않겠지만, 코딩이 익숙해져야 한다는 말에는 동의한다. 대장장이는 자신의 도구들을 가지고 뭔가를 만드는 작업을 날마다 반복한다. 마부작침(磨斧作針) 같은 동작을 수천번 수만번 반복하면서 익숙하게 될때 비로소 그 안에서 효율성과 더 나음에 대해 고민하고 이를 구현해낼 수 있지 않을까?

많은 기술자들은 자신의 기술을 갈고 닦기 위해 끊임없이 반복한다. 운동선수들도 항상 최고의 기량을 뿜어내기 위해 시합이 없는 날에도 끊임없이 기초체력을 올리고 팀워크를 맞춰보고 다양한 훈련들을 한다. 개발자로서 나는 어떠한 훈련을 하고 있는가?

소프트웨어 장인의 태도

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

비슷한 시기에 같은 회사에 입사한 동료와 저자의 이야기로 시작되는 chaper 4는 1년후 두 사람의 상황에 180도로 달라졌던 이유를 태도에서 찾는다(등골이 오싹했다). 커리어를 주도적으로 이끄는 방법과 어떻게 시대의 흐름에 뒤떨어지지 않을지에 대한 방법은 모두 소프트웨어 장인의 태도를 가졌냐 그렇지 못하냐의 문제라는 말이다.

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

회사에 고용되어 일하는 프로그래머는 두가지 길로 나뉘어 걷는다.

공장노동자 vs 소프트웨어 프로페셔널 회사에서 제공하는 훈련에만 의존해서 일하는 공장 노동자와 달리 자신의 시간과 돈을 투자해서 주도적으로 고객에게 좋은 서비스, 최선의 방법으로 문제를 해결해줌으로서 성장하는 소프트웨어 프로페셔널.

시키는 대로만 일하고 퇴근 시간만 기다리는 개발자는 프로페셔널 개발자가 아니다. 이는 공장 노동자와 다를바 없다. 프로페셔널은 자신이 개발하는 소프트웨어의 기술, 품질, 구현에 최상의 서비스를 제공하는데 집중한다.

끊임없는 자기계발

자기계발을 할 수 있는 방법 몇가지

  1. 독서(특정 기술에 대한 서적, 특정 개념에 대한 서적, 행동약식에 대한 서적, 혁명적 서적 혹은 고전)
  2. 블로그(기술의 간접경험, 트렌드에 대한 발견)
  3. 기술 웹사이트(최신 동향)
팔로우할 리더 찾기

해당 기술이나 해당 행동양식의 리더를 찾고 그의 책, 강의, 블로그를 팔로우하라.

끊임없는 훈련

운전을 처음할때와 비교하면 운전에 능숙해져 갈수록 주변에 세세한 주의를 기울이면서도 자연스러운 운전이 가능해지듯 작성 가능한 최선의 코드를 만드는데 집중해야 한다.

  1. 카타(품세): 공연전 몇 날, 몇 달을 반복 훈련하는 음악가를 상상하면서 같은 코딩 카타를 반복하더라도 매번 다른 테크닉, 다른 언어, 다른 기술, 다른 접근 방법을 사용해 효과를 높인다.(codingkata.org, codekata.pragprog.com, kate.softwarecraftsmanship.org)

  2. 펫 프로젝트: 취미로서의 프로젝트, 예산, 일정, 수익창출의 제약에서 벗어나 행하는 프로젝트

  3. 오픈소스: 배우고 싶은 내용과 연관된 소스 코드를 받아, 실행해보고, 테스트 코드 읽어보고, 디버깅해보고, 이용해보고, 작은 거라도 고쳐서 PR

  4. 페어 프로그래밍: 낯선이와의 페어 프로그래밍

사회 활동: 다른 개발자들과 어울리기

지역 사용자 그룹이나 기술 커뮤니티에 가입하고 행사들에 참여하면서 인적 네트워크를 만들고 배우고 공유하는 이들과 어울리기

의도한 발견

자신이 모르는 것을 모른다고 받아들이는 것이 필요하다. 모르고 있다는 것을 인지하지 못한 상태는 문제다. 무지는 상숫값이다. 다양한 활동으로 무지의 수준을 최대한 빨리 낮출수록 업무 생산성과 효율이 높아진다. 모르는 것을 배우는 기회를 만들기 위해 노력해야 한다.

일과 삶의 균형
  1. 시간 만들기: 가족과의 시간을 유지하면서 뭔가 해볼 시간을 만들기 위해서는 잠이든 게으름을 포기해야한다.
  2. 집중: 뽀모도로 기법
  3. 균형: 페이스를 유지하는 것이 중요하다. 프로페셔널로서의 삶이 건강해야 가족의 삶도 건강해진다.

결론(Conclusion)

‘시간이 없다는 말은 더 이상 변명이 될 수 없다. 우리는 항상 시간이 있다. 우리에게는 모두 정확히 같은 만큼의 시간이 주어진다. 차이점은 우리가 그 시간을 어떻게 쓰느냐일 뿐이다.’(103page)

어느새 2019년이 이제 절반이 지났다. 남은 2019년에는 좀 더 프로페셔널한 개발자로 걸어보자.

좋은 코드는 고민하는 사람에게서 나온다. 태생적으로 코드를 잘 짜는 사람이 있을지도 모르겠다. 하지만 태생적으로 코드를 못 짤 수 밖에 없는 사람은 없지 않을까? 그런 사람이라면 이미 프로그래머로서의 삶에서 두손 두발 다들고 멀어져갔을지도 모를.. 슬럼프에 빠질때마다 한번씩 보면 좋을 것 같은 자극제