저는 현재 취업을 향해 공부를 하고 있습니다. 그렇기에 현직자 분들께서 어떻게 하면 일을 효율적으로 할 수 있는지, 새로운 개념들에 대해 더 효율적으로 학습할 수 있는지에 대한 궁금증이 계속 있었습니다. 이러한 궁금증 이면에는 성장에 대한 목마름도 있었겠지만 제가 제대로 나아가고 있는지에 대한 불안함도 있었고, 저의 성장이 다른 팀원들의 성장보다 더 중요하고 제가 성장을 하면 프로젝트를 더 빠르게 완수할 수 있을 거라는 생각이 있었기 때문입니다. 하지만 전문가가 아무리 많더라도 이를 유기적으로 협업할 수 있도록 하지 못하면 오히려 생산성이 저해가 된다는 말은 저의 고정관념을 깨기 충분했습니다.
제가 ‘함께 자라기’라는 책을 알게 된 순간은 일반적인 상황이었습니다. 저는 직장인 대상으로 열린 교육 프로그램에 참여를 하게 되었고, 멘토링 시간에 멘토님께 개발과 관련된 책을 추천해달라고 요청을 했었습니다. 멘토 분께서는 김창준 저자의 ‘함께 자라기’라는 책을 추천해 주셨습니다. 저는 실무에서 어떤 프로세스를 거쳐서 서비스를 만들어내는지, 업무는 어떻게 산정하며, 일정 분배를 어떻게 해야 하는지, 자신의 업무 시간을 어떻게 계산을 해야 하는지 등의 애자일 내에서 개발자가 해야 할 일들을 배우기 위해서 책을 읽기 시작했었습니다. 즉 애자일 방법 그 자체에 대해서 배우고자 하는 생각에 읽은 것 입니다. 일차원적인 생각을 가지고 책을 읽었지만 책을 다 읽게 되었을 때는 제가 어떤 방향으로 나아가야 하는지, 어떤 사수가 되어야 하는지, 모두를 성장시키기 위한 문화란 무엇인지에 대해 배울 수 있었습니다. 단순히 애자일 방법론의 원칙이 아니라 조직 내의 개인의 역할, 좋은 사수로 성장하는 방법, 회사가 원하는 인재상에 대해서 배울 수 있었고 왜, 멘토 분께서 이 책을 추천해 주셨는지 알 것 같았습니다.
책은 성장에 대한 이야기를 합니다. 이후에 협업할 때의 개인의 태도, 리더의 역할, 중요성에 대해 이야기를 하고 애자일에 대해 간단하게 설명을 하고 있습니다. 저는 책의 순서대로 제가 느낀 점에 대해 이야기를 하고자 합니다.
태어날 때부터 대학교를 졸업할 때까지 학생들은 주어진 틀 내에서 정답이 있는 문제를 가지고 학습을 하게 됩니다. 하지만 사회에 나오게 된다면 정답을 모르는, 어쩌면 없는 문제에 대해 고민을 해야 합니다. 정답이 없는 문제에 대한 불확실에 대한 불안감을 타겟으로 삼는 마케팅들도 넘쳐나게 됩니다. '부동산 이러면 성공한다', '개발자가 되기 위한 로드맵', '주식 성공 공식' 등 마케팅은 특정 분야에 국한되지 않습니다. 정답이 없는 문제에 대한 정답을 알고자 하는 것은 과거 신을 믿는 것에서 현재는 성공한 사람을 믿는 것으로 그 본질은 바뀌지 않는 것 같습니다. 다른 사람에게서 답을 찾기보다는 자신이 스스로 답을 해결하는 방법을 터득해야 합니다.
이런 와중에 사람들은 경력과 실력을 동등하게 보는 함정에 빠지게 됩니다. '경력 15년차 의사', '7년차 AI 엔지니어' 등의 경력을 강조하는 문구에 유혹되기도 합니다. 하지만 경력이 실력이 아닙니다. 경력은 단순히 그 일을 하게 된 시간일 뿐입니다. 그 시간을 얼마나 밀도있게 썼는가가 중요한 것이죠. 그냥 주어진 업무를 하는 것보다는 빠르게 피드백을 받으며, 다양한 관점에서의 업무 방식을 습득하는 것이 실력을 높이는데는 더 중요할 것입니다.
그 시간을 밀도있게 사용할 수 있도록 하는 시스템이 바로 애자일입니다. 만약 골프 연습을 하는데 제가 지금 친 공에 대해 1년 뒤에 피드백을 받을 수 있다면 제가 그 피드백을 얼마나 이해하고 받아들일 수 있을까요? 회사 내에서 제가 잘못된 개발을 진행을 하고 있는데 이 피드백을 6개월 뒤에 받는다고 생각하면 제가 만든 프로그램에 대해서 온전히 알고서 피드백을 받게 될까요? 애자일은 내가 한 행동에 대한 피드백이 짧은 주기 내에 얻어야 하며, 이 실수를 빠른 시간 내에 수정할 수 있도록 도와주는 시스템입니다. 피드백 주기가 짧다는 것과 실수를 수정할 수 있다는 것이 학습에서 매우 중요합니다. 지금 IT 산업을 이끄는 기업들과 개발자들은 자신의 코드에 대한 피드백을 빠르게 받을 수 있도록 코드 리뷰 등의 문화를 만들어내고 주도하고 있습니다.
그렇다면 애자일 이전의 개발방법론은 어떠하였을까요? 예전의 소프트웨어 개발 방법론은 워터폴 방식이었습니다. 워터폴 방식이란 A부터 Z까지 물 샐틈없이 계획을 한 후에 프로젝트를 진행하는 방식입니다. 이러한 개발 방법론은 미래에 대한 불확실성에 대해 계획을 통해 확실하도록 만든 후에 프로젝트 개발을 시작하자는 방법론인 것입니다. 그러나 사람은 아무리 계획을 해도 미래에 대한 불확실성을 완벽히 대처를 할 수 없습니다. 애자일 프로세스는 불확실성을 완벽히 컨트롤 하기보다는 불확실성을 짧은 주기의 피드백을 통해서 대처 가능한 수준에서 문제를 조기에 발견하고 해결하는 개발 방법론인 것입니다. 애자일 프로세스는 이렇게 팀의 성과를 높일 뿐만 아니라 개인과 개인이 속한 조직에 긍정적인 영향을 끼칠 수 있습니다. 하지만 무턱대고 "다들 애자일 프로세스가 좋다고 하니 우리 팀도 애자일을 도입하자"와 같은 의견을 팀원들에게 피력을 하게 되면 팀원들의 반발을 들을 수 있게 됩니다. 왜냐하면 조직 내의 사람들은 각자 살아온 배경과 경험들이 있습니다. 때문에, 아무리 좋은 방법이 있다고 하며 설득을 시키려고 해도 받아들이는 데에는 한계가 있고, 자신이 해야할 일들도 많은데 굳이 변화를 원하는 사람이 많지 않을 것이기 때문입니다. 그렇다면 객관적인 자료를 들고 가면 사람들을 설득할 수 있을까요? 저자는 물론 무턱대고 이야기하는 것보다는 나을 수 있지만, 설득될 가능성이 낮다고 이야기 합니다. 객관성이라는 개념조차도 주관적이기 때문이고, 주장이 논리적이여도 그 사람이 받아들일 이유가 없기 때문입니다. 저자는 사람들을 설득할 때는 객관성보다도 친밀감, 신뢰가 더 중요하다고 말합니다. 조직 내에서 사람들을 설득하기 위해서는 논리성, 객관성보다는 나에 대한 신뢰성을 쌓는 것과 상대방이 중요하게 생각하는 부분, 상대방이 설득이 잘되는 방식을 알아야 합니다. 그것이 타인을 설득하기 위한 기본적인 조건입니다. 때문에 내가 주장하는 바를 설득시키려면, 조직 내에서 신뢰를 쌓는 것이 가장 빠른 길인 것입니다.
또한, 전문가에 대한 잘못된 오해들을 풀어냅니다. 전문가는 혼자서 모든 것을 해결해 낼 수 있으며, 전문가들로만 구성된 팀이면 생산성이 높아질 것이며, 어려운 상황에서도 막힘없이 해결해가며, 무조건 탑다운 방식으로 깔끔히 일을 처리할 것이라고 생각합니다 하지만 전문가는 막히는 것이 있을 때, 자신의 사회적 자산(인맥 등)을 통해 자문을 구할 수 있는 사람이며, 전문가들로 구성된 팀들은 자신만의 방법을 통해서 일을 처리하고자 하기 때문에 오히려 성과가 떨어질 가능성이 높다는 연구결과가 있다고 말합니다. 정보를 공유하면서 일을 하도록 돕는 기술들이나 소셜 스킬이 뛰어난 제너럴리스트가 있어야 전문가들끼리의 시너지가 난다고 말합니다. 즉, 팀에 누가 있는지보다도 팀원들이 어떻게 서로 상호작용하는지가 중요하며 특히 자신의 의견을 말하거나 실수를 했을 때, 처벌을 받지 않거나 놀림받지 않을거라는 심리적 안전감이 있어야 한다고 말합니다, 그리고 전문가는 무조건적으로 탑다운 방식으로 처리하지 않는다고 말합니다. 모든 것을 다 설계하지 않고, 상황파악을 우선적으로 한 뒤에, 잘 정의된 문제는 탑다운으로, 그렇지 않은 문제들은 탑다운과 바텀업을 섞는 방식을 사용한다고 말합니다. 저도 책을 읽기 전까지는 전문가에 대해 잘못된 이상을 갖고 있었습니다. 책을 통해 제가 전문가가 되기 위한 어떤 관점을 가지고 일을 해야하는지에 대해서 생각해볼 수 있는 계기가 된 것 같습니다.
애자일은 여러 가치를 추구하면서 탄생한 개념입니다. 제가 생각했을 때, 애자일이 추구하는 가치는 가장 큰 가치는 변화에 대응하는 능력이라고 생각합니다. 현재 운영하고 있는 많은 서비스들은 출시하고 끝이 아닌, 고객과의 커뮤니케이션을 통해서 끊임없이 발전하게 됩니다. 때문에 모든 것을 설계하고나서 진행하기보다는 짧은 주기로 계획을 세우고, 설계를 하고, 코드를 작성하는 방법론이 이전의 워터폴 방식에 비해 변화에 유연하게 대처할 수 있게 되었다고 생각합니다. 또한, 애자일은 직업 윤리와 관련이 있습니다. 관리자는 개발팀이 절대 느리게 작업을 완료할 것이라 기대하지 않습니다. 아무리 서비스가 커져도, 기존의 서비스 위에서 서비스를 추가하는 것이므로 동일한 속도로 개발을 완료할 것이라 기대하는 것입니다. 아키텍처, 설계, 코드를 가능한 한 계속해서 깨끗하게 관리하여 생산성을 높게 유지하도록 하는 것이 개발자의 의무이자 최소한의 직업 윤리인데, 애자일 방법론을 통해 서로의 피드백을 받으며 이를 가능하게 된다는 것입니다. 저도 코드를 작성하다보면 빠르게 일을 끝내고자 하여 코드의 품질을 생각하지 않고, 개발을 하는 경우가 많았는데 코드 리뷰와 같은 피드백 요소가 생겼을 때 제가 잘못하고 있는 부분을 더 이상 복구가 되는 지점까지 가기 직전에 다른 사람의 도움을 받아 빠르게 고쳐나갈 수 있었습니다.
함께 자라기라는 책은 엄밀히 전공서적은 아닙니다. 저는 일을 할 때, 전공적인 지식이 가장 중요한 요소는 아니라고 생각합니다. 일반적인 상황에서 사람들은 다른 사람들과 협업을 하기 때문입니다. 많은 사람들은 대학교를 졸업한 후에야 사회에 나가 일을 하게 됩니다. 학교라는 환경은 개인이 잘하고, 열심히 하면 성과를 낼 수 있는 환경입니다. 그러나 사회는 개인의 실력으로 해낼 수 있는 일에 한계가 있습니다. 때문에 협업을 해야하며, 기업들은 협업을 잘하는 사람을 선호하는 것입니다. 하지만 사회의 나가기 직전까지 학교에서 이러한 것을 가르쳐주지 않고 지식적인 부분만 가르쳐주며, 정답이 있는 문제에 대해서만 고민을 하도록 합니다. 저도 이 책을 읽기 전까지는 협업에 대해서 큰 고민을 하지 않았습니다. ‘내가 잘하면 다 해결되는게 아닌가?’라는 생각을 은연 중에 갖고 있었습니다. 왜냐하면 개발자가 ‘개발’만 하는 일이라고 오해했기 때문입니다. 하지만 ‘개발’은 개발자의 많은 업무 중 하나일 뿐이며, 실제로 ‘개발’을 하는 시간보다 생각하고 커뮤니케이션하는 시간이 더 긴 직업이라는 것을 알게 되었습니다.. 저는 ‘함께 자라기’라는 책이 특히 개발자를 희망하는 학생들이 현업에 뛰어들기 전에 자신이 어떤 방향으로 나아가야 성장을 할 수 있는지, 자신이 속한 조직이 좀 더 성장을 하려면 어떻게 해야하는지를 배울 수 있다고 생각합니다. 때문에 전공분야에 국한되지 않고, 산업 자체에 영향을 끼칠 수 있는 책이라고 생각합니다. 왜냐하며 주로 개발자의 관점을 위주로 이야기를 하고 있지만 개인이 성장을 하려면 어떻게 해야하는지와 조직이 올바른 방향으로 나아가려면, 개인과 팀장이 어떻게 해야하는지를 설명해주고 있기 때문입니다. 저는 ‘함께 자라기’라는 책을 협업을 하는 모든 사람들에게 추천할만한 도서라고 생각하게 되었고, 저 또한 책을 통해 더 고수준의 관점을 얻었다고 생각합니다. 또한, 더 늦기 전에 잘못된 생각을 바로잡을 수 있어 다행이라고 생각합니다.
특히, 저는 책을 읽고나서 성장에 대한 관점, 실패에 대한 관점, 리더에 대한 관점 3가지가 바뀐 것 같습니다. 단순히 시간 투입을 많이 한다고 하여 성장이 빠르게 이뤄지는 것이 아닌 질 좋은, 그리고 빠른 사이클의 피드백이 필요하며 이를 위해서는 다른 사람과의 신뢰관계를 잘 쌓아야 한다는 점을 배울 수 있었습니다. 또한, 일을 잘하는 사람에게 배우는 것이 중요한 것이 아니라 스스로의 의도적인 수련이 필요하며, 이를 위해서는 적절한 난이도의 업무를 통해서 스스로 몰입을 할 수 있어야 함을 알 수 있었습니다. 자신의 코드가 다른 사람에게 보여짐을 두려워하지 말고, 개선점에 대해 피드백을 들었을 때 이를 체화하기 위한 노력을 해야한다는 것을 깨달았습니다.
실수라는 것은 예방하는 것이 아닌 관리를 하는 것이며, 실수를 통해서 배우는 것이 가장 좋은 성장 방식임을 배울 수 있었습니다. 많은 개발자들은 ‘임포스터 신드롬’을 가지고 있다고 합니다. 임포스터 신드롬이란 자신이 잘 못하는 것을 다른 사람에게 들킬까봐 두려워하는 심리 상태를 말합니다. 협업 시 자신의 코드가 다른 사람에게 보여지는 직종이기 때문에 이러한 불안한 심리 상태가 발생할 수 밖에 없다고 생각합니다. 저도 특정 기능에 대한 코드를 구현하지 못하는 일이 발생할까봐 항상 초조해하는 경우가 많았습니다. 다른 사람이 작성한 좋은 코드를 보며 난 왜 저런 코드를 작성하지 못할까라는 자책을 하기도 했습니다. 제가 잘하지 못한다는 생각은 어려운 업무에 대해 도전을 하지 못하도록 막는 역할을 하기도 합니다. 제가 잘해내지 못해 실수를 범할까봐 그런 경우가 많았습니다. 그러나 실수를 통해서 배워야 한다는 것을 배웠을 때는 도전을 하는 과정에서 실수도 많이 발생할 것이고 이 실수를 통해 스스로 배울 수만 있다면 그것은 실수가 아닌 성장의 발판이 될 것이라는 긍정적인 마인드를 가질 수 있었습니다.
그리고 저는 리더라면 팀원이 못하는 일들을 처리하는 사람이라고 단순하게 생각했었습니다. 조직 내의 개개인의 성장은 오로지 개인의 몫이라고 생각했었습니다. 그러나 책을 읽으면서 리더란 무엇인가에 대해서 고민을 해볼 수 있게 되었습니다. 좋은 리더는 자신의 발전을 중요시 해야 하지만 동시에 조직의 성장을 중요시 해야 하며, 그것은 조직 내의 팀원들의 성장을 통해서 가능하다는 생각을 갖게 되었습니다. 저는 연구실 내에서 스터디를 하고 있고 팀장의 역할을 하고 있었음에도, 팀원의 성장에 소홀히 했다는 생각이 들게 되었습니다. 사회에 나가도, 좋은 리더라는 것에 대해서 고민을 하면서 성장을 할 수 있게 된 것 같습니다.
결국 ‘함께 자라기’라는 책은 정해진 길이 없는 인생이란 과정에서 성장을 어떻게 바라봐야 하는 지와 성장의 방법을 가르쳐 줌과 동시에 앞으로 제가 어떤 생각을 가지면서 사회에 나가야 하는지를 일깨워준 책입니다. 이러한 교훈을 토대로 저는 제가 속한 연구실의 학생들과 함께 스터디를 진행하는 등의 조직 내의 문화를 바꾸려고 노력할 수 있었습니다.