티스토리 뷰

회고

애자일하게 성장하기

wbluke 2020. 4. 26. 19:45

애자일하게 성장하기

얼마 전에 우아한테크코스 2기 분들을 만나서 발표했던 내용을 조금 다듬어서 글로 한번 남겨보고자 한다.

 

개인적으로 발표를 준비하면서도 지난 1년 간의 경험과 성장하려고 고군분투했던 기억들을 정리하는 계기가 되었다.

그리고 앞으로 내가 집중해서 나아가야 할 방향성을 잡는 데에도 상기하고 있으면 좋을 것 같은 내용이어서 더더욱 글로 한번 정리하고자 한다.


어떻게 공부해야 하나요?

어떤 분야든 다 그렇겠지만 특히나 새로운 기술의 습득을 늘 짐처럼 안고 살아가야 하는 개발자라면, 생각을 안할 수가 없는 질문이다.

 

어떻게 공부해야 하나요? 라는 질문은

어떻게 성장해야 하나요? 라는 질문으로 바꿔볼 수 있고, 이는 다시

성장하려면 어떻게 해야 하나요? 라는 질문으로 던져볼 수 있다.

 

성장에 대한 갈망이 있는 사람이라면, 어떻게 하면 성장을 더 잘, 더 빠르게 할 수 있는지에 대해 관심을 가질 것이다.


애자일 (Agile)

애자일과 폭포수 모델

애자일에 대한 이야기를 하려고 하는데, 애자일 자체에 대한 이야기를 하려는건 아니다.

해당 주제를 다루기에는 너무 거창하고, 애자일 방법론에서 얻을 수 있는 인사이트를 개인의 성장에 접목시켜 보려고 한다.

 

 

보통 애자일을 이야기할 때 많이 비교하는 개발 방법론이 기존의 소프트웨어 개발 모델이었던 폭포수 모델이다.

 

폭포수 모델은 요구사항 분석, 설계, 개발, 테스트, 유지보수의 각 단계가 있고, 앞 단계가 100% 완료되어야지만 다음 단계로 넘어가는 방식이다.

그에 반해 애자일 방법론은 요구사항 분석, 설계 개발, 테스트, 배포, 피드백의 과정을 거치는데, 이 사이클을 작고 빠르게 여러 번 가져가면서 소프트웨어를 개발하는 방식이다.

 

폭포수 모델의 가장 큰 단점은 앞 단계의 분석, 설계가 망한다면 뒤쪽 단계는 바로 잡을 수 없다는 것이다.

하지만 애자일하게 소프트웨어를 개발하면 분석, 설계의 명세가 수시로 바뀐다. 수시로 피드백을 받는 과정이 추가되었기 때문이다.

 

사용자가 원하는 것이 무엇인지 예측으로만 접근하는 것이 아니라 실제적인 실험(작은 사이즈라도)을 통해 접근하는 것이기 때문에, 요구사항의 방향성을 사용자 관점으로 맞추고 수정해나갈 수 있다.

 

애자일의 핵심

작년에 가장 재미있게 읽은 김창준님의 함께 자라기에 나온 표현들을 조금 빌려보고자 한다. ('함께 자라기'라는 문구가 품고 있는 의미가 너무 마음에 들어서 내 블로그의 이름으로 빌려오기도 했다.)

 

애자일을 개인의 성장에 적용해보자면, 다음 세 가지를 핵심으로 꼽을 수 있을 것 같다.

  1. 성장하고자 하는 동기
  2. 즉각적인 피드백
  3. 수정할 수 있는 기회

성장하고자 하는 동기는 누구나 처음에는 가지고 있다. 그래서 사실 2번과 3번이 더 중요하다고 생각한다.

 

내가 골프를 배우는데 내가 친 공이 어디에 어떻게 떨어졌는지, 1년이 지나서야 피드백을 받는다면, 제대로 성장할 수 있을까?

 

피드백은 즉각적이어야 하고, 그 피드백에 따라 내 행동을 수정할 수 있어야 한다.

그리고 이 사이클을 얼마나 자주, 빠르게 가져가는지가 성장의 핵심이다.

 

A, B, C

책의 예제를 조금 더 빌려보자면, 더글러스 엥겔바트라는 분은 다음과 같이 작업 주기를 세 가지로 구분했다. (마우스, GUI 만드신 분이다.)

 

 

A 작업은 겉으로 가장 잘 드러나는 수준이다. 어떤 조직이라면 제품을 개발하고, 생산하고, 판매하는 것일테고, 개인의 성장의 관점으로 보자면 공부를 하거나 지식을 습득하는 일이 될 수 있다.

 

B 작업은 A 작업을 개선하는 작업이다. 어떻게 하면 A 작업을 더 잘 할 수 있을지, 제품의 공정, 시스템과 프로세스를 설계하는 작업이다.

 

그런데 C 작업은 B 작업을 개선하는 작업이다. 개선 사이클 자체의 품질을 개선하는 것이다. 한 마디로 개선하는 능력을 개선하는 것이다.

 

보통의 조직이나 개인은 A 작업에서 행동을 그치거나, 많이 나가더라도 B 작업까지의 단계에 많은 시간을 투자한다.

하지만 진짜 성장의 key, 핵심은 C 작업을 얼마나 잘 하느냐에 있다.

 

C 작업은 원래 내가 원하던 산출물인 A 작업을 잘하기 위한 B 작업, 그 B 작업을 얼마나 자주, 더 빨리, 잘 하느냐의 문제이다.

 

 

조금 더 다른 표현으로 접근해보자면, 보통 일반적인 조직은 왼쪽 그림처럼 일한다.

어떤 프로젝트가 생기면, 기간 내에 프로젝트를 완수하고 결과물을 뱉어낸다.

'이번 프로젝트 하느라 수고했다!' 한 마디 하고 또 다음 분기 다음 프로젝트로 넘어간다.

 

A 작업과 B 작업으로만 이루어진 조직은 결과물의 도출에만 신경을 쓴다.

그저 결과물을 어떻게 하면 더 잘 만들지에만 관심이 있기에, 이런 조직은 수평에 가까운 성장을 한다.

 

하지만 복리 조직이라고 부르는 오른쪽 그림의 조직은 만들어낸 결과물에서 피드백을 얻고 다시 조직에 되먹이는 작업을 한다.

C 작업에 대한 고민을 하는 조직이다.

단순히 결과물의 생산에만 신경쓰는 것이 아니라, 결과물을 다시 자기 것으로 만든다.

 

이런 조직은 복리적으로 성장한다. 복리의 마법이 얼마나 강력한지는 이미 다들 잘 아시리라 생각한다.

 

런치봇

 

우아한테크코스 1기 초반에, 덕수님과 둘이서 점심 추천 슬랙봇 을 만든 적이 있었다.

 

같이 공부하는 분들이 점심 시간마다 생소한 잠실 한복판에서 밥집을 정하는 것을 어려워해서, 랜덤으로 4개의 식당을 추천해주는 단순한 아이디어의 슬랙봇이었다.

아이디어는 간단했지만 데이터의 수집과 가공 작업부터 만만치 않았고, 설계에 대한 부분도, 기술적인 부분도 많은 허들이 있었던 사이드 프로젝트였다.

우여곡절 끝에 완성한 슬랙봇은 두달 여 간을 서비스하다가, 아쉽게도 시간이 지나면서 적어진 사용량과 유지보수 역량 부족으로 서비스 종료를 하게 되었다.

 

이 프로젝트를 통해 배운 것들은 말하면 입이 아플 정도로 정말 많았는데, 가장 좋았던 것은 개발을 진행하면서 즉각적으로 피드백을 받았고, 바로 수정할 수 있었다는 점이었다.

 

우테코라는, 개발에 대한 대화와 토론 문화가 자연스러운 교육 환경도 한몫 했고, 우리의 프로젝트 아키텍처에 대한 피드백을 주는 코치님과, 직접적인 개선 피드백을 주는 50여 명의 사용자가 바로 눈 앞에 있었다.

무엇보다도 우리의 결과물을 사용하고 피드백을 주는 사용자들이 같이 공부하는 동료들이면서, 이곳에서는 얼마든지 실패해도 된다는 안정감이 정말 좋았다.

 

한참 뒤에 회고할 때야 깨달은 사실이지만, 모든 과정이 애자일한 성장 과정들이었다.

 


그럼 남의 피드백이 없는 상황에서는 성장할 수 없나요?

지금까지의 내용만 보면 위와 같은 질문이 생길 수 있다.

꼭 내게 피드백을 줄 수 있는 '남'이라는 존재가 있어야만 성장을 할 수 있을 것처럼 보인다.

 

하지만 혼자서도 충분히 피드백을 받을 수 있다.

 

바로 나 자신에게서.

 

메타인지

 

메타인지라는 개념이 있다.

 

내가 인지하는 것을 인지하는 것인데, 이것이 바로 혼자 학습할 때의 애자일한 적용 지점이라고 생각한다.

다시 말해서 나 자신을 객관화시키고, 객관화된 또 다른 나 자신에게 지금 내가 무엇을 알고 있는지, 내가 알고 있는 이 지식이 진짜 일고 있는 것이 맞는지 피드백을 받는 방법이다.

 

즉, 내가 나에게 이런 질문을 던져보는 것이다.

 

너 이걸 정말 알고 있어? 진짜로 알고 있어?

 

JPA 스터디

우아한테크코스 2단계가 시작하는 날, JPA라는 기술에 강력한 욕구가 있었던 나는 바로 스터디원을 모집했다.

김영한님의 JPA 책을 6주 동안 빠르게 읽으면서 정리하는 스터디였고, 나름 재밌게 잘 마무리했던 기억이 있다.

 

그런데 스터디를 열었다는 이미지 때문인지, 그 이후로 우테코에서 나오는 모든 JPA에 대한 질문들이 다 나에게로 오기 시작했다.

나는 책에서 본 것, 아는 것 모르는 것 다 꺼내어가며 질문에 대처를 했는데, 이 과정 자체가 나에게 성장의 선순환을 안겨주었다.

 

불쑥불쑥 물어오는 동료들의 질문들 속에서, 나는 아는 것에 대해 무엇을 알고 있는지를 정비할 수 있었고, 모르는 것에 대해 무엇을 모르고 있는지를 더 명확히 할 수 있었다.

 

자연스러운 메타인지를 통해 아는 것과, 모르는 것과, 무엇을 모르고 있는지를 모르는 것에 대한 경계가 명확해졌다.

 

내가 안다. 라는 것의 정의

 

이 과정이 메타인지의 한 과정임을 인지하고 나서부터는, 어떻게 하면 메타인지를 더 잘 할 수 있을까? 에 초점을 맞추어 여러가지를 실험했다.

외부에서 JPA 스터디를 조금 다른 방식으로 한번 더 해보기도 했고, 책에 있는 JSP 기반의 예제를 Vue.js 로 전부 새롭게 고쳐서 만들어보기도 했다.

내 지식을 책의 언어가 아닌 나만의 언어로 정제하기 위해서 (학습에 관해 내가 가장 좋아하는 표현이다) 어떤 날은 칠판 한가득 책의 한 챕터를 전부 내 표현으로 바꿔서 정리하기도 하고, 어떤 날은 블로그에 정리한 글을 남기기도 했다.

 

 

그러려고 의도한 것은 아니었지만, 사실 어떻게 하면 메타인지를 더 잘할까? 라는 질문은 C 작업에 초점을 맞춘 질문이었다.

 

학습(A 작업)을 더 잘하기 위한 방법인 메타인지(B 작업), 그리고 그 메타인지의 사이클을 더 자주, 빠르게, 잘 하기 위한 여러 가지 장치들(C 작업)에 대한 고민은 돌아보면 성장에 정말 많은 도움을 주었다.

 


함께

 

우아한형제들의 송파구에서 일을 더 잘하는 11가지 방법에서, 잡담을 많이 나누는 것이 경쟁력이다라는 문구를 참 좋아한다.

누가 우테코의 최고 장점을 딱 한 가지만 뽑으라고 한다면, 주저없이 집단 지성이라고 답할 것이다.

 

위에서 이야기했던 애자일, 피드백, 메타인지 등은 함께하는 사람이 있을 때 효과는 더욱 폭발적이다.

개인적인 성장, 무작정 지식을 모아서 내 창고에 쌓아놓기만 하는 성장은 반드시 한계가 온다.

서로가 서로의 지식을 공유하고, 수정하고, 함께 소유할 때 일어나는 메타인지와 성장의 폭은 단순한 덧셈의 성장이 아니라 지수적 성장이며, 복리의 마법이다.

 

함께. 는 손해보는 장사가 아니다.


되먹임

성장에 대한 애자일의 원리는 이 한 단어로 정리할 수 있을 것 같다.

 

어떻게 하면 내가 만들어낸 결과를 나에게 되먹일 것인가?

어떻게 하면 기계처럼 단순한 지식 습득이 아니라 확실한 목표와 동기를 가지고 있는 효율적인 성장을 할 것인가?

어떻게 하면 내리막길을 내려가는 눈덩이가 순식간에 불어나는 것처럼 내 성장의 영역을 빠르고 의미 있게 확장할 것인가?

 

성장하는 환경과 도구는 늘 변하겠지만, 성장의 원리를 바라보는 시각은 크게 달라지지 않을 것 같다.

 

끊임없이 연구하고, 부딪히면서 알아가기를 바라며 이만 정리하는 글을 마친다.

 

댓글
댓글쓰기 폼