본문 바로가기

책 📖

소프트웨어 장인을 읽고

소프트웨어 장인을 읽고

우아한테크코스의 필독서 중 하나인 소프트웨어 장인을 읽게 되었습니다.
이 포스팅은 책의 내용을 머릿속에 재구성하여 정리한 것들입니다.
아래 내용들은 책의 내용을 요약한 것일 수도 있고, 단지 저의 생각을 적은 내용일 수도 있습니다. '소프트웨어 장인' 책이 전하고자하는 정확한 메시지가 궁금하다면 책을 직접 보시는 것을 권해드립니다.

Agile과 소프트웨어 장인

애자일의 두 가지 포인트는 빠른 피드백민첩함이라고 생각합니다. 같은 말을 두 번 반복한 것 같지만 내포하고 있는 의미는 사뭇 다릅니다. 먼저 빠른 피드백은 말 그대로 빠르게 피드백을 받을 수 있다는 것입니다. 그리고 민첩함은 피드백 받은 내용을 민첩하게 적용한다는 것이죠. 전자는 애자일만으로도 가능해 보입니다. 하지만 민첩함은 다릅니다. 민첩함을 이루기 위해서는 빠른 피드백을 감당할 수 있는 소프트웨어 장인이 필요합니다. 좋은 소프트웨어를 만듦에 있어서 소프트웨어 장인과 애자일의 관계는 개발자와 개발 도구의 관계라고 말할 수 있습니다.

소프트웨어 장인 : 애자일 = 개발자 : 개발 도구

 

좋은 개발 도구가 있다고 해서 좋은 결과물이 나오는 건 아닙니다. 그 좋은 도구를 다룰 줄 아는, 능력있는 개발자가 있어야 가능한 일이죠. 마찬가지로 애자일은 좋은 소프트웨어를 만드는데 있어서 좋은 방법론일 수 있지만 그것만으로 충분한 건 아닙니다. 좋은 방법을 활용할 수 있는 소프트웨어 장인이 필요합니다.

소프트웨어 장인 정신

소프트웨어 장인 정신을 한마디로 표현하자면 프로 정신이라고 표현하고 싶습니다.

소프트웨어 장인 정신 => 프로페셔널리즘 => 프로 정신

소프트웨어 장인정신 매니페스토

💡 동작하는 소프트웨어뿐만 아니라, 정교하며 솜씨 있게 만들어진 작품을

  • 좋은 소프트웨어는 개발자가 쉽게 이해 할 수 있어야 하며, 소스 코드는 예측 가능하고 유지보수 될 수 있는 상태여야 한다.

💡 변화에 대응하는 것뿐 아니라, 계속해서 가치를 더하는 것을

  • 여기에는 신규 기능 추가뿐 아니라 구조 개선, 테스트를 가능하게 하는 것 등의 것들도 포함이다.

💡 개별적으로 협력하는 것뿐만 아니라 프로페셔널 커뮤니티를 조성하는 것을

  • 소프트웨어 장인 정신은 자기발전을 추구하는 것 말고도 다음 세대의 장인을 준비시킬 책임이 있다.

💡고객과 협업하는 것뿐만 아니라, 생산적인 동반자 관계를

  • 단지 칸막이에 파묻혀 지시받은 사항만 해내는 것이 아니라, 능동적 태도를 가지고 소프트웨어 프로젝트가 성공할 수 있도록 행동 해야한다.

소프트웨어 장인의 태도

위에서 소프트웨어 장인정신을 프로정신으로 표현한 것 처럼 소프트웨어 장인이라면 프로정신을 가져야 합니다. 만약 가수가 대중들에게 보컬레슨비를 요구한다면 참 웃긴일일 것입니다. 가수는 직업적으로 스스로 본인의 가창력을 키우는 것 등의 자기 관리할 의무를 가집니다. 이런 맥락에서 개발자 또한 끊임없이 스스로 자기계발을 할 의무를 가집니다. 그 방법으로는 독서, 블로그 혹은 펫 프로젝트등을 예로 들 수 있습니다. 누군가는 시간이 없다고 말할 수도 있습니다만, 그것은 핑계가 될 수 없습니다. 소프트웨어 장인은 자신의 시간을 효과적으로 사용할 수 있는 능력 또한 갖추어야 하기 때문이죠.

우리는 법률적 지식이 필요할 때 혹은 의학적 지식이 필요할 때 변호사나 의사라는 전문가를 찾곤 합니다. 우리는 그들에게 가진 문제에 대해서 상담을 하지 무리하게 무언가를 요구하지 않습니다. 애초에 그들은 우리가 무리한 요구를 하도록 놔두지 않습니다. 불가능한 것은 불가능하고 말하며 다른 대안을 제시합니다. 마찬가지로 소프트웨어 장인은 고객의 무리한 요구에 대해서는 "아니오"라고 말할 줄 알아야 합니다. 더 나아가 고객이 원하는 니즈를 정확히 파악하고 다른 대안을 내놓는다면 금상첨화겠죠.

기술적 실행관례

빠른 피드백 루프를 만들어 코드의 품질을 높히는 방법

  • 페어프로그래밍
  • TDD
  • 리펙토링

장인의 커리어

장인은 단순히 좋은 코드를 작성하고 비즈니스적인 가치를 전달하는 것만을 의미하지는 않습니다. 장인은 자신만의 올바른 철학이 필요합니다. 정직과 용기를 가지고 고객을 대해야 하며, 처한 삶의 상황과 자신이 품고 있는 비전 그 사이에서 나의 성장에 도움이 되는 일터를 정할 수 있어야 합니다. 만약 자신이 무엇을 원하는지, 어디로 가길 원하는지 잘 모르겠다면 그 사실을 인정하고 새로운 환경을 경험하며 다른 문들을 열어보는 방법이 있습니다.

후기

공교롭게도 '소프트웨어 장인'을 읽은 시기가 지인의 의뢰를 받아 개인적으로 소프트웨어를 만들고 있는 시기와 겹쳤습니다.
책에서 소개하는 고객을 대하는 장인의 태도, 소프트웨어를 만드는 장인의 태도 등을 지금의 나에게 적용해보았습니다.
나의 행동들이 책을 통해 지지받을 때는 기분이 좋았고, 부족한 부분은 다시 생각해보고 고쳐나갈 수 있는 좋은 거울이 되었고, 빨리 책에서 말하는 개념들을 적용하여 코딩해보고 싶다는 열정이 일어났습니다.
아울러 이 책에서는 소프트웨어 장인에게 자신의 발전뿐만 아니라 후진 양성에도 열정적이여 한다고 자주 말합니다.
그런 부분들을 읽을 때마다 떠오르는 한가지가 있었습니다. 바로
우아한테크코스입니다. 무상으로 고품질의 교육을 제공하며 좋은 개발자 양성에 힘쓰는 우아한테코코스의 모습에서 소프트웨어 장인정신을 엿볼수 있었고 이 안에서 배운 TDD, 페어프로그래밍, 팀 간의 회고 등에 관한 것들이 더 값지게 느껴졌습니다.
속도보다 방향이 중요하다는 말이 있습니다. 아직은 주니어 개발자라고 말하기도 애매한 취준생인 저이지만 오히려 출발점에 서있는 시기에 나의 커리어의 방향에 대해 고민해봤던 시간이라 더 값지게 느껴지는 것 같습니다. 언젠가 장인이라는 타이틀이 어울리는 개발자가 되기를...

반응형