본문 바로가기

다이어리/독서

[개발자] 소프트웨어 장인 - 산드로 만쿠소

나는 아키텍트라는 타이틀이 좋았다. - 26P

이 책을 읽으면서 많은 생각을 했다. 경험했던 많은 실패한 프로젝트들, 그리고 그 프로젝트의 코드품질에 대해서 고민했다. 당시 소프트웨어 아키텍트에게 많은 불만을 가지고 있던 나는 단순히 개발자를 편하게 하는 소프트웨어 아키텍트가 되겠다고 생각했었다. 이는 잘못된 생각이였다. 세상에 개발자를 편하게 하는 아키텍트는 없다. 멍청하고 바보같게 일을 대신해주는 아키텍트만 있을 뿐이였다. 그리고 그런 역할을 하는 내가 뛰어나 보이는 타이틀인 소프트웨어 아키텍트가 좋을 뿐이였다.

산드로 만쿠소는 자신이 경험한 많은 프로젝트를 이야기 하면서 무엇이 장인정신이고 어떤 자세가 프로그래머로써 옳은 것인지 제시해준다. 무엇보다 가장 놀란 점은 외국이나 한국이나 기업 문화나 대기업에서의 프로젝트가 진행되는 방법은 전혀 다르지 않다. 무엇을 위해 이 기능을 개발하는지 모르는 개발자와 프로젝트의 진행 상황을 전혀 모르는 사업, 그 사이에서 자신의 고과와 능력만 인정 받으려는 중간관리자들은 대규모 조직에 있어 어딜가나 있다.

장인 정신은 솔직해야하며 합리적인 방법을 제시하는 프로페셔널리즘을 갖추고 있어야한다. 변호사와 의사 그리고 개발자는 다르지 않다. 의사가 환자에게 NO라고 말하는 것처럼 우리도 고객에게 합리적이고 고객이 만족하는 방향을 제시해줘야하는 책임이 있다.

지난 몇 년 간 몇 가지를 배웠다. 아무리 한탄하고 불평하고 저주해보았자 삶이 쉬워지거나 나아지지 않는다는 점이다. 무언가 나아지길 원한다면 그에 맞는 행동을 취해야한다. - 142P

지금까지 나는 항상 회사와 조직에 대한 불평만 늘어놓았다. 왜 신기술을 사용하지 못하지? 저 관리자는 대체 나에게 왜이러는 거지등과 같은 불평만 말했을 뿐 스스로 해결하거나 개선하려는 의지가 없었다. 아니 그런 생각 자체를 못했다. 이 책을 읽으며 많은 생각을 헀다. 내가 프로페셔널이라면 험악한 환경이라도 스스로 개선할 수 있는 방법과 방향을 제시해야한다. 언제까지나 NO를 외칠 순 없다. 이와 같은 노력에도 개선의 여지가 없다면 회사를 떠날 때다.

업무에 대한 기여는 생각하지 않고 개인적인 이유로 이력서에 채워 넣을 기술과 방법론들을 쫓아 다닌 것은 비윤리적이다. - 172P

나는 항상 신기술이 옳다고 생각했다. 몇 년이 지난 구 기술을 이름만 듣고 경험하지 못한채로 그저 무시만 했다. 예를 들어 jQuery 아직도 써? 이런 느낌이다. 그리고 최신 기술을 알고 있다면 자신의 커리어이고 대단한 개발자인 줄 착각했다. 물론 최신 기술이 뒤떨어지거나 나쁘다는 이야기는 아니다. 하지만 본인과 주변을 고려하지 않은 마냥 최신기술만을 지향하는 개발자는 HDD 그 이상도 아니다.

소프트웨어 장인 메니페스토

  1. 동작하는 소프트웨어뿐만 아니라, 정교하고 솜씨 있게 만들어진 작품을
  2. 변화에 대응하는 것뿐만 아니라, 계속해서 가치를 더하는 것을
  3. 개별적으로 협력하는 것뿐만 아니라, 프로페셔널 커뮤니티를 조성하는 것을
  4. 고객과 협업하는 것뿐만 아니라, 생산적인 동반자 관계를

나머지 감명 깊은 글귀들

"나는 TDD를 좋아하지만 팀의 다른 개발자들은 관심이 없다. 그래서 나도 안 하고 있다." 어떤 개발자는 이렇게 불평한다. 이것은 그냥 변명일뿐 소프트웨어 장인으로서의 태도가 아니다. - 255P

강제하지 말라

개발자들을 학습 모임에 강제로 참석시키면 상황은 극도로 안 좋아진다. 대신 계속 초대장을 보내자. 참여하기가 즐겁고 기분 좋은 일이 될 것이라는 것을 확실하게 한다. - 256P

사춘기적 맹신

상당수의 개발자들이 켄트 벡이 이야기한 '사춘기적 맹신'에 빠져있다. 그런 개발자들은 훌륭한 소프트웨어를 만들어 내는 데 자기만의 비법이 있다고 생각하고 다른 것들은 무시해 버린다. - 260P

팀의 행동방식을 바꾸거나 새로운 기술과 실행 관례를 수용하게 하고 싶다면, 제일 먼저 당신 스스로 그것을 할 수 있는지 확인해야 한다. 모범을 보이는 것 자체로 상당수의 회의론들을 물리칠 수 있다. 당신이 직접 기술을 시연하고 멘토역할까지 한다면 당신의 제안을 거절하기가 어려워질 것이다. - 269P

펫 프로젝트

실력 향상을 위한 최고의 도구

  1. 펫 프로젝트는 새로운 비즈니스를 시작하는 것이 아니다.
  2. 비슷한 애플리케이션이 이미 수천 개 있어도 상관없다.
  3. 코드를 한 줄이라도 작성하기전에 먼저 린 스타트업 개념에 대한 자료를 찾아보고 익숙해지기를 권한다.

페어 프로그래밍

  1. 불편함과 두려움의 근원이 나의 한계가 드러날 수 있다는 걱정에서 온다는 것
  2. 개발자들은 보통 자신이 다른 개발자들보다 더 훌륭하고 능력이 있다고 생각하기 쉽다.
  3. 나 자신이 그렇게 훌륭하지 않을 수도 있음을 받아들여야 한다.