클린 애자일(Clean Agile - Back to Basics) - 7장 장인 정신
애자일은 소프트웨어 업계에 폭풍을 일으켰다. 하지만 ‘고요속의 외침’ 게임에서처럼, 원래 애자일의 의도는 와전되고 단순해져 버렸다. 애자일이 회사에 도착했을 때는 소프트웨어를 더 빨리 만드는 프로세스가 되어 버렸다.
애자일 후유증
문화를 바꾸기는 쉽지 않다.
개발팀은 관리자가 정한 개발 계획과 마일스톤을 강요받는다. 개발자가 일정 추산을 하긴 하지만, 이미 잡혀있는 마일스톤 일정을 끼워 맞추도록 요구받는다. 스프린트 동안 모든 스토리 포인트를 달성하지 못했다면 개발자가 다음 스프린트 때 더 열심히 일해서 늦어진 것을 메워야만 한다. 일일 스탠드업 미팅은 개발자가 제품 책임자와 애자일 코치에게 진행 상황을 보고하는 자리로 바뀌었다. 지금 하는 일을 자세히 설명하고, 언제까지 마칠지 말해야 한다. 제품 책임자가 보기에 개발자가 자동화된 테스트나 리팩터링, 짝 프로그래밍 등에 너무 많은 시간을 쓰고 있는 것 같으면, 팀 전체에 바로 그만두라고 말한다.
중요한 기술 활동은 이런 애자일 프로세스에서 찾아볼 수 없다. 쉽게 깨지는 소프트웨어, 악명 높은 거대한 단일 모듈 구조를 당연히 그러려니 받아들이게 된다. 관리자는 개발자가 일하는 게 느리다고 비난한다. 개발자는 관리자가 꼭 필요한 기술적인 작업을 못하게 막는다고 비난한다.
이것이 바로 애자일 후유증이다. 애자일 전환에 몇 년을 쓴 다음에야 회사들은 원래 있었던 문제를 여전히 가지고 있다는 것을 깨닫는다. 그리고 당연하게도 애자일에 그 책임을 뒤집어 씌운다.
서로 다른 기대
오직 프로세스에만 초점을 둔 애자일 전환은 반쪽짜리 전환이다.
협업이 원활하게 이루어지면 일을 할 때 장애물이 다소 줄어들긴 하지만, 사람들에게 없던 기술을 만들어 주지는 않는다.
개발팀은 실천 방법을 배우고 숙달하기 위해 노력해야 한다. 바로 여기에 문제가 있다. 애자일 전환을 하는 동안 개발자의 실력을 향상시키기 위한 예산이 있는 경우는 드물다. 사업 부서는 개발자의 업무 속도가 느려지리라 생각하지 않는다. 대부분은 개발자가 새로운 업무 방법을 배워야 한다는 것을 알지도 못한다. 그저 어디선가 더 협동해서 일하면 개발자가 더 빠르게 일할 것이라고 들었을 뿐이다.
그저 원활하게 협업이 이루어진다고 해서 이런 기술이 생겨날 리는 없다. 이런 기술 역량을 습득하려면 지원이 필요하다. 지원은 코칭, 교육, 실험, 자체 학습 등을 조합하여 이루어질 수 있다.
떠나감
개발자가 애자일에서 떠나가는 것일까? 애자일이 개발자에게서 떠나가는 것일까?
답은 아마 둘 다일 것이다. 애자일과 개발자는 서로에게서 떠나가는 것 같다. 많은 조직에서 애자일은 스크럼과 동의어가 되었다. XP를 한다고 하더라고 TDD나 지속적 통합 같은 기술 실천 방법 몇 가지만 겨우 사용하는 형편이다.
소프트웨어 장인 정신
전문 소프트웨어 개발의 기준을 높이고, 애자일이 처음 품었던 목표를 재정립하기 위하여, 일군의 개발자가 2008년 11월 시카고에서 모여서 ‘소프트웨어 장인 정신(Software Craftsmanship)’이라는 새로운 운동을 만들었다.
미래의 소프트웨어 장인으로서 우리는 전문 소프트웨어 개발의 기준을 높이려 한다. 이를 위하여 높은 수준의 개발을 실천하고, 다른 사람이 기술을 배우는 것을 도울 것이다. 이 작업을 통해 우리가 동의한 가치는 다음과 같다.
작동하는 소프트웨어뿐 아니라, 잘 만들어진 소프트웨어
변화에 대응할 뿐 아니라, 꾸준한 가치를 더하기
개인과 상호작용뿐 아니라, 전문가 커뮤니티
고객과의 협력뿐 아니라, 생산적인 동반관계
왼쪽에 있는 것을 추구하다 보면, 오른쪽에 있는 것이 필요해진다는 것이다.
잘 만들어진 소프트웨어는 잘 설계하고 테스트한 코드다. 변경하기가 두렵지 않고, 사업 변화에 빠르게 반응할 수 있도록 만들어 주는 코드다.
꾸준한 가치를 더하기는 우리가 무엇을 하든지 고객과 고용주에게 계속 더 많은 가치를 제공하는 게 집중해야 한다는 것이다.
전문가 커뮤니티는 지식을 나누고 서로 배우며 업계의 기준을 올려야 한다는 것이다. 우리는 다음 세대 개발자를 키워낼 책임이 있다.
생산적인 동반 관계는 고객 및 고용주와 전문가다운 관계를 맺어야 한다는 뜻이다. 언제나 윤리적으로, 공손하게 행동해야 한다. 우리가 솔선수범해서라도 상호 존중과 전문성이 있는 관계를 확립해야 한다.
우리 일을 직업이니까 해야만 하는 것으로 여기지 않을 것이다. 우리 일을 전문가 서비스로 보여야 한다. 자신의 경력에 책임감을 갖고, 자신의 시간과 돈을 투자하여 더 실력을 갖추어야 한다. 장인 정신의 네 가지 가치는 전문가적인 가치이기도 하지만 개인의 가치이기도 한다. 장인은 누군가가 돈을 지불해서가 아니라, 더 잘하고 싶은 스스로의 욕구를 바탕으로 최고의 결과물을 내기 위해 노력한다.
이 운동은 개발자의 운동이다. 개발자가 가능한 한 최고가 되라고 격려하는 운동이다. 개발자가 자신을 고급 기술을 가진 전문가로 만들고, 자신을 전문가로 여기도록 만들려는 운동이다.
이념 대 방법론
이념은 견해와 이상으로 만들어진 체계다. 방법론은 방법과 실천 사항으로 이루어진 체계다. 이념은 우리가 추구해야 할 이상을 알려 준다. 이 이상에 도달하기 위해서 여러 방법론을 사용할 수 있다. 방법론은 목적을 이루기 위한 수단인 것이다. 애자일의 주요 목표는 사업을 기민하게 만들고 고객을 만족시키는 것이다. 이를 위해 가깝게 협력하고, 반복 주기를 따라 개발하고, 짧은 피드백 고리를 만들고, 기술적인 완성도를 높인다.
방법론과 실천 사항은 처음 시작하는 사람에게 아주 좋다. 하지만 방법론이나 실천 사항에 너무 집중하면, 팀이나 조직이 진짜 목표에서 벗어나 버릴 수 있다.
“’실천 방법이 없는 원칙은 빈 껍데기다.’ ‘원칙 없는 실천 방법은 단순히 주어진 절차를 생각없이 암기하는 것 밖에 되지 않는다.’ 원칙은 실천 방법을 안내하고, 실천 방법은 원칙을 구체화한다. 둘은 늘 함께 가야 한다.”
우리가 일하는 방식, 즉 방법이나 실천 사항이 원칙이나 가치에 맞지 않는다면, 우리는 그런 원칙과 가치를 지키고 있다고 말할 수 없다.
소프트웨어 장인 정신도 실천 방법이 있나요?
소프트웨어 장인 정신은 실천 방법이 없다. 대신 더 나은 실천 방법과 일하는 방법을 끊임없이 찾아보라고 권한다. 좋은 실천 방법은 더 좋은 것이 나타나서 대체되기 전까지만 좋다.
장인 정신은 기술적인 실천 방법과 엔지니어링, 자기 발전만 다루지는 않는다. 전문가 다움과 고객의 사업 목표 성취를 가능하게 하는 방법도 다룬다.
실천 방법이 아니라 가치에 집중하라 실천 방법을 논의할 때는 반드시 달성할 목표에 먼저 공감해야 한다.
실천 방법 논의하기
개발자는 사업 부서와 기술 실천 방법이 아니라 사업 가치에 대해서 대화해야 한다.
개발자는 자신이 어떻게 일하는 지, 그렇게 일할 때 장점이 무엇인지 명확하게 설명할 수 있어야 한다. 개발자와 사업 부서와의 대화에서도 왜, 무엇을, 언제까지인지만 논의해야지 어떻게를 다루어서는 안 된다.
장인 정신이 개인에게 끼치는 영향
장인 정신은 소프트웨어 개발자를 전문가로 만든다. 전문가란 단순히 직업이 있는 사람을 가리키는 말이 아니다. 전문자는 우리 자신의 일부다. 누군가가 “무슨 일을 하십니까?”하고 물었을 때, 직업이 있는 사람은 보통 이렇게 말한다. “저는 X사에서 일해요” 아니면 “저는 소프트웨어 개발자로 일해요”라고 한다. 하지만 전문가라면 보통 이렇게 말한다. “저는 소프트웨어 개발자예요.” 전문가가 되려면 투자를 많이 해야 한다. 전문자는 더 잘하고 싶어한다.
그렇다고 해서 가족과 시간을 보내지 않는다거나, 살면서 다른 취미를 가지지 않는다는 것은 아니다. 오히려 노력과 관심을 균형있게 나누는 방법을 찾음으로써, 균형 잡히고 행복한 하나의 삶을 살 수 있게 해 줄 것이다. 일은 우리 인간에게 기쁨을 주고 성취감을 준다. 전문가는 일에서 삶의 의미를 찾는다.
장인 정신이 우리 산업에 끼치는 영향
2008년부터 전 세계 각지에서 소프트웨어 장인 정신 커뮤니티와 콘퍼런스의 수가 늘어나기 시작했다. 모임을 할 때도 경험이 많고 적고를 떠나 모든 개발자를 환영한다. 다음 세대의 전문가를 육성하기 위해서도 노력하고 있다.
장인 정신이 기업에 끼치는 영향
기업이 이제는 엔지니어링 역량을 올리기 위하여 장인 정신을 살펴보고 있다.
장인 정신과 애자일
근본적으로 애자일과 소프트웨어 장인 정신 운동은 매우 비슷한 것을 이루려고 한다. 둘 다 모두 고객의 만족을 원하고, 둘 다 가깝게 협력하기를 바라며, 둘 다 짧은 피드백 고리를 중요시한다. 둘 다 높은 품질의 가치 있는 결과물을 만들기 원하고, 둘 다 직업의식을 원한다. 사업이 애자일해지려면 필요한 것이 원활한 협력과 반복하는 프로세스만은 아니다. 좋은 엔지니어링 기술도 있어야 한다. 그러려면 애자일과 장인 정신을 조합하는 것이 가장 완벽한 방법이다.
결론
애자일의 가치와 장인 정신의 가치는 동일한 목표를 갖고 있다. 두 운동은 분리되어서는 안 된다.