제발 매크로를 가만히 놔두세요!
저는 다른 프로그래밍 언어에 비해 분명 비주류에 속하는 오토핫키(AutoHotkey)를 보급하는 데 힘을 쏟고 있습니다. 강좌를 작성하고, 질문에 답변해주며, 오토핫키와 관련된 가능한 한 모든 문제를 해결해주려고 하죠. 이렇게 업무를 단순화할 수 있는 생산성 높은 언어를 왜 마다하겠습니까?
그러나 그 높은 생산성 때문일까요? 모든 프로그래밍 언어에도 있지만, 유난히 오토핫키는 나쁘게 사용하는 사람이 많은 것 같습니다. 핫키로 업무를 쉽게 자동화할 수 있다는 특장점을 가졌기 때문에 불법 매크로에 사용되기에도 용이하기 때문인 것 같습니다.
어느 날과 같이 질문에 대해 답변해주는데, 문득 그러한 가능성을 인식하니 오늘은 참 회의감이 들었습니다. 오늘은 책임 있는 소프트웨어 개발에 대해 말해보려 합니다.
'매크로'라는 말이 주는 기피
'매크로'라고 말하면 부정적인 느낌부터 드는 사람이 꽤 많습니다. 어쩌면 전 국민의 과반이 넘을지도 모릅니다. 매크로는 어떠한 반복 작업을 규칙에 따라 자동화하는 프로그램을 의미하며, 사람보다 월등히 빠른 컴퓨터를 이용하기 때문에 그 업무 시간이 훨씬 줄어드는 효과가 있습니다. 무엇보다 사람이 직접 하는 업무량이 대폭 줄죠.
그런데 그런 매크로의 장점이 양날의 칼로 작용하기도 합니다. 세상만사 사건·사고를 나르는 게 주된 일인 '언론'을 통해 비치는 매크로는 일단 불법적인 게 태반이기 때문입니다. 마스크를 사재기(KBS)하고, 음원 순위를 조작(중앙)했다는 방법으로 거론되기도 했으며, 또 4년 전엔 드루킹의 '킹크랩' 매크로를 이용한 여론조작 사건(경향)이 있었습니다.
온갖 매크로를 이용한 사건·사고가 전국에 보도되는데, 매크로에 좋지 않은 기분이 든다는 것은 충분히 이해할만한 일입니다. 그런 느낌이 드는 사람을 탓할 필요도, 언론을 탓할 필요도 없습니다. 그런 이미지를 만든 것은 불법적으로 매크로를 사용한 사람들이니까요.
'매크로'는 결백하다
그런데도 당당히 말씀드릴 수 있는 것은 매크로는 결백하다는 것입니다. 일부 불법적인 매크로의 일로 대부분의 매크로를 불량하다고 여길 순 없습니다.
2018년 우체국에서 사회복무요원으로 병역을 이행하던 한 청년은 '매크로'로 업무를 자동화(조선)해서 화제가 되었습니다. 6개월이 걸리는 등기번호 입력 업무, 인쇄업무를 단 하루 만에 매크로로 끝내버린 것이었습니다. 그 어떤 공무원도 하지 못한, 국가의 기간 업무 중 하나인 우정 업무를 일부 단순화했다는 것은 분명히 매크로를 좋은 일에 사용한 것입니다.
심지어는 경찰 또한 '폴해시'(매경)를 통해 업무를 자동화했습니다. 디지털 파일의 고윳값인 '해시(Hash)'를 자동으로 찾아주고, 담당 형사의 이메일로 그 목록이 전송되는 프로그램이라고 합니다.
세계적인 프로그램인 MS 엑셀은 아예 자체적인 매크로 기능을 탑재하고 있습니다. 엑셀 업무를 많이 하는 직장인들에게 업무 시간을 확 줄여주는 역할을 톡톡히 하고 있습니다. 그뿐만 아니라 모든 기업 및 기관, 개인이 사용하는 '업무를 단순화/자동화해주는 프로그램'은 모두 '매크로'에 속합니다. 매크로가 없다면 우리는 종이와 펜으로 업무를 처리했을 수도 있습니다.
그런데도 (이미 해산된 국회지만) 정치권에선 매크로 자체를 규제하겠다는 법안을 검토했다는 것(진보넷)이 우리 현실임에 참 안타깝습니다. 걸면 걸리는 법안을 통해 매크로를 규제하겠다는 현실이 현재 매크로에 대한 인식을 드러내 주는 것 같아서 참 달갑지만은 않습니다. 현재 법 조항을 살펴보았을 때, 관련된 변경 사항이 존재하지 않는 것으로 보아 해당 법안은 입법되지 못한 것으로 보입니다.
망치를 흉기로 하는 범죄가 일어난다고 해서, 모든 망치에 대한 인식을 나쁘게 가질 필요는 없다는 말입니다. 매크로는 우리 삶을 유익하게 만들어주고 있으며, 이를 나쁘게 이용하는 사람에 의해 이미지가 '박살'나 있는 것입니다.
책임 있는 소프트웨어 개발 선언
'책임 있는 소프트웨어 개발 선언(manifesto.responsiblesoftware.org)' 이라는 일종의 운동이 있습니다. 2015년 두 독일 프로그래머가 주창한 선언인데, 소프트웨어 개발자로서 어떠한 윤리를 지켜야 하는지 다섯 개의 조항으로 적어두었습니다. 간단히 살펴보면 아래와 같습니다.
1. 나는 내 결정에 대해 윤리적으로 책임이 있으며 양심에 따라 행동할 것입니다.
2. 나는 인권과 시민의 자유를 침해하는 소프트웨어를 개발하지 않을 것입니다.
3. 나는 내가 하는 일의 전문가로서 나를 믿을 것입니다.
4. 나는 업무에 꼭 필요한 데이터만 수집하고, 필요한 만큼만 보관하겠습니다.
5. 나는 에너지와 자원의 낭비를 방지하기 위해 최선을 다할 것입니다.
각각의 조항에 세부적인 설명이 있는데, 이는 전문을 참고하시길 바랍니다.
모든 선언이 으레 그렇듯이 1번 항목이 가장 인상 깊습니다. 프로그램을 개발하는 모두는 그 프로그램에 윤리적인 책임을 져야 합니다. 양심을 속이는 프로그램은 개발되어선 안 될 것입니다.
매크로 또한 마찬가지입니다. 저는 세간의 인식과 다르게, 대부분의 매크로는 여러분의 업무를 자동화하고 그 이익을 극대화하는 데 사용된다고 믿어 의심치 않습니다. 불법적으로 사용되는 매크로는 전체 자동화 프로그램 중 극소수라고 생각하고 있습니다.
그런데도 불구하고 매크로를 통해 불법적인 이익을 취하거나, 타인의 IT 서비스를 침해하려는 사람을 간혹 보게 됩니다. 심지어는 그들은 별다른 문제의식을 느끼지 못하고 있죠. 심지어는 타사의 보안 프로그램을 우회하거나 무력화하는 등 악성 프로그램과 별반 다를 바 없는 행동을 하기도 합니다.
모두 근절되어야 합니다. 스스로가 다들 하지 말아야 합니다. 모든 프로그램은 윤리적으로 개발되어야 합니다. 당연한 사실을 말해야 하는 이런 상황이 참 안타깝습니다. 정당한 다수의 매크로의 인식을 소수의 불법 매크로가 망치고 있습니다.
지식을 전수하는 입장에서의 다짐
대학 교수부터 동네 컴퓨터학원 강사, 그리고 수많은 일반인이 다른 사람에게 프로그래밍을 알려줍니다. 저 또한 마찬가지입니다. 그들이 '모든 프로그램은 악용될 수 있다'는 당연한 사실을 모르는 것은 아닙니다. 그리고 그들로부터 배운 누군가가 불법 매크로를 제작했다고 그들에게 책임을 물을 수 있는 것 또한 아닙니다. 그들은 그저 배움을 원하는 이에게 알고 있는 것을 알려준 것이며, 배움을 원하는 이들이 '왜 배우려 하는지'는 깊이 생각하지 않습니다. 예외적인 상황은 고려하지 않은채 다소 안일한 태도로 가르칠 뿐이죠.
그러나 교육자 되는 입장에선 이러한 프로그래밍 윤리를 적극적으로 교육할 필요가 있습니다. 또한, 어떠한 사람을 교육할 땐 자신의 교육이 미치는 영향을 생각하지 않으면 안 됩니다. 일말의 악용 가능성이 있다면 이러한 일에 침묵해서는 안 됩니다.
저 또한 오토핫키라는 프로그래밍 언어를 널리 알리고, 다른 사람들의 질문에 답변해주는 일에 힘쓰고 있습니다. 그리고 별생각 없이 질문에 답변해주는 경우가 많았습니다. 그냥 여쭤보시니까, 알려주는 게 보람차니까, 만들고 싶은 프로그램이 있으실 테니까.
그런데 이제는 좀 더 엄격하게 답변해주어야 한다는 생각이 듭니다. 그들이 다른 사람의 IT 시스템을 침해할 수 있는 약간의 가능성을 매 질문 탐색해보아야 합니다. 그 용도가 명확히 건전하다고 판단될 때만 질문에 답변해주어야 하는 것이 제 책임이라고 생각합니다. '보통 사람'이 일상생활에서 대화하는 것처럼, 다른 사람의 질문에 별 의문 없이 답변하다 보면 불법 매크로는 제 지식을 먹고 자랄 수 있습니다.
그렇게 지난 활동에 대해 문득 고통스러운 성찰이 든 하루였습니다.