[리뷰] 소프트웨어 장인

나는 1~2달 주기로 책을 몰아 주문하는 편이기 때문에 가끔 놓치는 책들이 있다. 오늘 이야기 할 소프트웨어 장인이라는 책은 지난 9월에 나왔는데 많은 분들이 추천해주는 걸 보고 얼마전에 겨우 읽었다.

가끔 잠이 오지 않아 이런저런 생각들을 하게 되면 항상 드는 생각이 있다. “과연 개발자로써 성공한다는 것은 무엇인가, 나는 좋은 개발자인가?” 이러한 의문은 내가 아직 경험이 부족하고 능력이 부족하기 때문에 아직까지 해결되지 않은 고민이었다.

그러던 중 이 책을 만났다.


이 책을 쓴 저자는 산드로 만쿠소라는 사람으로 런던 소프트웨어 장인 그룹을(LSCC) 이끌고 있는 사람이다. 나는 처음 소프트웨어 장인 정신이라는 말을 들었을 때 순간적으로 긱이나(Geek) 해커가 생각났다. 빠른 속도로 개발을 하고 짧고 효율적인 코드를 생산하며 많은 오픈소스에 기여하는 아저씨들 말이다. 하지만 이 양반이 말하는 소프트웨어 장인 정신의 정의는 다음과 같다.

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

“개발의 프로페셔널리즘”은 과연 무엇인가? 저자가 설명하기로는 “자신이 하는 일에 주인의식을 가지고 프로페셔널하게 행동하고, 고객이 원하는 것이 무엇이든 달성할 수 있도록 도우며 다른 개발자들에게 배우고 자신의 지식을 나누고 경험이 부족한 개발자들을 멘토링 하는 것들”을 뜻한다고 한다.(여기서부터 생각이 복잡해졌다.)

그래서 이러한 소프트웨어 장인 정신을 추구하는 그룹 내부에서 많은 토론이 오갔고 정의된 선언문은 다음과 같다고 한다.

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

많은 분들이 아시겠지만 좌측의 항목들은 애자일 선언문의 내용들이다.(뭐 사실 그놈이 그놈같아 보인다.) 이전의 애자일 선언문에서 한 단계 더 발전된 형태이지만 어디까지나 듣기 좋은 소리만을 한다는 비판에 저자는 “왼쪽 내용에 동의하면 오른쪽 내용을 반대할 이유가 없음 ㅇㅇ 하지만 우리가 정말 오른쪽처럼 일하고 있음?”이라고 주장 한다.

저자가 말하는 소프트웨어 장인은 결코 슈퍼 개발자를 뜻하는건 아니다. 소프트웨어 장인은 좋은 개발자겠지만 모든 좋은 개발자가 소프트웨어 장인 정신을 추구하는 것은 아니기 때문이다.

이런 소프트웨어 장인 정신에 대한 내용말고도 이 책은 여러가지 개발자로써 갖춰야 하는 덕목들에 대해서 이야기 한다. XP 원칙 중 하나인 페어 프로그래밍이나 코드 리뷰, TDD 등 실제 소프트웨어 개발을 할 때 필요한 것들에 대해 실 사례를 들어 잘 설명해 주고 있다.

특히 개발자 채용에 관한 내용들이 재미있었다. 내 능력은 길바닥 도토리와 같지만 이력서를 보고 면접을 진행하는 과정이 결코 쉽지 않았고 채용 직전까지도 오랫동안 고민하기 때문이다. 얼마전에 신규 채용을 진행할 때 처음으로 코딩 테스트를 진행 했었는데 이 책은 그런 식의 테스트는 진행하지 말라고 한다.

하지만 나는 이 부분에 있어서 생각을 조금 달리 하는게 분명 ACM이나 코드잼에 나오는 알고리즘들을 내는 것은 문제가 있다고 생각하지만 간단한 정렬, 자료구조에 대한 문제는 최소의 기준에 미치지 못하는 지원자들을 걸러내는데 의의가 있다고 생각한다.(이 책은 실제 실무에 관한 테스트를 진행하는 것이 좋다고 한다.)

이 외에도 팀 내에서 문제가 되는 양반들에 대한 대처법이나(?) 재미있는 주제들에 대해 다룬 것이 많으니 한번 쯤 읽어보면 큰 도움이 될 것이라 예상된다.


이 책을 읽으며 생각이 많아진 이유는 아직까진 우리나라 IT 업계와 많이 동떨어진 이야기이다. 끝이보이지 않는 하청과 재하청의 굴레에서 과연 이러한 시도가 쉽게 가능할까? 일정에 쫓겨 프로젝트가 끝나고 즉시 다음 프로젝트로 투입되는 현실에서 과연 나는 소프트웨어 장인 정신을 발휘할 수 있을 것인가..

A single golf clap? Or a long standing ovation?

By clapping more or less, you can signal to us which stories really stand out.