요즘 소프트웨어 품질에 대한 관심이 많이 생겼다. 밥 아저씨 로버트 마틴의 책도 몇 권 샀지만, 우선 예전에 사 둔 이 책부터 읽어보았다. 이 책은 코드에 대한 책은 아니고 마음가짐을 알려주는 책이라 볼 수 있다. 나온 지 4년이 넘은 책이지만 여전히 배울 점이 많았다. 나중에 다시 보고 싶은 내용이 많아서 서평보다는 요약정리에 집중했다.
애자일
이제 애자일은 일상적인 용어가 되었다. 애자일을 하지 않는다고 말하는 회사를 찾는 것이 더 어려울 것이다. 하지만 애자일로 성공한 기업은 3M뿐이라는 말도 있다. 저자는 애자일 프로젝트가 애자일스럽지 못한 이유가 절차에만 집중하기 때문이라고 이야기한다. 애자일의 모든 절차들에는 기술적 탁월함이 전제되어 있다. 하지만 미숙한 애자일 코치, 기술 배경이 없는 고참 관리자들은 개발자 탓을 하며 쉽게 책임을 회피한다. 완전한 애자일 전환을 위해서는 프로페셔널 소프트웨어 개발자들이 필요하고, 기업들이 소프트웨어 장인 정신을 품어야 한다.
소프트웨어 장인 정신
소프트웨어 장인 정신은 소프트웨어 개발의 프로페셔널리즘에 대한 것이다. 애자일 선언 후 애자일의 결과가 예상과 다르게 흘러가는 것이 분명해지고, XP와 스크럼 등 절차 중심적인 방법론의 상업화 바람이 불면서 소프트웨어 장인 정신에 대한 토론이 이루어지기 시작했다. 2009년, 마침내 소프트웨어 장인 정신 메니페스토가 공개되었다.
동작하는 소프트웨어뿐만 아니라, 정교하고 솜씨 있게 만들어진 작품을
변화에 대응하는 것뿐만 아니라, 계속해서 가치를 더하는 것을
개별적으로 협력하는 것뿐만 아니라, 프로페셔널 커뮤니티를 조성하는 것을
고객과 협업하는 것뿐만 아니라, 생산적인 동반자 관계를
소프트웨어 장인의 태도
소프트웨어 장인으로서 성공적인 커리어를 갖기 위해서는 끊임없는 자기계발이 중요하다. 그 방법으로 독서, 블로그, 펫 프로젝트, 오픈 소스, 페어 프로그래밍, 커뮤니티 등을 제안한다. 문제는 이러한 방법들이 요즘 개발자들 사이에서 몸값을 올리기 위한 수단으로 통하고 있고, 회사도 이러한 경험을 원한다는 것이다. 뭔가 본질은 사라지고 수단만 남아 있는, 애자일의 문제점을 그대로 답습하고 있는 느낌이다.
인재 채용
지금 당장 채용 사이트에 들어가 보면 특정 기술 또는 특정 분야 경력 몇 년 이상의 개발자를 채용하는 공고를 흔히 볼 수 있다. 하지만 이런 공고는 한 회사에서 시스템을 엉망으로 개발하고 떠난 개발자가 또 다른 회사에서 쉽게 일자리를 구할 수 있다는 이야기도 된다. 더 나은 사람을 고용하기 위해서는 채용 방식을 바꿔야 한다. 훌륭한 개발자들은 그들이 빛날 수 있는 기회와 재미난 일거리를 많이 제공해 줄 회사를 찾는다. 훌륭한 개발자를 채용하기 위해서는 회사도 같은 방식으로 생각해야 한다.
잘못된 면접 방식
1. 똑똑한 척하는 면접관을 세운다. 면접관의 사사로운 즐거움을 위해 지원자를 힘든 상황으로 몰아붙이고 지원자를 압도하고 싶어 해서는 안 된다.
2. 수수께끼식 질문을 던진다. 구글의 면접관들도 잘못된 것을 깨닫고 이런 질문을 그만둔 지 오래되었다.
3. 답을 모르는 질문을 한다. 면접관으로서 어떤 질문에 어떤 답변이 나와야 하는지 잘 모르겠다면 채용 중인 직무와 관련해서는 그다지 중요한 질문이 아닐 가능성이 높다.
4. 지원자를 바보로 만든다.
5. 인터넷 접속을 막는다. 인터넷 검색 때문에 코딩 면접이 변별력을 잃을 수 있다면 면접 과제 자체에 문제가 있다고 본다.
6. 종이에 코드를 작성하게 한다. 면접관 스스로도 할 수 없는 일이나 실제 업무 현장에서 부딪히지 않을 상황을 지원자에게 요구해서는 안 된다.
7. 알고리즘 문제를 낸다. 시스템의 주요 문제가 알고리즘이 아니라면 코딩 면접 때 알고리즘 문제 대신 실제 문제에 가까운 과제를 제시해야 한다.
8. 전화 면접을 한다.
회의론의 종류
기술적 변화의 시도를 막는 회의론의 종류이다. 아주 많은 사례가 있는데 실제로 겪어보고, 공감이 가장 많이 되는 2가지만 소개한다.
상아탑 아키텍트
소프트웨어 장인이 부딪힐 수 있는 최악의 회의론자들 중 하나다. 모든 것을 알고 있다고 생각한다. 이들은 그 어느 개발자보다도 자기가 더 똑똑하다고 자신한다. 자신이 제일 높은 지위를 차지하고 있다고 생각하나 수년 동안 상용 시스템의 코드를 단 한 줄도 만들어 본 적이 없는 경우가 대부분이다. 코딩을 했다고 해도 현실과는 동떨어진 개념 설명용(Proof of concept) 코드밖에 없다. 이들은 모든 기술적 결정에 자신이 책임져야 한다고 이야기하길 좋아하지만 실제로 책임을 지는 일은 극히 드물다. 일이 잘되면 자신의 덕이고, 일이 잘못되면 그들의 지시를 '제대로' 따르지 않은 개발자 탓이다. 이들은 자신의 아이디어가 아니면 나쁜 아이디어로 취급한다. 이들은 코드를 작성하지 않기 때문에 항상 자신의 존재 이유를 증명해야 한다는 압박이 있다. 이들이 취미로 하는 일은 인터넷에서 새로운 기술 약어를 찾는 것이다. 이들은 어느 비싼 기술에 대한 광고 자료를 읽고서 멋진 파워 포인트 문서를 만들고, 신참 개발자들에게 프로토타입을 만들어 보라고 시킨다. 그리고 관리자를 꼬드겨 개발자들이 자신의 가이드를 따르도록 명령하게 만든다. 이들은 아직 비즈니스 담당과 개발팀 간에 요구 사항 정리조차 되지 않은 시점임에도 프로젝트를 위한 기술 스택을 정의하는 것이 자신의 업무라고 믿는다.
팬보이
특정 주제나 관점에 광적으로 완전히 전념하는 사람들이다. 어떤 경우에는 아주 강박적이기까지 하다. 이런 종류의 개발자들은 특정 도구나 언어 프레임워크에만 아주 오랫동안 전념해서 해당 기술에는 전문가다. 자신이 잘 아는 분야가 그것밖에 없기 때문에 자신이 전념하고 있는 그것만이 모든 것에 대한 최고의 해결책이라고 믿고 다른 모든 대안들을 거부한다. 강박증의 대상이 특정 도구나 프레임워크가 아닌 특정 디자인 테크닉이나 방법론, 절차 같은 것일 수도 있다. 만약 이러한 사람들의 반대에 부딪힌다면 아주 긴 시간 동안 뜨거운 논쟁을 벌일 준비를 해야 한다.
실용주의 장인 정신
품질은 선택사항이 아니다. 저 품질을 선택해야 하는 경우에서도 항상 품질이 좋기를 희망한다. 장인으로서 우리의 역할을 특별히 이슈가 되지 않을 정도까지 품질 비용을 낮추는 것이다. 그렇게 하기 위해서는 좋은 실행 관례들을 마스터하고 실용주의적인 입장을 취할 필요가 있다. 품질은 비싼 것이 아니다. 스킬 부족이 잘 작성된 코드를 비싼 것으로 만드는 원인이다.
'책 > IT' 카테고리의 다른 글
한 줄 한 줄 짜면서 익히는 러스트 프로그래밍 - 팀 맥나마라 (0) | 2022.12.12 |
---|---|
Head First Go - 제이 맥가브렌 (0) | 2022.02.13 |
오늘부터 개발자 - 김병욱 (0) | 2021.12.12 |
댓글