의식이 무의식을 돕는 방법 - Hammock driven development 발표 영상을 다시 보고
처음 본 지 10년 정도 된 영상이다. 뭔가 제대로 정리하지 못해서 찝찝했던 영상을 다시 꺼내봤다. 그 사이에 뇌에 관련된 ’프로그래머의 뇌 (펠리너 헤르만스, 2022)’와 ’생각한다는 착각 (닉 채터, 2021)’을 읽어서인지 프로그래머의 뇌 사용법에 대한 영상이라는 생각이 들었다.
요약 by human
- 우리가 해야 할 일은 기능 구현이 아니라 문제 해결
- 개념 오류를 가장 경계해야 함
- ’무의식’을 잘 활용하기 위해서는 ’의식’이 준비를 잘 해야 한다
- 명확한 팩트 및 제약 조건을 쓰고 모르는 것을 명시해서 무의식이 처리할 수 있게 한다
- 문제가 잘 정의된 작업 여러 개와 문제를 정의해야 하는 어려운 작업 한 개를 진행하면 도움이 된다
- 무의식이 처리하는 동안에도 결과물을 계속 낼 수 있기 때문
- AI는 무의식에 넣을 재료를 찾고 가공하는 데 도움을 줄 수 있을 것 같다
가장 경계해야 할 건 개념 오류(misconception)
요구사항 목록을 모두 구현한다고 문제가 해결되는 건 아니다. 우리가 해야 할 일은 기능 구현이 아니라 문제 해결이다. 해결할 문제를 제대로 정의하지 않고 기능 구현을 시작한다면 가장 치명적인 소프트웨어 버그를 만들어낸다.
우리가 가진 무기 - 깨어있는 마음(Waking mind), 배경 마음(Background mind)
개념 오류를 피해 문제 해결에 활용할 수 있는 무기가 있다. ’깨어있는 마음(Waking mind)’과 ’배경 마음(Background mind)’이다.
| 깨어있는 마음(Waking mind) | 배경 마음(Background mind) | |
|---|---|---|
| 역할 | 비판자 | 창조자 |
| 시야 | 전술적 (tactical, 눈앞의 문제) | 전략적 (strategic, 시스템 전체) |
| 최적화 | 국소 최적점 (local maximum) | 전역 최적점 (global maximum) |
| 주요 도구 | 컴퓨터, 키보드 | 해먹, 산책, 수면 |
| 출력물 | 논리적 분석, 코드 | 추상화, 아키텍처 설계 |
우리가 신경 쓰는 건 ’깨어있는 마음’이다. ’배경 마음’은 종종 뜻밖의 선물을 들고 우리를 찾아온다. 끙끙 앓던 문제가 자고 일어나니 풀린다든지 산책하거나 샤워 중에 아이디어가 떠오른다.
우리가 가진 다른 무기인 ’배경 마음’을 어떻게 활용할 것인가? 그냥 잠만 자면 되는 건가? 산책만 하면 되는 걸까?
술 마시고 글을 쓰고 맑은 정신으로 퇴고하라는 말을 들은 적이 있다. 술이란 배경 마음으로 바로 교체할 수 있는 마법의 물약이라는 것인가?
무의식을 활용하는 방법
’깨어있는 마음(Waking mind)’과 ’배경 마음(Background mind)’은 ’의식’, ’무의식’의 구분과도 비슷하다. 무의식이 알아서 해주겠지. 미래의 나를 믿으며 오늘의 할 일을 미루듯이 무작정 미루면 안 된다. 무의식 worker thread가 job을 잘 가져가서 처리할 수 있도록 의식이 데이터를 가공해놔야 한다.
무의식을 도울 수 있는 데이터 가공 노하우다. ’나는 X라는 문제를 해결하고 있으며 따라서 Y를 해야 한다’, 명확한 팩트 및 제약 조건을 써서 정리한다. 문서를 적어보는데 모르는 것들을 나열해야 한다. 예를 들어 ’여기서 네트워크가 끊기면 어떡하지?’ 같이 모르는 것들을 적는 거다. 경쟁사 솔루션을 해체해서 장점과 단점을 적어본다.
해결책을 찾기 힘든 어려운 문제는 이렇게 정리해서 무의식이 처리할 수 있도록 놔두고 우선 다른 일을 하면서 가끔씩 상기해보는 게 도움이 된다.
문제가 잘 정의된 Jira 이슈 여러 개와 문제를 정의해야 하는 Jira 이슈 한 개
마냥 무의식이 도움을 주기를 기다릴 수는 없다. 사이드 프로젝트면 모르겠지만 회사 업무라면 더더욱 손가락 빨고 있을 순 없다. 그래서 해야 할 일을 적절히 섞는 게 도움이 된다. 어려운 문제 하나와 잘 정의된 문제 여러 개로 구성한다. 팀 멤버에게 일을 분배할 때도 이런 식으로 구성하려고 노력하고 있다.
무의식까지 활용하게 하는 건 초과 근무이려나?
AI는 뭘 도와줄 수 있을까?
무의식에 넣을 재료를 찾고 가공하는 데 AI 도움을 받을 수 있을 것 같다. 내게 꼬치꼬치 캐묻게 해서 모르는 것들을 나열하는 데도 도움이 될 것 같다. skill을 만들어서 이런 과정의 포맷을 만들어서 절차나 과정에 신경을 쓰지 않을 수도 있을 것 같다.
무의식이 수행하는 것도 도울 수 있을까? 내 생각과 암묵지가 AI와 동기화되지 않아서 완벽한 대체는 아직 어려울 것 같다. 시스템 전체의 연결 고리를 찾는 것 정도는 도움을 받을 수 있다. 하지만 아직까지는 무의식이 수행하는 건 그대로 놔두고 싶다. 인지 부하를 방지하는 브레이크 역할도 해주고 있으니깐.
마치며
요구사항 구현이 아니라 문제 해결이 내 직업이다. 해결해야 하는 문제에 대한 제대로된 이해가 중요하다. 살짝 액셀을 밟아도 미친듯한 속도로 질주하는 AI 에이전트가 있는 지금은 더 중요해졌다.
Rich Hickey가 AI가 나온 뒤에는 어떻게 바뀌었는지 발표를 한 번 해줬으면 좋겠다. 궁금하다. 어떻게 하고 있는지.