문제 해결 방법은 여러가지가 있을 수 있다. 혼자서 열심히 고민하여 문제 해결 하는 방식도 있지만, 팀으로서 협력하는 것은 매우 효과적이다. 하지만, 현실은 늘 항상 들어 맞는 정답은 없다. 그래도, 성공적인 팀-협업적(Collaborative)으로 일하는 팀이 문제를 효과적으로 해결한다.

 

여기서는 김창준님의 함께 자라기[1]에서 이야기하는 소프트 스킬, 협력적 추상화, 그리고 전문가를 어떻게 팀으로 데려와 성공할 수 있는가의 측면에서 살펴 보자

하드 스킬(Hard Skill) vs 소프트 스킬(Soft Skill)

우리는 많은 경우, 특정 도메인에서 일을 한다. 전자 상거래, 소셜 미디어, 멀티미디어 등 여러 가지가 있을 수 있다. 이렇게 한 분야에서 일을 하다 보면 그 분야, 즉 도메인 지식(Domain Knowledge)가 증가한다. 뿐 만 아니라, 개발자라면 컴퓨터 언어, 자료 구조, 알고리즘과 같은 개발과 관련돈 공통된 지식도 증가하게 된다. 이러한 것은 우리가 문제를 해갈 하기 위한 기술 하드 스킬(Hard Skill)이라고 할 수 있다.

 

우리가 혼자서 일한다고 하면 이 하드 스킬만 키우면 문제 없다. 하지만, 우리가 여러 사람들과 일하게 되면 여러가지 다른 기술이 필요해 진다. 즉, 사회 생활을 하는데 도움이 되는 자본과 기술이 필요하다고 한다. 좀 더 구체적으로 이야기 하면 커뮤니케이션과 협업 능력과 같은 소프트 스킬(Soft Skill)이 중요하다. 숙련된 프로그래머/개발자들에게 이야기 들어 보면 이러한 소프트 스킬을 높이는 것도 강조하는 사람이 많다는 것을 알게 된다.

 

이 부분은 뒤에서 문제를 해결하는데 기본이 되는 것이라고 할 수 있다.

협력을 통한 추상화(Collaborative Abstraction)

대니얼 슈와르츠[2]의 연구에서는 한 명이 문제를 푸는 것 보다 두 사람이 문제를 푸는 차이에 대해서 설명하면서 두 사람이 문제를 푸는 경우가 문제 해결에서 추상화를 통해서 새로운 것을 발견하도록 도와 준다고 한다. 이는 둘이서 협력(Pair-work)하면서 다른 시각(perspective)를 받아 들이고, 이를 연결하기 위한 추상화 필요하다고 설명한다.

 

이러한 추상화는 단순히 서로를 이해하게 하기 위한 것 뿐 아니라 문제를 바라 보는 단계를 높인다. [1]에서 언급하듯이 전산학의 소프트웨어 공학나 많은 학문이 그렇듯이 이 추상화를 거쳐서 발전하게 되었다. 그러므로, 우리는 이러한 추상화를 더욱 일어나게 하기 위해서 협업을 해야 한다. 

전문가와 일하는 방법 (How to bring experts)

우리가 특정 분야의 문제를 해결하려면 전문가를 데리고 하는 것이 유리할 것이라는 것은 예측하기 쉽다. 하지만, 여기에는 함정이 있다. 울리의 연구[3]를 보면 전문가와 일하되, 협력적으로 조율(Coordination)하고 통합(Integrate)하라고 가이드 한다. 

 

그의 연구에서는 전문가 혹은 비전문가 팀이 협업을 하는지 하지 않는지를 나누어 비교 연구하였다. 즉, 다음과 같이 그룹을 나누었다.

1. 전문가 협업 개입

2. 전문가 비협업 개입

3. 비전문가 협업 개입

4. 비전문가 비협업 개입

 

어느 팀의 성과가 가장 좋았을까? 그렇다 전문가 협업이 가장 좋았다. 그렇다면, 꼴지팀은 어디였을까? 전문가 비협업이었다는 것이 매우 흥미롭다. [1]에서는 전문가를 데리고 오더라도, 정보를 공유하고 협력을 잘하기 위한 명시적인 도움이 필요하고 소셜 스킬이 뛰어난 제너럴리스트가 있으면 도움이 된다고 조언한다.

 

참고 문헌

[1] 김창준, "함께 자라기- 애자일로 가는 길", 인사이트 · 2018년

[2] D. L. Schwartz, "The emergence of abstract representations in dyad problem solving", The journal of the learning sciences, 1995

[3] A. W. Woolley, et al. "Bringing in the experts: How team composition and collaborative planning jointly shape analytic effectiveness." Small Group Research 39.3 (2008): 352-371.

1만 시간의 재발견[1]으로 알려진 안데르스 에릭슨은 의도적인 수련(Deliberate Practice)으로도 알려져 있다. 자신의 전문성을 키우기 위해 의도적으로 따로 연습하는 방법이라고 볼 수 있다. 개발자 혹은 자신의 전문성을 키우고 싶은 사람으로서 수련하는 방법의 좋은 예로 김창준님의 Facebook 포스트[2]를 보고, 조금 더 추상화 부분을 정리해 보았다. 그리고, 최근 그릿[3]을 읽으면서 알게 된 부분도 같이 붙여 메타인지를 해보자.

 

김창준님개발자의 의도적 수련 활동:

 
관찰하고/책 읽고/비디오 보고,  시도하기: 매우 일반적일 수 있지만 시도하는 것은 조금 더 발전된 부분이다.
* 새로운 도구, 기술, 코드, 기법을 시도해 보고 그 결과를 관찰, 분석해 보기
* 개발 관련된 저널과 잡지, 책을 읽기, 개발 관련해 인터넷을 훑어보기, 관련된 비디오를 보기 등
* 개발 관련 세미나, 워크숍, 교육과정, 컨퍼런스 등에 참석하기
* 다른 동료 혹은 회사 밖의 사람의 코드나 작업물를 구경하거나, 다른 동료(개발자 외에도 QA 담당자라든지)가 일하는 방식을 주의 깊게 관찰해서 새로운 아이디어를 얻기
피드백 찾기(Feedback-seeking): 피드백을 받는 것은 쉽지 않다. 그래서, 그 부분을 찾고 다르게 일해 본다.
* (회사 내외의) 다른 개발자나 도메인 전문가의 의견을 묻기, 남에게 배우기 위해 네트워킹하기, 새로운 도구, 기술 등에 대해 동료와 이야기하기
* 나의 고객(내게 일을 주는 사람 -- 기획자, 운영자, 다른 개발자 등)에게 다가가서 피드백을 달라고 하기, 그 고객들의 니즈에 대해 묻기 등
 
페어 워킹: 다른 사람과 함께 할 것을 찾아 보거나 같이 하면서 배운다. 
* 어디에 개선이 필요한지 다른 직원들과 브레인스토밍 하기
* 사석에서 친구랑, 혹은 배우자나 다른 사람과 개발 일에 대해 이야기하며 새 아이디어를 얻기
* 다른 사람의 업무에 대해 배우기 위해 그 사람을 도와주기
 
회고: 자신의 상태를 점검해 보고 새롭게 해본다.
* 현재 코드의 상태를 점검해서 어디가 장차 문제가 될 수 있는지 확인하기, 코드 품질을 확인해서 개선할 방법을 찾기 등
* 내가 조금전, 오늘 혹은 이번주에 했던 일들을 복기하며 반성해 보고 실수한 것은 무엇인지, 다음에는 어떻게 하면 좋을지 생각하고, 다음을 위한 행동 계획 짜기
 
의도적 수련: 진정한 의도적 수련으로 보인다. 많은 사람들이 하지 못하는 부분이다.
* 이미 개발한 프로그램을 더 잘 만들 요량으로 다른 방법으로 처음부터 다시 개발해 보기
* 이미 개발했고, 기능상 문제가 없지만 리팩터링 등을 통해 코드 구조를 더 개선하거나, 성능상 문제가 없으나 자신만의 더 나은 성능기준을 목표로 개선하기
* 반복되는 작업을 자동화해서 거기에 드는 시간과 노력, 실수여지를 줄이기
 

Grit의 내용

그릿[3]에서는 최고가 되고 싶으면 '의식적인 연습(deliberate practice)' 수천, 수만 시간동안 하면 된다. 그러면서, 전문가들의 연습 방법에 대해 다음과 같이 설명하고 있다.

  1. 도전적인 목표를 설정하고 전체 기술 중에서 아주 일부분에 집중한다. 이미 잘하는 부분 보다는 뚜렷한 약점을 개선하려고 노력한다. 아직 도달하지 못한 과제에 도전하는 것이다.
  2. 도전적인 목표 설정 뒤에는 목표에 도달하기 위해 온전히 집중하고 비상한 노력을 한다. 음악가 같은 경우는 혼자 연습하는 시간이 다른 음악가와 함께 연주하는 시간보다 많다.
  3. 가능한 빠른 피드백을 받고 싶어 한다. 부정적인 내용이 많다. 자신이 잘한 부분 보다 틀린 부분에 관심이 많은 것이다.

이 내용을 조금 더 구체화한 것이 김창준님의 방법이라고 할 수 있겠다.

 

결론은?

앞에서 이야기 한것 처럼 그릿에서 의도적 수련에 대해 정리하고 있다. 개발자의 입장에서는 김창준님의 구체적인 수련 방법을 참고하면 큰 도움이 될 수 있다. 다른 업무를 한다면? 추상적인 것을 통해서 자신의 업무를 대입해보는 것도 좋겠다.

 

 

참고 문헌

[1] 안데르스 에릭슨, "1만 시간의 재발견" 노력은 왜 우리를 배신하는가

[2] 김창준, "개발자의 의도적 수련," https://www.facebook.com/cjunekim/posts/5465539236807932

[3] 앤절라 더크워스, "그릿 GRIT", 비즈니스북스, 2016년 10월

'Technical Leadership' 카테고리의 다른 글

협업적 문제 해결 방법 - 함께 자라기  (0) 2023.07.10
살리고 글쓰기  (4) 2023.03.12
책 읽기: 효과와 효율  (2) 2023.03.05
다니엘 핑크: 후회의 재발견  (0) 2023.02.25
ChatGPT에 대한 짧은 생각  (0) 2023.02.16

"살리고 글쓰기" AC2 과정을 들으면서 알게된 글쓰기 방법으로 기존에 내가 글을 쓰던 방법과는 상당히 다른 부분이 있다. 내가 사용하던 예전 글쓰기는 기존 책의 구조와 비슷하게 개론에서 시작하여 각론으로 나아가는 글쓰기 방법이었다. 하지만 살리고 글쓰기는 애자일하게 글을 쓰는 방식으로 반복적(Iterative)으로 그리고 생성적으로 글을 쓴다.

 

예전의 방식이라면 어떤 주제를 적을 것인지 생각하고 이야기할 생각의 가지들을 만들어 부분들을 채워 갔을 것이다. , 내가 이야기하려는 주제가 생각이 나더라도 전체적인 구조와 각론이 정해질 때까지 정리되지 않으면 글을 쓰기 시작하지 못하고 시간이 많이 걸렸다. 살리고 글쓰기를 , 장점은 글감을 적고, 문장을 만들고, 거기서 글을 만들어 간다. 이렇게 반복적으로 글을 쓰는 것이다. 이렇게 작게 시작하므로 언제나, 어디서나, 낮은 에너지로 글을 있다. 글도, 핸드폰과과 랩탑 컴퓨터를 이용하여 썼다. 책상에서 버스에서 거실의 소파에서 반복적으로 글을 썼다.

 

살리고 글쓰기는 반복적으로 글을 쓰기도 하지만, 생성적(generative)으로 글을 쓴다. 앞에서 언급한 것과 같이 우선 하고 싶은 말에서 시작한다. , 글감이 있다면 글을 쓰기를 시작할 있다. 단어에서 문장이 나오고, 거기에서 센터를 찾아 자연스럽게 나무가 가지를 뻗듯이 글을 펼쳐보는 것처럼 발전 시킨다. 이를 반복적으로 적용하여 글을 쓰면서, 새롭게 떠오르는 센터를 기준으로 계속 글을 써간다. 그러면서, 글이 어떻게 전체적으로 변하고 있는지 살피면서 계속해서 글을 써간다. 인공물이 아닌 자연에서 관찰되는 자연물과 같이 만들어 지도록 생성적으로 글을 쓴다. 글은 "살리고 글쓰기" 배우고 배운 내용을 정리하고 연습하는 관점에서 발견한 센터들을 기준으로 반복적으로 생성적으로 글을 것이다.

 

나는 예전의 방법으로 글의 구조 잡는데 에너지를 쓰고 나서, 정작 글쓰기를 시작하지 못하는 경우가 너무 많았다. 살리고 글쓰기와 비교하여, 기존의 글쓰기는 글감이 있다고 하더라도 예상하는 글의 뼈대가 보일 때까지 충분한 고민을 하여야 하기 때문이다.  또한, 이러한 뼈대를 위한 구조나 로직을 먼저 생각하다 보면,  쓰려고 하는 글의 중요한 부분의 발견을 놓칠 수도 있다. 살리고 글쓰기의 경우는 이와 상반된 장점이 있다. 글을 , 적은 에너지로 시작할 있다. 또한, 글을 쓰면서 전체와 센터를 고민하게 되므로 새로운 발견, 창발적인 주제를 발견할 수도 있다. 이렇게 낮은 에너지 진입 장벽과 새로운 주제 발견이 글감과 관련된 글을 확률을 높여 준다.

 

살리고 글쓰기를 다른 장점은 글감을 적고 시작하고, 거기서 자연스럽게 발전되어 나가는 것이다. , 여러 가지 방법을 사용할 있을 것으로 생각이 들었다. 하나는 생각의 흐름데로 써본다는 것이다. 말하기에 대비하여 글쓰기의 장점은 뱉어 생각을 이리 저리 정리하여 다듬을 있다는 것이다. 글의 살을 붙이는 다른 여러 가지 방법이 있다. 글감에 대해서 시간 순으로 써본다거나, 생각하는 주제 주변을 탐색하거나, 글감의 구조에 대해 살펴 있다. 애자일적으로 접근하는 방법을 생각해 보면, 글감에 대해서 추상과 구체를 왔다갔다하는 방법 또한 좋은 방법이다. , 추상적으로 설명하다가, 나의 경험과 같은 , 구체로 들어가면 된다. 이렇게 하여 글을 적다 보면 하고 싶은 글감에 살이 많이 붙는 것을 느낄 있다.

 

물론 기존 글쓰기 방법을 살리고 글쓰기에서 사용하는 방법을 배재할 필요까지는 없어 보인다. 기존 글쓰기에서 좋은 점들을 적용하는 것도 글을 좋게 만드는 좋은 방법들이다. 살리기 글쓰기를 알려주신 김창준님이 설명해 주신 내용 몇가지를 살펴 보자. 우선 해외 대학에서 글쓰기에 대해 가르치는 하나로 아키데믹 라이팅(Academic Writing) 있다. 여기에도 여러 가지가 있지만, 창준님이 예로 들어 주신 것은 글을 문단(paragraph) 구조화하는 것이다. 문단을 나누어 글을 쓰면, 글이 단정하고 명료해 진다. 다른 하나는 글을 쓰고 소리 내어 읽어 보는 것이다. 예전에 유시민 작가의 글쓰기에 대한 책을 적이 있다. 여기에도 똑같이 언급되었는데, 글도 말이기 때문에 소리내어 읽어 보면서 정리하면 좋아 진다. 이렇듯 기존의 글쓰기에 좋은 방법도 살리고 글쓰기에 적용할 있다.

 

살리고 글쓰기를 알게 되고 얻은 가장 것은 생각을 글로 조금 쉽게 펼쳐 나갈 있겠구나 하는 것이다. 하지만, 살리고 글쓰기의 방법을 배웠다고 바로 몸에 익혀지는 것은 아닐 것이다. 이제 시작이고, 수련이 필요한 것이다. 연습을 하면서, 빼먹지 않았으면 하는 것은 피드백을 받는 것일 것이다. , 이제 시작이다.

책을 읽는 다면 처음 부터 끝까지 눈으로 읽고 이해하는 것이 일반적이라고 생각 있다. 하지만, 공부나 연구를 업으로 하다 보니, 여러 다양한 방법들을 알게 되었. 다른 많은 일들이 그렇듯이 이 것도 효과와 효율에 대해 이야기 해볼 수 있겠다. 효과와 효율, 비슷하면서도 다른 말이다. 효과는 어떤 일을 하고 원하는 "목표" 얻게 되는 것을 의미하고 효율은 어떤 일을 , "비용" 얼마나 되느냐라고  있다. 나름 내가 알고 있는 방법이 있다고 자부했지만, 최근에 알게 방법을 포함하여 내가 사용했던 방법들을 포함하여 정리해 보자.

 

최근에 AC2를 통해 알게 된 효과적으로 읽는 방법은 내가 학위를 논문을 빠르게 읽는 방법과 유사했다. 조건은 분야를 알아서 중요한 부분만 읽는 것과 비슷했다. 선행 과정으로 필요한 것은 글의 전체 구조를 보고 중요한 부분 찾아 후에 부분을 파악하는 것이다. 많은 논문은 구조가 비슷해서 것이 쉽게 적용된다. 책의 경우는 목차를 보고 어떤 부분을 읽을 것인지 결정을 한다. 책을 읽으며 내용을 파악할 때에도 가정(가추법/귀추법 abduction) 하고 확인하여 읽는 부분도 최소화 하는 것이 필요하다. 또한, 마인드풀(mindful)하게 책을 읽어야 한다. , 내가 책의 내용을 어떻게 사용할 것인지 계속 생각하면서 읽는 것이 효과를 높이는 방법이다.

 

논문을 읽는 경우도 내가 저작할 활용하기 위해서 논문이 다루는 문제가 무엇인지 그리고 어떤 새로운 방법으로 풀었는지를 나의 언어로 작성을 해두어야 했다. 논문을 읽을 수록 점점 읽기 쉬워졌는데, 하루에 10편도 넘게 읽을 있는 경우도 생겼다. 논문을 읽을 , 지도 교수는 사람이 기존과 다른 "새로운 아이디어(novel idea)" 무엇인지 것을 어떻게 증명해 보였는지 " 문장"으로 정리할 것을 요구했다. 처음에는 부분을 논문에서 발췌했더니  "재구성(rephrase)"라도 해서 나의 말로 바꾸어야 한다고 강조하셨다. 부분이 되기 시작하면서 논문 읽는 능력이 늘어 나기 시작하고, 기존 알고 있던 다른 연구와 유사한 경우는 정말 30분도 안되서 정리가 되곤 했다. 그리고는 그 것들이 내가 쓰는 논문의 참고 문헌에 기반이 되기도 했다.

 

효율에 대해서 조금 생각해 보면, 책을 읽을 사용하는 에너지에 대해 생각해 있다언제인가 책이 많아져 정리해야 , 책을 스캔하여 있다는 것이 가능하다는 것을 알게 되었다. 또한 이북도 서점에 많이 생기기 시작했다. 또한, 어느 유투버가 책을 스캔하는 것에 대해서도 설명하는 것을 후에 책을 스캔하고 혹은 이북으로 책을 구매 후에 책을 TTS(Text To Speech) 이용해서 듣는 것을 시도해보기 시작했다. 사실은 오디오북을 시작하려고 했지만, 오디오북을 구할 있는 한계가 명확했다. 특히, 우리 나라 책에서는 그랬다. 이렇게 책을 스캔해서 읽는 부분은 나에게 혁명적이었다. 내가 운전을 하면서 혹은 운동을 하면서 들어도 라디오나 음악을 듣는 수준의 에너지로 책을 읽을 있었다. 나는 번역한 책을 퇴고 때도 들어서 3 정도 들었다. 앉아서 번역본을 보면서 듣기도 하고, 차를 타고 다니면서 듣기도 하였다.

 

그렇다면, 효과와 효율은 서로 상반되기만 한 것일까? 학위를 하려면 정말 많은 논문을 읽어야 한다. 하지만, 처음에는 어느 분야의 초보자가 그렇듯이 에너지가 많이 들고 어려움이 많다. 나도 논문 한편에 일주일, 혹은 이주일을 읽어도 어려웠다.  후에도 어느 정도 이력이 붙었는데도 어려운 부분이 있었는데, 이는 논문의 난이도가 매우 높을 때이다. 나도  편의 논문은 제출한 상황이었음에도 이런 경험이 있었는데, 참고할 논문[1] 내용이 수학적인 것이 너무 많고 난이도가 높아서 이해도가 낮은 경우였다.  때에  논문을 여러 번 필사하였다. 처음 읽을 때에는 내가 필요로 하다는 생각이 들었지만 내용이  이해가 되지 않았다. 그래서,   정도 필사를 했고, 전반적인 흐름은 이해하지만, 여전히 이해가 되지 않은 부분도 있었다. 그러고 나서, 몇 번   사하고 나서 논문에서 여기서 이야기 하는 수식의 유도가 이해가 되기 시작했다. 최종에는 내가 필요로 하는 수식을 추출을 하였고  것을 활용하여 내 졸업 요건에 필요한 주요 저널 논문의 작성이 가능했다. , 나의 에너지를 최대한 사용하여 목표에 도달하는 방법이었다. 효과와 효율을 고민하여 나의 최대한을 끌어 낸 경우였다고 생각된다.

 

앞에서 이야기 듯이 책을 읽을 , 목적과 비용에 대해서 생각하면서 읽는 것이 필요하다. 그렇게 해야 효과적으로 효율적으로 있다는 부분이다. 목적의 경우, 어떻게 활용할 것인가 글을 쓰기 위한 것인가 아니면 학습을 위해 나의 행동에 어떻게 연결 것인가 고민하면서 읽는 것이 중요하다. 정확한 목표 없이 흥미를 위해서도 읽을 있다. 하지만, 목표를 분명히 하지 않으면 효과가 떨어질 있다. 효율 측면에서는 에너지를 많이 넣어야 하는가 적게 넣을 것인가도 고민해 부분이다. 마치 산책을 하듯이 힘을 최대한 빼고 읽어야 하는 상황이 있을 수도 있고, 남극 탐험을 하듯 이 내가 가야 하는 목표를 향해 나의 에너지를  써야 한다면 어떻게 해야  것인가도 고민할  있는 것이다.

 

참조 문헌

[1] L. Xu and J. Heizer, "Media streaming via TFRC: An analytical study of the impact of TFRC on user-perceived media quality", Proceedings of IEEE INFOCOM, Jan. 2006, http://personal.ie.cuhk.edu.hk/~dmchiu/reading/infocom06_tfrc.pdf

다니엘 핑크의 "후회의 재발견", 원제는 "Power of Regret"[1]. 신철님 진원님께서 추천해 주셨던 것으로 기억하여 바로 주문하여 책을 받아서, Reading less를 시도해 보았다.

우리는 우리 의지대로 될 것이라는 "자유 의지"와 모든 일에는 이유가 있다는 "환경"의 교차점에 살고 있다고 저자는 이야기 한다. 여기서 불행이 발생했을 때, 거기서 부터 구원의 시퀀스(redemption sequence)로 가는지 아니면 다른 방향으로 오염 시퀀스(contamination sequence)가는지 이 두 가지 경우가 서로 우위를 차지하기 위해서 경합을 벌인다고 한다. 마치 디즈니의 인사이드 아웃에서 예전의 슬픈 기억도 가족들과 이겨내는 시퀀스가 연결될 것인지 아니면 거기에 머무를 것인지 바뀌기도 하는 것도 이와 관련되어 보인다.

저자는 또한, 스포츠에서 2위 선수의 내가 조금 더 "했더라면" 1위 했을 텐데라는 입장과 3위 선수가 "적어도" 4위를 하지 않아 메달을 땄다라는 것에서 누가 더 만족하고 있는가에 대한 차이도 이야기 한다. 그러면서, 감정을 바라보는 두 관점에 대해서 이야기 하는데, "무시해야 할 것"과 "중요한 것"이라는 입장에 대해서도 설명한다. 무시할 것이라는 입장은 감정을 묻어 두면 결국 직면해야 할 순간을 유예하는 것 뿐이라고 이야기 한다. 또한, "중요한 것"이라는 것은 감정이 우리 존재의 본질이라고 생각하고 "항상 자신의 감정을 믿어라"라고 이야기 한다. 나 예전에는 전자의 입장이었지만 후자의 입장을 가지고 있다.

저자는 책에서 위에 이야기 한 두 방법 이외에 새로운 접근 방법을 제안 한다. 그 감정에 대해서 "생각"을 보태어 "행동"으로 보다 나은 향샹된 성과와 보다 깊은 의미를 찾도록 하는 다른 접근 방법을 제시한다. 이것을 후회 최적화 프레임워크라고 부르고 있다.

 

참고

[1] 다니엘 핑크, "후회의 재발견 - 더 나은 나를 만드는, 가장 불쾌한 감정의 힘에 대하여", 김명철 (옮긴이) 한국경제신문

나는 ChatGPT 사용자로서 내가 담당하는 제품/기능에 대해서 물어보기도 하고 테트리스 프로그램을 짜달라는 것과 같은 간단한 실험을 해보았다. 얼마전 페친과 뉴스피드에서 ChatGPT 대해 의견 나눔이 있었다. 스탠스의 차이가 댓글에 대댓글을 달며 한참을 이야기를 나눴다. 여기서는 표절과 사실 왜곡에 대한 조금 정리하여 적어 본다. 우선, 나는 ChatGPT 세상을 바꿀 변곡점이라 믿고 있고, 나도 내가 이를 사용하길 바라고 있다는 것을 무엇 보다도 먼저 이야기 한다.

 

아일랜드에서 학위를 , 대학원 연구원(Postgrad Researcher) 자격이었다. 그래서, 과정 수업은 거의 없고 연구 위주로 진행이 되었다. 그래도, 학교에서 가르쳐 몇가지 하나가 표절(Plagiarism)이었다. 시작하자 마자 2시간이었난지 반나절인지 영어 수업이라며 가르쳤다. 한마디로 다른 사람이 저작물에 있는 내용을 논문에 적으려면 참고 문헌(reference) 반드시 표기하라는 것이다. 또한, 글을 그대로 적지 말고 말로 바꾸어서 적으라고 했다. 지도교수님도 부분을 여러 강조해서 이야기 했다.

 

이런 측면에서 ChatGPT 빠르게 받아 들이는 학생들을 가르쳐야 하는 학교나 연구를 수행하는 학계가 먼저 대응하고 있는 것이 보인다. 세계 의학 편집자 협회(WAME)ChatGPT와 챗봇에 대한 네 가지 권장사항을 발표했다[1]. 여러 가지가 있지만, 우선 눈에 띄는 것은 1) "챗봇은 저자가 될 수 없다" 2) "챗봇이 생성한 자료를 포함한 모든 출처에 대한 책임은 저자에게 있다"라는 부분이다. , 우리가 ChatGPT 생성한 자료가 아무리 좋은 내용을 포함하고 있다고 하더라도, 내가 결과를 저작물에 쓰려면 내용에 대한 출처를 찾아야 하는 수고가 필요하다는 것이다.

 

ChatGPT 대한 여러 이야기를 보다고 알게 ChatGPT 특징 다른 하나가 사실 왜곡(Hallucination)이다. 용어를 "적당히 생성" 혹은 "환각적 지식"이라고 번역하시는 분도 보았다. ChatGPT 생성하는 자료의 사실 왜곡율이 15~20% 정도 된다고 한다[2]. 물론 부분에 대해서 못되었다고 지적하면서 사용하는 경우도 많이 보고 있다. 또한, ChatGPT 다음 버전들과 비슷한 제품들이 나올 경우 발생할 있는 오염에 대해서도 이야기하는 글도 나오고 있다[3]. 물론, 부분에 대한 고민은 연구자들의 몫일게다. 우리는 ChatGPT가 틀릴 수도 있다는 것을 알고 꼭 다시 확인하는 것이 필요하다고 생각한다.

 

그렇다면, 우리는 ChatGPT 쓰면 안되는 것인가? 나는 아니라고 생각한다. 도리어 어떻게 해야 활용할 것인가? 그리고 무엇이 개선되어야 하는가를 고민하는 것이 중요하다고 생각한다. 사용하기 위해서 고민하는 사람들이 프람프트 엔지니어링[4][5] 이야기 하고 있다. 부분은 나도 탐색이 필요한 부분이다.

 

그리고, 근본적인 질문으로 우리는 기계를 믿을 것인가? 사람을 믿을 것인가? 고민해야 한다고 생각한다. 질문은 결국 선택의 문제가 것이다. 나는 개발자/엔지니어로서 기계는 실수하지 않는 것을 알고 있다. 하지만, 또한 잊지 않는 것이 있다. 바로, 기계를 만든 것은 사람이라는 것이다. 기계에 문제가 있다면 의도하였던 의도하지 않았던 많은 부분 사람이 관여한 것이라는 , 그리고 기계를 활용하거나 악용하는 것도 사람이라는 것이다. 그래서, 나는 그리고 우리는 것을 알고 판단하고 선택해야 것이라고 믿는다.

 

 

참고

[1] http://www.docdocdoc.co.kr/news/articleView.html?idxno=3002315

[2] https://www.datanami.com/2023/01/17/hallucinations-plagiarism-and-chatgpt/

[3] https://twitter.com/191cf54fad/status/1624953860531060736?s=46&t=-CjiWmVTqVXP06ygy0eXwA&fbclid=IwAR11lbIsRfs3yKpPncUvT3mWxlEy1QObCOJRPberGb9UgVXvtY6Ck3j6pJo

[4]https://github.com/dair-ai/Prompt-Engineering-Guide?fbclid=IwAR34DHEs5d3bZc33gP-sCnrLgm5IDxKP0BYhyMnSQH1z7C93rQY-9_qQ7KU&mibextid=Zxz2cZ

[5]https://learnprompting.org/docs/intro

 

복잡계 3인방 오프라인 모임을 가졌다. 무엇보다도 린다 라이징의 이야기가 나와서 반가웠다. 그러고는, YouTube에서 다니엘 커너만의 "생각에 대한 생각(Thinking, fast and slow)"에 대한 그녀의 발표 [1, 2]를 들었다. 무엇보다도 그녀의 문제 해결 접근법이 매우 인상적이었다.

 

1. 문제를 정의한다. 크게 이야기 해보고, 종이 위에 써본다.

2. 데이터가 충분한가?
3. 해결하기 위해 최소한의 시간을 투자한다. (1번과 2번의 내용을 조정하기 위해서 사용하기도 한다) 10분이 넘지 않게 한다.

4. 적절한 해결 방안이 나오지 않는다면, 그 일에서 손을 놓는다. 아마도 다음과 같은 일을 할 수도 있다.

    - 다른 작업을 한다.

    - 서거나, 앉거나, 스트레칭을 한다.

    - 짧은 휴식(bio break)을 취한다.

    - 긴 휴식을 취한다. (운동, 식사, 다른 용무, 수면)
5. 인사이트가 없다면, 위 단계를 반복한다.
6. 시스템 1은 항상 옳지는 않다. 시스템 2가 최종 결정을 하게 한다.

 

아마도 이미 많은 사람들이 사용하는 방법일 것이다. 특히, 4번의 경우는 이미 알려진 아이디어를 찾아내는 방법이라 할 수 있다. 그녀의 발표에도 있는 스티브 잡스의 "Let's go for a walk"라는 인용에서도 대가들의 이 도구 사용에 대해서 슬쩍 살펴 볼 수 있을 것이다. 송 나라 시대의 구양수의 시상을 생각하는 세 가지 장소인, 침상, 마상, 측상과 연결 되기도 한다. 누군가가 놀리고 웃을지도 모르지만, 어려운 문제를 만나게 되면 나도 사용하던 방법들이기도 하다.

 

참고

[1] Linda Rising, "Thinking, fast and slow" slides, https://agile2018.sched.com/event/EU9Z/thinking-fast-and-slow-so-what-can-we-do-about-it-linda-rising

[2] GOTO conference, Linda Rising, "Thinking, fast and slow", https://youtu.be/XjbTLIqnq-o

[3] Microsoft Research, Daniel Kanhmen, "Thinking, fast and slow", https://youtu.be/C-4MM8sd3BE

 

 

 

'Technical Leadership' 카테고리의 다른 글

다니엘 핑크: 후회의 재발견  (0) 2023.02.25
ChatGPT에 대한 짧은 생각  (0) 2023.02.16
소프트웨어 엔지니어를 위한 책 추천  (3) 2022.04.15
로버트 마틴 vs. 마틴 파울러  (0) 2022.03.15
나의 책장.  (0) 2021.12.12

테크니컬 리더십(Technical Leadership) 

. 실용주의 프로그래머

. 피플웨어

. 테크니컬 리더

. 조엘 온 소프트웨어

. 스트브 워즈니악(iWoz)

. iCon

. 리눅스 그냥 재미로 (Just for Fun)

. 시장과 성당

. Geeks

. 스티브 잡스

 

애자일: 소프트웨어 장인 정신

. 소프트웨어 장인정신

. Clean Code

. Clean Coder

 

애자일: 소프트웨어 개발

. Extreme Programming

. Kanban

. Scrum

. 클린 소프트웨어(Agile Software Development, Principles, Patterns, and Practices)

 

애자일: 관련 이론 및 이야기

. 조직의 재창조

. 팀이 빠지기 쉬운 5가지 함정(신규 번역서: 팀워크의 부활)

. 커넥티드 컴퍼니

. ADAPT

. 린 스타트업

. 린 싱킹

. 디자인 싱킹

. 디자인 싱킹 바이블

. 드림팀의 악몽: 애자일로 뒤집기

 

관리자

. 매니지먼트 3.0

. 유능한 관리자

. 90일 안에 장악하라

. 존 도어 OKR

. 개발 7년차, 매니저 1년차

. 설득하지 말고, 납득하게 하라

 

동기 부여

. Grit

. 열정과 몰입의 방법

. Drive

 

소프트웨어 아키텍처 & 디자인

. 적정 소프트웨어 아키텍처

. Clean Architecture

. 소프트웨어 아키텍처 101

. 소프트웨어 아키텍처 이론과 실제

. 개발자에서 아키텍트로

. 디자인 패턴 (GoF)

. 해드 퍼스트 디자인 패턴

. 리팩터링

. 레거시 코드 활용 전략

 

복잡계(Complex System)

. 전체를 보는 방법

. 링크

. 스케일

. 성공의 공식 포뮬러

. 신호와 소음

. 슈퍼 예측

. 결정

. Cynefin (커네빈: 번역서 아직 없음)

 

'Technical Leadership' 카테고리의 다른 글

ChatGPT에 대한 짧은 생각  (0) 2023.02.16
생각에 대한 생각(Thinking, fast and slow)  (4) 2022.07.03
로버트 마틴 vs. 마틴 파울러  (0) 2022.03.15
나의 책장.  (0) 2021.12.12
전설의 리더, 보  (0) 2020.05.27

공통점

로버트 마틴(이후 밥)은 밥 아저씨라는 별명으로 불리며 "Clearn Code"[1]로 유명하다. 또한 마틴 파울러(이후 마틴) 하면 "Refactoring"[2]으로 유명하다. 이 두 사람은 많은 공통점을 가지고 있다. 앞에서 말한데로, 소프트웨어 개발자가 공부를 하다 보면 알게 되는 유명한 책의 저자이다.

둘다 애자일리스트이다. 즉, 애자일 소프트웨어 개발을 지지하는 사람들이다. 이 두 사람은 애자일 소프트웨어 개발 선언(Manifesto for Agile Software Development)[3], 소위 애자일 선언문(Agile Manifesto)에 서명한 17명에 포함되어 있다. 두 사람은 모두 애자일 소프트웨어 개발 중에서 의 가장 엔지니어링 실천법(engineering practices)에 집중하는 익스트림 프로그래밍(Extreme Programming, XP)의 추종자이다.

밥의 블로그인 The Clean Code Blog의 글[4]를 보면 그는 Extreme Programming(XP)을 지지하는 것을 알 수 있다. 그의 글이 2013년도 이고, 글에서도 15년 전 이야기라고 언급 하고 있으니 1998년도 즈음의 이야기를 회고(reflection)하면서 XP를 제외한 Scrum, Kanban 그리고 Lean에서 일어나고 있는 일들을 비판하고 있다. 그는 마틴의 축 늘어진 스크럼(Flaccid Scrum)[5]이라는 비판에 동의 하고 있다. 특히, 밥은 XP의 12개의 실천법 중에서 다른 애자일 신천법은 단 하나, 플래닝 게임(Planning Game, 소위 반복 Iteration)만을 도입하고 있다고 비판한다. 그는, XP를 넘어서 소프트웨어 장인 선언[6]을 지지하고 있다. 특히, 그의 블로그의 첫번 째 글[7]을 보면, "Clean Code"가 바로 이 소프트웨어 장인 정신을 실천하기 위한 것임을 알 수 있고, 그의 유명한 책[1]도 서문에서 부터 그 내용을 다루고 있다.

마틴의 웹페이지(martinfolwer.com)의 글[8]에서 알 수 있듯이, 그도 XP 추종자이다. 그는 XP와 관련된 책의 주요 저자인 켄트 벡(Kent Beck)과 함께 일하였다. 그 때, 켄트 벡에게서 리팩터링을 배우면서, 그의 유명한 책[2]으로 만들어 낸 것이다. 그의 웹페이지에는 주요 관심사로 보이는 항목들이 있다. 첫 번째가 리팩터링이고 두 번째가 애자일[9]이다. 여기서는 바로 그가 애자일에서 중요하다고 생각하는 부분이 드러난다.

"Agile Development
is adaptive rather than predictive
is people-oriented rather than process-oriented"

애자일이 예측(predictive)보다는 대응(adpative)하고, 프로세스에 기반(process-oriented)을 두기 보다는 사람에 기반(people-oriented)하다는 것이다. 특히, 나의 개인적인 경험으로도 후자가 매우 중요하다는 생각이 든다. 처음 커리어를 시작했을 때, Software Engineering을 전공하던 선배의 말이 아직도 기억이 난다. "설계 (문서)를 아주 꼼꼼하게(detail)하게 (작성)하면 코딩은 그냥 되는 거야". 이 말은 전형적인 프로세스 위주의 말이었다. 즉, 프로세스에서 필요로 하는 설계 문서를 만드는 것이었다. 내가 없어도 다른 사람이 프로세스의 산출물(artifact)인 그 문서가 중요한 것이었다. 거기에 사람은 없었다. 즉, 대체 가능한 것이었다.

차이점

밥과 마틴의 차이점에 대해 [10]에서 이야기를 하는 부분이 매우 인상적이다. 글을 쓴 사람이 Anonymous로 누가 작성한 것인지 모르지만, 매우 공감이 가는 부분이다. 한마디로 밥은 순수주의자(Purist) 그리고 마틴은 실용주의자(Progmatist)라고 한다. 밥이 정리한 OOP의 원칙인 SOLID 혹은 관심사 분리(seperation of concerns)와 같은 실천을 바라 보는 관점이 다르다.

밥은 실천이 원칙와 떨어져서는 안된다고 한다. 이러한 원칙은 법이다. 이를 지켜야만 한다는 것이다. 이것이 한마디로 소프트웨어 장인이다. 밥은 이러한 입장에서 마틴을 비판[11]하기도 한다.

마틴은 실천도 중요하지만, 원칙 혹은 가치가 더 중요하다고 한다. 이러한 실천은 모범 사례(Best Practice)이지 이해 관계자(고객)이 요구하는 실제 문제를 해결이 더 중요하다는 입장이다.

사실 두 사람의 블로그 및 웹페이지를 보면 애자일을 보는 관점에서도 차이가 난다. XP 추종자였던 둘은 이 관점에서도 달라진다. 밥은 애자일 선언문을 넘어서 더 소프트웨어 장인으로 갔고, 마틴은 엔지니어링 기반의 XP에서 애자일 개발에서 스크럼이나 칸반과 같은 다른 분야에도 관심을 보이면서, 애자일 능숙도 모델(Agile Fluency Model)[12]을 제안하기도 했다. 그는 XP도 능숙도 측면에서 4단계 중 2번 째 단계로 이야기 하고 있다. 여기서, 3단계 이 후는 린 스타트업과 같은 비지니스 및 조직 관점에서 차이가 난다고 이야기 하고 있다.

재미있는 부분은 두 사람 모두 소프트웨어 아키텍처에 관해서도 관심을 가지고 있다. 하지만, 둘의 입장에서 보는 아키텍처는 또한 다르다. 밥은 클린 아키텍처[13]에서 도달해야 하는 아키텍처의 모습을 제안한다. 마틴은 리팩터링이 그의 전문 분야인 만큼 기존에 초기에 충분한 시간을 들여 특정 기간(Phase)에서 설계하는 계획 설계(Planned Design)과 대비하여 애자일 개발에서 점진적인 개발에서 나오는 소프트웨어 설계 혹은 아키텍처가 진화적 설계(Evolutionary Design)이라고 했다[14].

결론

초창기 애자일의 경우, 학문적으로 인정 받기는 어려웠다. 하지만, 두 사람의 말대로 애자일은 주류가 되었고, 소프트웨어 엔지니어링 분야의 학계에서도 반복적 접근, 리팩터링, 테스트 기반 개발(TDD)와 같은 XP의 엔지니어링 실천법들이 학계에서도 받아 들여 지고 있다. 그런면에서 두 사람이 기반을 두고 있는 XP는 아주 의미있는 분야가 되었다.

소프트웨어 개발을 하는 사람으로서, 밥을 목표로 할 수 있다. 하지만, 그렇다면 실재로 업무를 수행하면서 죄책감을 느낄 수 있다. 그가 말하는 것은 내가 도달하기 어려운 이상향일 수 있다. 반대로 마틴을 목표로 할 수 있다. 내가 드디어 대가가 이야기 하는 것을 적용할 수 있을 것 같다. 하지만, 여전히 고객과 이해 관계자들에게 휘둘리다 보면 내가 정말 잘하고 있는 것인가 회의가 들기도 한다.

소프트웨어 개발을 하는 사람으로서 여러 분은 이 두사람에 가까울 수도 있거 좀 더 멀 수도 있다. 하지만, 이 두 사람을 좀 더 잘 이해하고 자신이 어떤지 고민하면서 성장한다면 그 또한 충분하지 않을까?

참고자료

[1] 로버트 마틴, "Clean Code 클린 코드 애자일 소프트웨어 장인 정신", 인사이트(insight), 박재호, 이해영 역
[2] 마틴 파울러, "리팩터링 2판 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기", 한빛미디어, 개앞맵시, 남기혁 역
[3] 애자일 소프트웨어 개발 선언, https://agilemanifesto.org/iso/ko/manifesto.html
[4] Extreme Programming, a Reflection, https://blog.cleancoder.com/uncle-bob/2013/12/10/Thankyou-Kent.html
[5] Flaccid Scrum, https://martinfowler.com/bliki/FlaccidScrum.html
[6] Manifesto for Software Craftmanship, https://manifesto.softwarecraftsmanship.org/
[7] What Software Craftsmanship is about, https://blog.cleancoder.com/uncle-bob/2011/01/17/software-craftsmanship-is-about.html
[8] Extreme Programming, https://martinfowler.com/bliki/ExtremeProgramming.html
[9] Aigle Software Guide, https://martinfowler.com/agile.html
[10] Robert C. Martin vs Martin Fowler, https://social.msdn.microsoft.com/Forums/en-US/4cdf6e1c-2f9a-46ca-b457-11d588d52850/robert-c-martin-vs-martin-fowler?forum=asparchitecture
[11] The Tragedy of Craftsmanship, https://blog.cleancoder.com/uncle-bob/2018/08/28/CraftsmanshipMovement.html
[12] The Agile Fluency Model, https://martinfowler.com/articles/agileFluency.html
[13] 로버트 마틴, "클린 아키텍처 소프트웨어 구조와 설계의 원칙", 인사이트(insight), 송준이 역
[14] Is Design Dead?, https://martinfowler.com/articles/designDead.html

이사를 하니, 보이지 않던 것이 보인다. 우선 책.

 

많은 종이책을 정리했지만, 여전히 활자로 보는 것과 전자책은 달라서 옆에 두고 보는 책이 여전히 많다. 낡은 책장을 반 이상 버려, 현재는 쌓아 놓는 책이 많아 정리하게 되었다.
 
정리하면서 내 나름의 분야로 분류해 봤을 때, 2가지 분야의 책이 가장 많다. 하나는 담당 업무에 대한 책 하나는 애자일 관련이다.
 
담당 업무 관련은 소프트웨어(Language, Algorithm), 설계(Object Oriented Design, SW Architecture), 네트워크(Computer network, Mobile network) 그리고 멀티미디어(Codec, Signal processing)가 그것이다.
 
애자일 책에는 방법론(Scrum, Kanban, Lean), 이론(복잡계, 팀, 리더십, 디자인 싱킹)이 그 아래 큰 분류라고 할 수 있다.
 
위에 모습은 당연한 것 처럼 보인다. 반대로, 의외인 부분은 역사 관련 책이다. 소설으로는 '삼국지', '한제국 건국사', '파운데이션'이 보인다.또한 '스티브 잡스'(영문판도 있다), 'iCon', 'Geeks', 'Just for Fun'과 같은 Nerd들의 이야기도 책장에 꽂혀 있다. '총균쇠', '역사의 역사', 심지어 아일랜드에서 구했던 Primary School에서 사용되는 History Textbook 3권을 보니 줄을 그어가며 보았던 부분이 보인다.
 
또 다른 흥미로운 것은 글쓰기를 포함한 공부에 관한 책이 좀 있다는 것이다. 아이 공부 관련도 있었겠지만, 그 전에도 자기 개발서 처럼내가 그런 책을 사모우고 있었다는 것이 흥미롭다.
 
고등학교 때 구해 가지고 있는 초판이 1980년이고 1989년 8판 책으로 가지고 있는 '혼비 영문법', 그 이후에 구해 가지고 있는 여러 영어 공부 방법에 대한 책과 최근 동명이인 고등학교 동창의 저작인 '영어는 개소리'도 이와 연결되어 있다고 생각된다.
 
시간이 지나면, 나의 책장은 또 바뀔 텐데, 어떤 모습일까? 궁금해 진다.

+ Recent posts