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

[Day 07] 소프트웨어 장인 - 01

by Aterilio (Jeongmee) 2022. 7. 31.

 

1부 이념과 태도

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

2부 완전한 전환

9장 인재 채용

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

 

 


 

 제목에 강렬하게 끌려서 구매했으나, 다른 것들에 밀려 조금 읽다 말기를 반복했던 책.

 

 오늘 다녀온 진선님의 셀프브랜딩 강의를 듣고 나니, 더 미루지 말고 읽어야겠다는 생각이 들어서 오늘부터 다시 읽기 시작했다.

 

 일을 하는 것도 중요하지만 그에 못지 않게, 일을 어떻게 하느냐도 중요합니다.

 

 나는 사실 이 책을 읽기 전부터, 그리고 '소프트웨어 장인'이라는 용어를 접하기 전부터 내 성향이 소위 '장인 정신'에 가깝다는 것을 알고 있었다.

 고객들이 지불하는 금액만큼이나, 아니 그 이상으로 소프트웨어는 완성도를 추구해야한다고 생각했다. 유지보수의 용이성, 기능의 확장성, 그 이유로는 뭘 대도 좋았다. 무엇을 이유로 생각하든 소프트웨어의 완성도를 추구해야하는 이유로는 적합할 것이다. 하지만 그만큼이나 당연한 명제는 회사의 다양한 이유 앞에서 작아지고는 했다. 이 책을 구매하게 된 이유 중 하나는 거기에서 온 반발심이었을 것이다.

 

더 나아지는 데 시한은 없다. 늦을수록 좀 더 고통스러울 뿐이다.
경쟁력을 유지하려면 소프트웨어를 빨리 개발하면서도 더 나은 품질을 유지할 수 있어야 한다.

 

 처음엔 이해하기 어려웠다. 중구난방인 커스텀 모듈을 하나로 합쳐서 관리하기만 해도 유지보수는 훨씬 쉽고, 같은 작업을 반복하지 않아도 될 텐데. 단위테스트를 추가하는 것만으로도, 무언가를 수정했을 때 두려워 할 필요는 없을텐데.

 

 도대체 왜 하지 않는걸까.

 

 이유는 다양했다. 고객이 원해서, 납품까지 시간이 없어서, 당장 필요한 것은 아니라서.

 

 마치 나에게는 '맛있는 것을 좋아해서, 운동할 시간이 없어서, 당장 통증이 느껴지는 것은 아니라서' 건강이 나빠졌지만 신경쓰지 않겠다는 소리와 비슷하게 들렸다. 하지만 건강에 대해 이렇게 말하면 주변 사람들이 타박하고 심지어 '그러다 죽는다'며 겁도 주지만, 소프트웨어는 아니었다. 반박을 하면 '비즈니스에 대해 이해하지 못하는' 사람이 되고는 했다.

 

소프트웨어 장인

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

* 앞의 항목들(일반 굵기)을 추구하는 과정에서, 다음 항목들(볼드체)이 꼭 필요함을 의미한다.

 

경험이 많고 재능있는 개발자들이 겪는 어려움, 추구하는 가치, 열망을 담고 있다.
부실한 관리, 잘못 정의된 절차 그리고 형편없는 코드 때문에 프로젝트가 실패하는 일은 없어야 한다.

 

소프트웨어가 나이를 먹고 덩치가 점점 커지고 있다면 동시에 우리는 기업의 이익도 늘어나게 해야 한다.

 

소프트웨어가 오래될수록 고통과 비용이 아닌 그 가치가 커져야 한다.

 

애플리케이션의 수명을 오래 유지시키려면 소프트웨어의 품질에 최우선으로 집중해야 한다.

 

같은 일을 반복하면서 다른 결과를 기대하는 것은 미친 짓이다.
- 앨버트 아인슈타인(Albert Einstein)

 

소프트웨어 장인은 항상 열정적으로 자기발전을 추구한다.
이보다 더 큰 임무가 있다. 다음 세대의 장인을 준비시킬 책임이 있다.

 

적극적으로 프로젝트의 성공에 기여해야 한다.
요구사항에 질문하고, 비즈니스를 이해하고, 개선상항을 제안하며, 고객 또는 고용주와 생산적인 동반자 관계를 맺어야 한다.

 

소프트웨어 장인은 그들의 평판을 쌓아 올리기 위해 성공한 프로젝트들이 필요하다.
고품질의 소프트웨어를 성공적으로 전달하고 고객을 만족시키는 것은 소프트웨어 장인의 커리어에 꼭 필요한 일이다.

 

코드를 잘 작성하는 것은 꽤 중요하지만 프로젝트를 완성시킬 때 필요한 요소들 중 하나일 뿐이다.
고객을 도와 그들의 업무 절차를 개선하고, 좀 더 실현 가능성이 높은 선택지를 제공해야 한다.

 

소프트웨어 장인이 이런 마인드의 기업에서 일하려면 매우 고통스럽다.
도움을 원하지 않는 상대에게 에너지와 건강을 쏟는 것은 아무런 의미가 없다.
같이 일할 고객 또는 고용주를 선별하는 능력도 소프트웨어 장인에게 꼭 필요하다.
소프트웨어 장인의 가치나 역량에 관심이 없는 고객을 위해 열심히 일해봤자 공허함만 커질 뿐이다.

 

 

댓글