*이 포스트는 Robert C. Martin 님의 허락을 받아 blog.cleancoder.com 의 글
“The Tragedy of Craftsmanship.“를 번역한 것입니다. 저작권에 유의하시기 바랍니다.
원문에 대한 설명 (역자주)
이 글은 클린 코드의 저자로 유명한 Robert C. Martin 님이, 리팩토링의 저자로 유명한 Martin Fowler 님의 2018년 애자일 오스트레일리아 키노트 발표의 내용을 보고 일종의 변론을 하는 내용입니다. 해당 발표 내용 중 소프트웨어 장인정신 운동을 안타깝게 생각한다는 부분이 있었는데, 이것에 대한 변론인 것이죠.
아래는 Martin Fowler 님 발표의 해당 부분 번역입니다:
(애자일 컨퍼런스들이 소프트웨어 개발 방법에 대해 잘 다루지 않으며, 참석자들 대부분이 실제로 기술을 사용하는 개발자가 아니라 프로젝트 매니저들이라는 것이 안타깝다는 발언 직후)
더 비극적인 것은 개발자들이 이렇게 말하기 시작했다는 사실입니다. “오, 이제 우리를 위해서 아예 새로운 세계를 만들어야겠어. 소프트웨어 장인정신 운동! 비즈니스 전문가나 애널리스트, 프로젝트 매니저들한테서 떨어져서, 그냥 기술에 대한 이야기를 하는 거지.” 이건 아주 끔찍한 일입니다. 왜냐하면 이런 서로 다른 영역들을 조화롭게 섞이도록 하자는 것이 애자일의 핵심이거든요.
이제부터는 본문으로, Robert C. Martin 님의 독백 형식으로 진행됩니다. (제 오역일 수도 있지만 화가 좀 나신듯한..😅)
본문
슬퍼 보이네.
맞아. 방금 마틴 파울러의 애자일 오스트레일리아 2018 키노트 발표 내용을 읽었거든. 2018년 애자일 현황이라고 하던데.
아, 맞아. 좋은 발표였지.
– 애자일 산업 단지(Agile-Industrial-Complex)를 경계하라.
– 기술적 우수함을 유지하라.
– 프로젝트보다는 프로덕트를.
좋은데! 뭐가 문제야?
(역자주) 애자일 산업 단지: 애자일을 팀들이 자유롭고 유기적으로 이뤄나갈 수 있게 하지 않고, 통일된 규칙을 정하거나 통제해 이루려 하는 애자일 컨설턴트, 전문가, 매니저 등을 지칭
그 발표에서 소프트웨어 장인정신 운동이 형성되는게 비극이라고 하더라고.
그래. 맞는 말이지.
맞다고? 어떻게 그럴 수 있어? 난 소프트웨어 장인정신이 좋은 거라고 생각했는데.
오, 맞아. 그건 아주 좋은 거야.
그렇다면 왜…?
비극은, 애자일 운동이 원래는 소프트웨어 장인정신의 이상을 전파하고자 하는 것이였는데, 그걸 아주 처참하게 실패했다는 점이지.
이해가 안돼.
애자일 운동은 컨퍼런스 진행과 스크럼 마스터, 프로젝트 매니저 자격증 발급에 관여하느라 이제 개발자와 장인정신 규율은 뒷전으로 하고 있어.
그렇지만 애자일 운동을 시작한 건 개발자들이잖아.
그래. 그랬지. 그게 대단한 아이러니야. “이봐! 팀이 중요한 거야. 코드는 깔끔해야해. 고객들과 협력하고 싶어. 배포는 빠르게, 자주 하고 싶어.”라면서 애자일 운동을 시작한 건 개발자들이였지.
애자일 운동은 장인정신의 이상을 가진 개발자들과 소프트웨어 전문가들에 의해 시작됐어. 그런데 프로젝트 매니저들이 들이닥쳐서는 말하길: “와! 애자일은 새롭고 멋진 프로젝트 관리 방법이네.”
Alan Sherman 의 J. C. Cohen 이라는 오래된 노래가 하나 있어. 지하철 역장에 대한 이야기인데, 꽉 찬 열차에 사람들을 아주 잘 밀어넣었는데 그러느라 기관사를 열차에서 내리게 했다는 거야. 똑같은 일이 애자일 운동에 벌어진 거지. 프로젝트 매니저들을 너무 많이 밀어 넣느라, 개발자들을 내리게 해버렸어.
마틴 파울러가 설명한 거랑은 좀 다른데. 마틴은 소프트웨어 장인정신 운동이 시작된 계기가, 많은 개발자들이 “오, 이제 우리를 위해서 아예 새로운 세계를 만들어야겠어. 소프트웨어 장인정신 운동! 비즈니스 전문가나 애널리스트, 프로젝트 매니저들한테서 떨어져서, 그냥 기술에 대한 이야기를 하는 거지.”라고 말해서라던데.
오, 아니. 마틴은 완전히 틀렸어. 소프트웨어 장인정신 선언문에 명확히 나와있듯이, 소프트웨어 장인정신 운동의 목표는 애자일 운동의 메세지를 이어나가면서 확장하는 거야. 소프트웨어 장인정신은 그냥 애자일의 원래 목표를 이어가고 있는 거지.
소프트웨어 장인정신은 애자일 운동이 버리고 간 “애자일”이야.
버리고 갔다고? 뭘 하려고?
컨퍼런스, 자격증, 멋들어진 새 프로젝트 관리 전략.
자격증은 뭐가 문제인데?
이렇게 얘기해볼게: 누가 ‘장인정신 자격증 2일 완성 강의’를 제안하면 방에서도 웃음거리가 되고, 동네에서도 웃음거리가 되고, 그 지방에서도 웃음거리가 될거야. 바보같은 아이디어잖아.
알았어. 그렇지만 광고, 자격증, 강의, 컨퍼런스같은 것 없이 어떻게 사회운동을 하겠어? 사람들의 관심을 끌려면 필요한 것들이잖아?
그럴 수도. 하지만 나는 소프트웨어 장인정신 운동은 애자일 운동이 그랬던 것처럼 원래 목적을 버리지 않았으면 해.
어떤 목적?
원래 애자일의 목적. 알다시피, 장인정신은 새로운 것에 대한 게 아니야. 오래된 것에 대한 거지. 만족스럽게 일하고, 가치를 더하고, 일을 잘 해내는 것. 교류하고, 소통하고, 협력하는 것. 생산적으로 변화에 적응하고 반응하는 것. 프로페셔널리즘과 윤리 의식. Kent Beck 이 애자일로 이루려던 것들에 대한 거야.
이루려던 게 뭔데?
애자일 선언문이 쓰여졌던 2001년 스노우버드 컨퍼런스(Snowbird conference)에서, 켄트 벡이 말했던 목표는 개발자와 관리자 사이의 골을 메우자는 거였어.
그런데 애자일 운동은 애자일을 “새롭고 더 좋은” 관리 방법을 전파하는 비즈니스로 바꿔버리면서 그 목표를 버린 거야. 개발자와 관리자를 가깝게 만들어주는 대신에, 애자일 운동은 프로젝트 관리에만 집중하고 개발자는 사실상 거의 배제했지.
그래서 개발자들이 애자일 운동을 떠나가는 거야?
아니! 개발자들은 떠나는게 아니야. 개발자들은 그 진행 과정에 있는거야! 애자일을 원래 생각했던 대로 계속 따르고 있어. 애자일 선언문 첫 내용을 읽어봐. “우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다.” 소프트웨어 장인정신 운동가들이 그걸 이어가고 있는거야. 애자일 운동의 프로젝트 매니저들이 아니라. 그들은 뭔가 다른 걸 추구하고 있을 걸?
뭘 추구하고 있는데?
새로움과 신선함. 요즘 애자일 운동은 “차세대(The Next Big Thing)”와 “혁신(The Bold New Idea)” 같은 키워드에 대한 거야. 열정과 높은 에너지를 유지하기 위한 신선함을 필요로 하는 거지. 사람들이 컨퍼런스와 자격증 시험을 신청하기를 바라면서. “진보”를 만들고 있는 것처럼 보이고 싶은 거야. 애자일은 비즈니스가 되어버렸고, 비즈니스는 성장해야하지.
그렇다면 성공하고 있는 걸로 보이네.
맞아. 다만 애자일의 원래 목표를 성공하고 있는 게 아닐 뿐이지. 신선함과 새로움에 대한 수요를 충족하기 위해서 원래 목표에서 갈라져 버렸어. 불운하게도 결과는, 마틴 파울러와 론 제프리스(Ron Jeffries)가 말했던 것이 됐지: “가짜 애자일(Faux Agile)”, “다크 스크럼(Dark SCRUM)”, “시들은 스크럼(Flaccid SCRUM)”.
나한테는 믿기 어려운 내용들인데.
그럼 증명해볼게. 발표의 첫 번째 포인트는 뭐였지? 애자일-산업 단지에 관련된 거.
사람들이 일하는 방식을 원하는 대로 스스로 정하게 했을 때 가장 효율이 좋다는 내용이였던가.
맞아! 그럼 소프트웨어 개발팀에서 대부분의 일을 하는 건 누구지?
음, 물론 프로그래머겠지.
파울러의 발표를 듣던 개발자는 얼마나 되지?
글쎄, 그가 말하기로는 “조금”, “아주 적은”, “극소수”였지.
증명 완료. 애자일 컨퍼런스에 가는게 누구지? 개발자들은 아니야. 일 대부분을 처리하는 사람들이 아니라는 거지. 그런 컨퍼런스들은 개발자들이 시작했어. 애자일 운동도 개발자들이 시작했고. 그런데 더이상 개발자들은 가지 않아. 변한 건 개발자들이 아니야. 변한 건 컨퍼런스들과 애자일 운동이지. 애자일 운동은 개발자들을 떠났고, 애자일로부터도 떠나버린 거야.
하지만…
봐. 애자일이 프로젝트 관리에 대한 것이였던 적은 없어. 그런데 그렇게 되어버린 거야. 애자일이랑 프로젝트 관리는 서로 전혀 관계가 없어. 애자일은 프로젝트를 관리하는 더 좋은 방법이 아니야. 애자일은 프로젝트 관리에 할 게 없어. 애자일은 비교적 작은 규모의 팀이, 작거나 중간 규모 정도 되는 프로덕트를 만드는 것을 도와주는 가치나 규율들의 집합이야.
그렇지만 그게 관리인 것 아니야?
아니! 절대 아니지! 프로젝트 관리는 날짜, 예산, 데드라인, 마일스톤에 관한 것이지. 인사 관리나 동기부여에 관한 거고. 좋은 관리는 절대적으로 필요해. 하지만 애자일로는 뭐든 할 게 없다고.
여기. 애자일 선언문을 봐. 네 개의 구절들이 왼쪽과 오른쪽으로 어떻게 나눠져 있는지 봐. 왼쪽에 있는 것과 오른쪽에 있는 것을 나누는 건 뭘까? 왼쪽에 있는 건 관리고, 오른쪽에 있는 건 애자일이야. 관리자들은 프로세스와 도구를 적용하지. 애자일 팀의 개인들은 상호작용을 해. 관리자들은 포괄적인 문서를 만들고, 애자일 팀은 작동하는 소프트웨어를 만들어. 관리자들은 계약 협상을 하고, 애자일 팀은 고객과 협력해. 관리자들은 계획을 잘 따르는지 확인하지만, 애자일 팀은 변화에 대응하지.
그렇지만 스크럼 마스터들이 프로젝트 관리자 역할을 하는 거잖아?
전혀 그렇지 않아! 스크럼 마스터들은 관리자가 아니라 코치들이야. 그들의 역할은 가치와 규율을 보호하는 거고, 팀원들이 어떻게 일하기로 약속했는지를 리마인드해주는 거야. 그 역할은 관리자들에게 독점될 게 아니라, 팀에서 공유되어야 하는 거야. 필요하다면 매주 새로운 팀원이 코치 역할을 자원해서 할 수도 있는 거지. 또 역할은 원래 임시적이야. 성숙한 팀이라면 영구적인 스크럼 마스터는 필요하지 않아.
와, 그건 확실히 이제는 가르치지 않는 것들이네. 그럼 너는 애자일이 이제 몰락했다고 생각하는구나.
아니! 애자일은 잘 살아있고, 소프트웨어 장인정신 운동으로 뻗어나가고 있어. 관리자들이 와서 애자일 운동을 점령한 뒤로 애자일은 그리로 이주한 거지.
그럼 이제 애자일 운동이란 건 뭐야?
요즘이라면, 애자일 운동은 거의 프로젝트 관리자 협회의 비공식 지사 정도 되는 것 같네. 프로젝트 관리자들을 위한 컨퍼런스와 훈련, 자격증을 홍보하는 비즈니스지. 켄트 벡이 목표하던 것과는 정반대가 되어버렸어. 애자일 운동은 개발자와 관리자의 골을 메워주지 않아. 오히려 악화시키지.
애자일 운동은 애자일이 아니라는 말 같은데.
그렇지. 그건 한참 전에 포기했지. 요즘의 애자일은 프로젝트 관리가 팀을 애자일하게 만든다는, 끔찍한 결함이 있는 아이디어일 뿐이야.
글쎄, 프로젝트 관리가 팀을 애자일하게 만드는 건 맞지 않아?
아니, 아니, 전혀. 알다시피, 애자일 팀은 애자일의 가치와 규율을 지키는 개발자들의 그룹이잖아. 프로젝트가 어떻게 관리되든 애자일 팀은 애자일 할 수 밖에 없어. 반대로, 애자일하지 않은 팀은 새롭고 멋들어진 프로젝트 관리 방법을 적용한다고 해서 간단히 애자일해지지 않아. 그런 팀이 가짜 애자일을 하게 되는 거지.
그 말은 좋은 관리자여도 팀을 애자일로 이끌 수는 없다는 말이야?
소프트웨어 장인정신의 가치와 규율을 심어줄 수 있는 관리자는 드물어. 불가능하지는 않지만, 흔하지 않지. 애자일 팀은 주로 이미 애자일 가치와 규율을 공유하고 있는 사람들로 이루어져. 프로젝트 관리자가 스크럼 마스터 자격증을 가지고 있다고 해서 한 팀을 애자일하게 만들 수 있다고 생각하는 건 허무맹랑한 꿈이야.
그렇다면 미래는 어떨까?
미래는 그려왔던 그대로일거야. 애자일의 가치와 규율은 작은 개발팀들이 작은, 중간 규모의 프로덕트를 만드는 걸 계속해서 도울 거고, 개발자와 관리자 사이의 골을 메우는 것을 도울 거야. 오늘날, 이 가치와 규율들은 소프트웨어 장인정신의 이상을 지지하는 사람들에 의해서 이어질 거야.
소프트웨어 장인정신을 전파하기 위해 조직이 필요할 것 같지는 않아. “장인정신 동맹” 같은 건 필요 없을 거야. 내가 생각하기에 우리에게 필요한 모든 건 교류와 소통의 정신을 가진 사람들과, 꾸준히 가치를 더해감으로써 변화를 이끌어내는 전문가 커뮤니티라고 생각해. 애자일의 이상, 소프트웨어 장인정신의 이상은 이끌어주는 조직이 없어도 성장하고 퍼져나갈 수 있을 만큼 단단하니까.
그러면 소프트웨어 장인정신 운동은 비극이 아닌 거네?
도대체 어떻게 장인정신의 이상이 비극일 수 있겠어? 그건 인간이 인간이였던 이래로 염원하던 영원 불멸의 이상인데. 비극은 애자일 운동이 애자일의 가치와 규율을 뒤에 버리고 비즈니스로 전락해버렸다는 것이였지.
로버트 C. 마틴 시리즈
- 함수형 프로그래밍 vs 객체지향 프로그래밍
- 이상적인 객체지향 if else switch 조건문?
- 객체지향 5원칙 (SOLID)은 구시대의 유물 ?
- 애자일의 몰락과 소프트웨어 장인정신의 비극
블로그에 있는 글 하나 하나가 다 명문이네요.
좋은 글들을 번역해 전달드릴 수 있어 뿌듯합니다. 댓글 감사해요^^
서핑하다가 이렇게 좋을글을 읽고 가네요
번역해주셔서 감사합니다. 잘읽었습니다.
댓글 감사합니다. 앞으로도 좋은 글 가져오도록 하겠습니다!