한국의 마틴 파울러가 되기
작년에 했던 약속도 지킬 겸 오랫동안 생업에 밀려 머릿속으로만 다뤘던 (소프트웨어) 설계에 대한 이야기를 글로 써 보려고 합니다. 이미 요즘IT 에서 관련 글을 쓰고 있기는 하지만 정제되기 전의 거친 생각까지 모두 공유하고 싶어서 연재를 하나 개설합니다.
99년 UML에 대한 한글 자료가 거의 없을 때, 선배의 권유로 웹매니아라고 하는 사이트에 UML 인터넷 강좌를 올렸습니다. 웹매니아가 접힌 후에 그 자료는 네이버를 통해 급속히 퍼져 나가더니 지금도 구글링 하면 찾을 수 있습니다. 사실 그 강좌는 마틴 파울러가 쓴 UML distilled를 당시 거의 유일한 UML 저작 도구였던 Rose로 실습을 해 보면 만든 초보자용 튜토리얼이었죠.
이를 계기로 나중에 저는 그의 블로그(정확하게는 블리키) 번역을 하며 한글 사이트를 1, 2년 운영한 일도 있습니다. 이후에는 제가 개발뿐 아니라 기획까지 하고픈 마음에 IT컨설팅 회사에서 일하면서 마틴 파울러가 속한 소트웍스ThoughtWorks라는 회사에 대해 알게 되었고, 직업적 롤 모델로 삼으면서 <소트웍스 앤솔러지>라는 책 번역에도 참여한 일이 있죠.
지금은 경영이 본업이 되었지만 실무를 완전히 손 떼기 전에 알고 있는 내용을 기록으로 남기거나 후배들에게 전수하고 싶은 마음이 있습니다. 그걸 해 볼까 하는 마음에 친한 형한테 털어놓았더니 이렇게 말했습니다.
미쳤냐?
그 말 때문인지 아니면 5일 경영, 2일 육아의 삶 때문인지 미루고 있었는데, 켄트 벡Kent Beck이 쓴 심오하고 아름다운 글 때문에 충동적으로 시리즈에 착수합니다.
그 옛날 UML 공부할 때 추억의 용어도 떠오릅니다. PIM과 PSM 이죠. 그리고 이미지 설명으로 'Delay Introduces Inconsistency, Multiplying Complexity'라고 붙인 다음 그림은 짜릿하기까지 합니다.
ACID에서 BASE로 변하는 과정에서 'Big Data' 기술과 '분산 컴퓨팅' 등이 영향을 끼친 것을 대부분 알려진 사실입니다만, 켄트 벡의 글을 보면 결국 현실과 시스템의 가상 세계 사이의 유격(Mismatch)을 줄이기 위한 업계의 진화 과정으로 보이는 이유로 '아름답다'라고 느꼈습니다.
뒤이어 켄트 벡 오리지널 아이디어를 봅니다.
두 번째 단락부터 해설해 보겠습니다. 켄트 벡이 집요하게 강조해 온 경제성의 원칙입니다. 아마 제 글을 꾸준히 보시면 조만간 관련한 그의 아이디어를 여러 가지 관점에서 해설한 내용을 보실 수 있을 겁니다. 느슨하게 말하면 애자일(Agile)의 제시하는 아이디어의 핵심 가치이기도 합니다.
이중 시간성은 그가 다음 글에서 자세히 설명하겠다고 하니 그에 대한 추측은 보류하겠습니다. 다만, <프로덕트 관리의 역할과 기원은 무엇인가?>편을 쓸 때 깨달았던 내용이 떠오릅니다.
저는 두 가지 다른 세상의 연결에 대한 공학적 해법을 찾는 데에는 꽤 긴 시간이 걸릴 것이라 생각합니다. 그래서 현실에서 당장 활용하기 위해서 활용할 수 있는 방법이 바로 UX라고 생각합니다. 그래서 소프트웨어를 포함한 제품을 의미하는 '프로덕트' 기획과 관리를 위해서는 반드시 UX를 잘 알고 제품에 반영해야 하는 것이 아닐까 추측해 봅니다.
마지막으로 첫 단락의 시간 이중성은 메타버스가 핫 하던 몇 년 전에 함께 회자되던 '디지털 트윈'이란 개념이 떠오릅니다. 어떤 면에서는 시스템은 현실 인식(External World)의 일부를 쌍둥이처럼 모사한 것이지만 현실과 그 모사 사이에는 반드시 불일치가 발생할 수밖에 없습니다. 현재 기술력으로 이를 반영하는 데 한계가 있고, 인식 후 발생된 변화가 있으며 인식이 같다고 하더라도 구현 후에 변화를 그대로 반영할 방법은 아직은 없습니다.
ChatGPT가 불러온 인공 지능 붐 현상도 여기에 투영해 볼 수 있는데요. 알고리즘을 인식하여 반영하는 대신에 기계 학습으로 이루어낸 거대 모델이 패턴을 찾게 하고 이를 이용하는 방식은 시스템과 외부 세계 연결에 있어 기존과는 완전히 다른 새로운 방식의 출현을 예고한 것일 수도 있습니다.