brunch

You can make anything
by writing

C.S.Lewis

by 개발자 꿀 Jan 20. 2019

개발자가 생각하는 반복의 loop

8th January 2019


반복을 줄이는 것을 직업으로 하는 사람이
의도적인 반복에 대해 생각하며


프로그래밍이 가지고 있는 가장 핵심적인 가치이자 존재의 근본을 이루는 의미는 반복을 쉽게 만드는 특성이라고 감히 생각한다. 누군가 나의 직업이 세상에 가지는 가치를 물어본다면 그렇게 대답하겠다.


세계 최초의 프로그래머

에이다 러브레이스(Ada Lovelace)는 "해석 기관에서 처리될 목적으로 작성된 알고리즘이 최초의 컴퓨터 프로그램으로 인정"되어 세계 최초의 프로그래머라고 알려져 있다. 해석 기관은 일종의 계산기인 차분 기관에서 범용성을 발견한 찰스 배비지가 고안한 이른바 범용적 컴퓨터의 시작쯤 되겠다. (위키백과 에이다 러브레이스)

차분 기관과 해석 기관이 당 시대에 가지는 의미는 수식 계산을 위한 반복적 노동을 기계로 대체한다는 데에 있고, 산업화와 맥락을 같이 한다. 반복적으로 일어나는 일(계산)을 처리하는 '하나'의 기계(차분 기관)를 만들어내고, 그 기계에서 범용성을 이끌어내는 설계(해석 기관)를 하던 중 세계 최초의 프로그래밍 작업을 하게 되는 역사는 신기하게도 170년이 지난 현재 개발자의 업무와 닮아있다.


개발자의 일

우리 팀은 GDPR(General Data Protection Regulation)을 준수할 수 있도록 개인 정보를 익명화하고 데이터가 필요할 때만 일시적으로 원본 데이터를 볼 수 있는 플랫폼을 담당한다.

개인 정보를 다루거나 사용하는 팀이 회사 안에 굉장히 많은데 그 팀들이 각각 다른 방법으로 GDPR을 준수한다고 생각해보자. 이것은 반복적인 노동일뿐만 아니라 느리고 해당 업무에 대한 지식이 한 곳으로 집약되지 못하는 문제도 있다. 그래서 한 군데에서 개발해서 다 같이 사용하는 방법으로 문제를 해결하는 것이다.

enduser를 위한 서비스를 개발하는 사람들도 많을 텐데 이것도 크게 보면 똑같은 것 같다. 서비스를 만든다는 것은 사람들이 반복적으로 느끼는 불편함이나 욕구를 해소시켜주고 그 대가로 이익을 버는 것이지 않나. 개발자들의 업무는 모두 이런 것이다. 반복되는 것을 하나로 모으고 공통으로 처리한다. 작게는 리팩토링과 오픈소스를 생각할 수 있고, 추상적인 범위에서 보아도 다르지 않다.


개발자는 반복을 싫어해?

개발자는 반복을 싫어하나? 적어도 프로그래밍이나 설계를 하거나 회사에서 일을 할 때는 일반적으로 그렇다. 한국의 직전 팀에서 개발하던 서비스는 클라이언트마다 설정이 필요했는데 그 값은 하드코딩된 변수들이었다. 작게 시작할 때야 큰 문제가 되지 않아도, 기능이 복잡해지면서 클라이언트를 추가할 때마다 손으로 수정해야 하는 코드가 점점 많아졌다. 감사하게도 우리 서비스의 연동이 계속 늘어 반복적인 작업이 잦아졌고 테스트와 배포까지 생각하면 어마어마한 시간을 똑같은 시간에 쓰고 있었다. 그래서 반복적인 작업을 자동화하는 것이 스웨덴으로 오기 전까지 하던 업무였다.


이것이 좋은 개발자에게 요구되는 성격쯤 되냐고 묻는다면 대답하기 어렵다. 한 때 '똑똑하고 게으른 사람이 일을 잘한다.'는 말을 강하게 믿었던 적도 있다. 그러나 좋은 개발자는 단지 몇 마디의 말로 설명이 불가능해서, 정 반대로 (좋은 의미로) 미련한 사람이 필요한 때도 있다. 또한 많은 사람들이 때로 반복적인 업무에서 편안함을 느낀다.

Toil is the kind of work tied to running a production service that tends to be manual, repetitive, automatable, tactical, devoid of enduring value, and that scales linearly as a service grows.
Toil doesn’t make everyone unhappy all the time, especially in small amounts. Predictable and repetitive tasks can be quite calming. They produce a sense of accomplishment and quick wins. They can be low-risk and low-stress activities. Some people gravitate toward tasks involving toil and may even enjoy that type of work.

/ Site Reliability Engineering: Chapter 5 - Eliminating Toil, Google


요가와 뜨개질

나는 일주일에 네댓 번 요가를 하고 가끔 뜨개질을 하는데 두 취미는 놀랍도록 반복적이다. 요가 수련을 할 때는 똑같은 시리즈의 동작을 똑같은 순서대로 약 한 시간 동안 반복한다. 혹시 내가 동작 하나를 건너뛴 것을 샬라 안의 어시스트가 본다면 분명 왜 건너뛰었냐고 물어볼 것이다. 그 정도로 시리즈 안에서 순서를 지키는 것은 중요하다. 그리고 뜨개질은 패턴의 반복, 또 반복.


회사에서 코드 리뷰를 하며 리팩토링을 운운하다가 퇴근하면 시간 가는 줄 모르고 뜨개질을 하는 이중성. 중복 코드가 생길 수밖에 없는 상황을 안타깝다고 생각하면서 어제도 그제도 한 요가 동작들을 하기 위해 요가 매트에 서는 나의 양면성.

요가와 뜨개질의 재미는 도대체 어디에서 오는 것일까? 개발과 도대체 무엇이 다른 것일까? 너무 '반복'이라는 단어에 집착하는 것 같아도, 그게 도대체 무엇인지 생각해본다. 세상의 진리는 결국 하나로 통하고 인생도 역사도 결국 반복이니까.


f(x)=y, 나의 x

0과 1의 세계에서 같은 x에 대하여 f(x)는 항상 동일하다. 이 공식이 기계가, 컴퓨터가 그리고 프로그램이 반복적으로 똑같은 결과를 만들 것이라는 사실을 보장한다.

그러나 사람은 기계가 아니다. 순간순간 다르고 매일 변한다. 나는 이 작은 차이를 섬세하게 느끼는 것이 반복적인 행동이 주는 의미인 것 같다는 생각을 해본다. 작은 목도리 하나를 뜰 때도 실을 당기는 힘이 매일 달라서 주의하지 않으면 텐션이 제각각이 되기 쉽다. 항상 일정한 코를 유지하는 것은 노오력 또는 다년의 연습이 필요하다.


당연히 많은 생각 없이 몸이 기억하는 대로 움직이는 중에 마음이 편안해지는 때도 있다. 다음 단계를 고민하지 않고 저절로 움직이다 보면 집중력이 높아지면서 머릿속에 생각은 없어지는, 특정한 대상에 집중하는 것이 아니라 순간에 빠져드는 신기한 상태가 된다. 내가 아쉬탕가 요가를 본격적으로 좋아하기 시작한 것도 성취감보다는 반복적인 수련이 만드는 무중력 상태 같은 시간을 즐기면서부터였다. 요가 어쩌구 하면서 명상을 얘기하는 것은 아니다. 모든 운동과 취미에서 같은 느낌을 느낄 수 있다.


그러나 내가 매일매일 다르다는 어쩌면 불편한 사실을 인지하는 순간 스스로를 받아들이는 태도가 달라졌다. 완벽한 나를 바라지 않는 사람이 있을까? 컨디션이 들쑥날쑥하고 잘하던 것도 어느 날부터 엉망이 되는 나를 보 면 가끔 짜증이 난다. 하지만 짜증을 몇 번 넘기면 내가 괜찮고 뿌듯한 날도 오고 어느새 쑥 늘어있었다. 세상의 모든 성장이 그렇다.

높낮이를 자꾸만 생각하면서 나는 완벽하지 않지만 반복 안에서 항상 전진한다는 꽤 다행스러운 사실을 발견한다. 요가 선생님이 이것을 '밀당'이라고 말씀하신 적이 있다. 잘하고 싶을 때는 뒤로 당기다가 한 번씩 앞으로 훅 밀어주는 힘. 따지고 보면 내가 나를 밀고 당기는 것이므로, 내가 당기는 것 같으면 '요즘 힘든가' 하고 끌려가다가 앞으로 밀어주면 즐거운 마음으로 밀리면 되지 않을까. 자신을 용서하는 것과 성장의 밸런스는 내 몸이 미리 알고 있는지도 모른다.


내일도 내년에도 기꺼운 마음으로 개발을 요가를 삶을 반복하겠다.


#개발자 #해외취업 #스웨덴



작가의 이전글 방탄소년단 유럽 투어 후기
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari