티스토리 뷰

아주 짧은 고민을 거친 뒤 저는 ㅇ을 입력했습니다. 그것이 이 글의 첫번째 입력이 되었습니다. 제가 ㅇ을 입력하고자 마음먹고 왼손의 집게손가락이 D 키를 눌렀을 때, 집게손가락이 누른 키 캡은 일정한 압력으로 스위치의 상부 역할을 하는 러버돔을 눌렀을 겁니다. 러버돔은 키 캡을 누르는 손가락에 약한 반발력을 주는 동시에 반대 방향으로 용수철 상수에 눌리는 깊이를 곱한 것만큼의 반발력을 주었을텐데, 키를 누르는 손가락의 힘이 이 반발력보다 높았을테니 스프링은 지속적으로 기판에 가까워졌을 겁니다. 이때 스프링의 이동은 키 스위치에 흐르는 정전용량에 변화를 주게 되는데, 이 변화량이 사전에 설정된 수치를 넘어서는 순간 키보드는 이 키가 눌렸다고 판단하고 컨트롤러를 통해서 연결된 USB로 D 키에 해당하는 키 코드 68을 보냈을 겁니다.

운영체제는 키보드로부터 입력을 받는 순간 이 키 코드를 키보드 버퍼에 아주 잠시 담아두었다가 곧 표준 입력으로 해당 키 코드를 보내게 됩니다. 지금 제 상황에서는 이 키 입력을 인터럽트 하는 프로세스가 없었기 때문에 입력은 무난히 운영체제의 포커스가 위치한 편집창, 그러니까 비주얼스튜디오 코드의 편집기에 도달하여 현재의 언어 모드에서 키 코드 68이 표현하는 글자, 즉 ㅇ을 표시해줬을 겁니다. 사실 ㅇ을 입력하고 나서 아주 짧은 시간인 50~60밀리초의 간격으로 오른손이 키 코드 75에 해당하는 입력을 같은 과정을 통해서 운영체제에 전달하였는데, 이 약간의 딜레이 덕분에 화면에 표시되는 글자는 ㅏㅇ이 아닌 '아'라는 글자가 될 수 있었습니다.

보통 '최고의 키보드'라는 명칭이 붙은 키보드가 몇 개 있기는 하지만 사실 세상 만물이 다 그렇듯이 그 평가기준이라는 것이 절대적인 것은 아닙니다. 사람들은 보통 키 캡에 손가락을 올렸을 때 느끼는 감촉, 키를 누를 때 전달해야 하는 힘의 양, 키의 반발력이 증가하거나 감소하는 수치의 특성, 키가 튕겨나올 때 손가락에 전달되는 느낌, 키를 눌렀을 때 나는 소리 등을 종합적으로 모두 고려해서 자신의 취향에 맞는 키보드를 선택합니다. 물론 디자인, 가격, 희귀성, 브랜드 등도 고려할 수 있는 대상이지만 키보드를 선택할 때 고려해야 하는 본질적인 요소라고 보기는 조금 어렵겠지요.

언제인가 평소와 다를 것 없이 키보드를 두드리며 일하고 있었는데, 평소와 다르게 무척 화나는 소식이 연속해서 들려왔습니다. 같이 일하던 친구들 중 몇 명을 '또' 다른 부서로 보내야 한다는 것이었습니다. 저희처럼 그저 열심히 일하는 아이들은 이렇게 세심하지 못한 어른들의 이야기들을 전달 받을 때마다 기운이 쭉쭉 빠지는 것을 느끼는데, 그 날은 어떤 임계점을 넘어섰던 것 같았습니다. 고생스러운 상황을 견뎌내고 힘든 일정을 돌파해내기 위해서는 매우 강한 동기부여가 필수적이었는데, 마음이 무너지기 시작하면 집중력을 유지하기가 쉽지 않았습니다.

집중력이 흐트러지자 화면도 흐트러지기 시작했습니다. 오타가 너무 많이 나고 있더라고요. 내가 키보드를 두드린 세월이 수십 년인데 오타를 내고 있다는 사실이 부끄러웠습니다. 심지어 그 때 치고 있던 코드는 아주 단순하고 기계적으로 만들고 있었던 코드였는데 말이죠. 오타를 하나 하나 고치는 것도 귀찮아서 작성했던 코드를 다 지우고, 다시 집중력을 끌어올리고, 처음부터 천천히 치려고 했는데 순간 내가 왜 누굴 위해서 이걸 집중해서 하려고 하지? 라는 생각이 들었고 집중력이 다시 흐트러졌고, 코드 작성은 또 실패했습니다.

제가 회사에서 일 할 때 쓰는 키보드는 키압이 30g 정도인 키보드였는데, 세상 모든 키보드를 통틀어서도 키압이 매우 낮은 편에 속하는 키보드였습니다. 이것이 위에서 말한 제 취향이었거든요. 저는 머릿속에서 어떤 생각이 떠오르면 그것을 최대한 빠르게 컴퓨터에게 전달하는 것을 좋아했고, 그래서 살짝 과장하자면 손가락으로 스치기만 해도 입력할 수 있는 가벼운 키보드를 선호했습니다. 그리고 제가 4개의 국경을 통과시켜가며 어렵게 구한 이 키보드는 제 기대를 완벽하게 만족시켜주었습니다. 어지러운 미럿속을 그대로 컴퓨터에 전달하여 모니터에 띄워주고 있었던 겁니다. 도대체 오브젝트를 검색하려는 것인지 다 지워버리려는 것인지 의도조차 알기 어려운 코드를 입력해주었죠.

그 근본이 수학에 있는 분야들이 그렇듯이 프로그래밍도 사실 매우 가치 중립적인 활동입니다. 즉, 프로그래밍을 통해 만들어지는 코드는 주변의 환경이나 정치적인 목적과 무관하게 그 본연의 목적을 수행하기 위한 명령어들의 집합입니다. 거기에 개인의 감정을 반영할 여지는 전혀 없죠. 그러나 그 근본이 공학에 있는 분야들이 보통 그렇듯이 소프트웨어는 철저히 여러 가치의 개입으로 만들어지고 그 가치들의 영향을 강하게 받습니다. 예를 들어서 기업에서 만들어내는 소프트웨어는 생산성이라는 가치의 영향을 많이 받게 됩니다. 이 생산성이라는 것은 결국 얼마나 적은 비용으로 얼마나 품질이 높고 얼마나 기능이 많은 제품을 만들어내는 것인가에 중점을 두는 가치입니다. 소프트웨어의 비용, 품질, 기능 모두 사람이 증가시키고 감소시킨다는 것을 생각하면 결국 소프트웨어의 생산성은 사람에 의해서 결정될 수밖에 없는 것이지요.

그러니까 사람이 줄어들고 기능은 계속 추가되는 작금의 상황은 생산성을 높이기 위한 지극히 공학적인 활동의 일환인 것입니다. 알고는 있었지만 우리 어른들은 공학적인 마음가짐이 매우 풍부하신 분들이었습니다. 그 공학적 감수성이 옆에서 일하고 있던 후배 몇 명을 또 날려보냈고 우리 엔지니어들의 마음을 깨나갔습니다. 물론 일하는 사람들의 마음이 깨졌냐 멀쩡하냐는 어른들에게 별로 중요한 가치는 아니었겠죠. 어쨌든 그 아이들이 만들어내는 코드는 여전히 가치 중립적일 것이고, 거기에 깨져나간 마음이 반영되는 것은 쉽지 않은 일이거든요. 물론 일하는 순간에야 저 처럼 다량의 오타와 다수의 오류가 반영될 수 있을지 몰라도 기업의 품질활동이라는 것은 그런 깨진 마음을 체로 걸러서 저 멀리 던져버리고 그럭저럭 옳은 코드들만 제품에 포함시켜 주거든요.

키보드는 컴퓨터와 사람의 상호작용에 사용되는 가장 대표적인 입력장치입니다. 모니터가 컴퓨터의 출력을 사람의 입력으로 이어주는 장치라면, 키보드는 사람의 출력을 컴퓨터의 입력으로 이어주는 장치죠. 사실 그것이 이렇게 단순하고 쉬운 일은 아닙니다. 사람은 지극히 연속적인 존재이고 컴퓨터는 지극히 이산적인 존재거든요. 사람의 모호하고 어지러운 생각들을 컴퓨터의 정확하고 정밀한 언어로 변환하는 과정은 숨 쉬는 것보다는 훨씬 어려운 일입니다.

여기에서 키보드의 역할이 매우 중요해집니다. 키보드를 치는 사람의 손가락은 아날로그 이지만 키보드가 운영체제에 전달하는 신호는 디지털이거든요. 즉, 사람은 자신의 어디부터 어디까지인지 애매한 의식의 흐름을  '키보드를 치기 위해서' 확실한 규격을 가진 언어로 정리하고 그것을 손가락을 이용하여 키보드에 전달합니다. 이 과정은 음성언어의 형태로 정리된 생각을 문자언어의 형태로 변환하는 글쓰기보다도 애매모호한 어른들의 요구사항을 수학적인 언어로 변환하는 프로그래밍에서 훨씬 더 강조되는 과정입니다.

이러한 키보드의 특성이 가지는 좋은 기능이 하나 더 있습니다. 키보드는 수십 그램 정도의 압력을 주면 해당 동작을 하나의 입력으로 간주합니다. 여기에 강한 입력이나 약한 입력, 슬픈 입력이나 정신없는 입력 같은 구분은 없습니다. 즉, 입력이 이루어지면 이루어진 것이고 입력이 되지 않았으면 않은 것입니다. 각각의 입력은 0 아니면 1이 될 수 밖에 없는 특성으로 변환됩니다. 키보드를 통해서 전달되는 입력들은 그 입력의 주체가 화를 내거나 슬퍼하거나 기뻐하는 것이 전혀 영향을 받지 않습니다. 키보드가 부서지도록 두르려도 정말로 부서지지 않는다면 키보드는 그저 담담하게 들어온 입력을 신호로 바꾸어서 보내줄 뿐이죠. 특히나 프로그래밍을 할 때 이 장점이 두드러집니다. 키보드를 이용해서 작성한 코드는 그것을 입력하는 사람의 마음에 그리움, 후회, 기대, 설렘, 두려움 같은 것이 있더라도 그걸 모두 제거해버린 코드로 만들어 지거든요.

조금 긴 고민을 하다가 백스페이스 키를 눌렀습니다. 그리고 한동안 떼지 않았습니다. 옛날에 컴퓨터의 처리 속도가 매우 느렸던 시절에는 키를 계속 누르고 있으면 운영체제의 처리 속도가 연속된 입력의 속도를 따라가지 못해서 삐비비비빅 하면서 키보드 버퍼가 가득찼다는 경고음을 내던 시절도 있었는데, 요즘에는 컴퓨터의 성능이 워낙 좋아서 백스페이스키를 그저 누르고만 있어도 화면의 코드를 빠른 속도로 지워주고 있었습니다. 적절한 타이밍에 백스페이스 키에서 손을 떼자 얼추 화나는 소식을 듣기 전의 상태로 코드가 복구되었습니다. 아주 살짝 더 고민을 하고는 커맨드 키와 S 키를 동시에 눌렀습니다. 사실 별로 의미있는 동작은 아니었습니다. 요즘 개발도구들은 굳이 명시적으로 저장 단축키를 누르지 않아도 모든 상황에서 코드를 자동으로 저장해줍니다. 굳이 단축키를 누른 것은 제가 그 자리에서 오늘 업무는 여기까지!라고 소리지르기는 어려운 상황이었으니, 오늘은 더 이상 코드를 작성하지 않겠다는 상징적인 의미를 담은 동작이었습니다. 그리고 좋은 키보드는 그 동작의 무의미함과 상징성, 그리고 배경에 깔린 감정들을 정확히 배제하고 저장 명령만 컴퓨터에 전달해주었습니다.

'에세이' 카테고리의 다른 글

My December  (0) 2016.12.04
Routine  (1) 2016.08.01
우리에게 좋은 키보드가 필요한 이유  (1) 2016.04.12
프로젝트에서 화합을 추구하면 안 되는 걸까  (1) 2016.01.12
10년이 지났다  (1) 2015.12.15
개발의 현황  (0) 2015.09.23
댓글
  • 프로필사진 리치 대단한 글이네요. 키보드가 생각을 담아내는 방식을 그 깊이에서 바라보는것도 재미있었고 코드라는 언어가 얼마나 감정을 배제하는 구조를 가지고 있는지 이해하였습니다. 저도 언어로 구성된 생각이나 의도를 방해없이 기록할 수 있는 방법이 뭐가 있을까 고민하고 있습니다. 2018.02.18 20:42
댓글쓰기 폼