관련글: 프로그래머의 위기지학 – 애자일 이야기(김창준 님)
애자일 이야기 블로그에는 주옥 같은 글들이 많이 올라옵니다만, 그 중에서도 아주 인상깊게 남아있는 것 중 하나가 프로그래머의 위기지학에 관한 것입니다. 위기지학이란 한마디로 자신을 위한 학문입니다. 아마도 다부분의 경우, 개발자들은 자신이 쓰기 위한 프로그램을 만들기 보다는 남을 위한 것을 만드는 데 더 많은 시간을 보내고 있습니다. 어찌보면 그게 당연하죠. 하지만 애써 배운 프로그래밍을 그저 돈벌기 위한 스킬로만 사용하기에는 너무나 아깝지 않을 수 없습니다. 애써 배운 건데… 때로는 스스로가 고객이 되어, 자기에게 필요한 간단한 프로그램들을 만들어 보는 것도 정말 의미있는 일이라 할 수 있겠습니다.

저의 위기지학 경험을 소개해 보자면, 군복무를 마치고 나온지 얼마안된 2006년 3월에 만든 ‘WallpaerRS’라는 바탕화면 벽지 자동교체 프로그램이 최초라고 말씀드릴 수 있겠습니다. 마음에 드는 그림들은 많은데 이걸 매일 같이 수동으로 바꾸기는 귀찮고, 그래서 자동교체 툴을 찾아보긴 했지만 트레이에 상주에서 일정 시간마다 교체해 주는 방식이어서 메모리와 CPU를 계속 잡아먹고 있다는 것이 마음에 안들었습니다. 제게 필요했던 건, 그냥 부팅할 때 한번씩만 바뀌면 되는 거였으니까요. 그래서 Delphi를 이용해서 간단히 만들어 보았습니다. 그리고 지금도 잘 쓰고 있죠.
그리고 요즘에도 가끔 업데이트 하고 있는 AniNames가 있습니다. 기존에 범용적으로 적용되던 파일이름 정리 툴과는 다르게 이건 사실상 TV 애니메이션 시리즈들을 정리하는 것에 최적화했고, 최소한의 입력으로 작업할 수 있게 하자는 컨셉으로 만들었습니다. 원래는 개인적으로만 쓰고 말 물건이었을 텐데, 테스트를 부탁했던 친구에게 의외로 좋은 반응을 얻어서 슬쩍 공개를 했습니다.
이런 식으로 자기를 위해 프로그래밍을 할 때는, 불특정 다수의 사용자가 아니라 오로지 ‘나’에게 필요한 것에만 맞추게 되는데, 그래서 상당히 단순해지고 극단적인 형태를 띄기도 합니다. ‘내가’ 쓰지 않는 기능은 과감하게 빼버릴 수도 있고, 경우의 수에 대한 것도 극단적으로 줄일 수도 있습니다. 저의 경우는 AniNames가 처음에는 바로 그런식으로 만들어진 거였습니다.

그런데 이건 좀 다른 얘기입니다만,「정신병원에서 뛰쳐나온 디자인」이란 책에서는 ‘페르소나’에 의한 디자인 방법을 소개하고 있습니다. 요약하자면 ‘페르소나’라는 가상의 고객을 상당히 구체적으로 설정합니다. 그리고, 그렇게 만들어진 수 명의 ‘페르소나’들이 요구하는 것, 필요한 것들을 디자인에 반영해 나가는 방식입니다. 고객의 형태가 구체적인 예시로 드러난다는 점에서 재미있는 방법이라고 생각합니다.
헌데, 생각해 보면 위기지학에 의한 프로그래밍이라는 것은 결국 ‘나’에 대한 페르소나를 대상으로 디자인을 하게 되는 것이 아닐까 싶습니다. 내가 만들어서 내가 사용하는 것이기 때문에, 고객의 요구가 무엇인지 이런 경우만큼 잘 알 수 있는 때도 없겠지요. 그래서 위기지학의 프로그래밍 그 자체가 일종의 페르소나에 의한 디자인을 경험하게 되는 것이 아닐까 하는 생각이 들었습니다.