레이블이 개발자인 게시물을 표시합니다. 모든 게시물 표시
레이블이 개발자인 게시물을 표시합니다. 모든 게시물 표시

2010년 4월 1일 목요일

자동화를 멈출수 없는 이유



자동화 :
반복되는 일을 사람대신 기계가 하도록 만드는 일.

 
 이전에 애자일 컨설팅의 김창준씨가 반복의 중요성에 대해서 쓴 글을 읽은적이 있습니다.
정확한 내용은 기억나지 않지만, 우리 일상의 대부분의 일이 새로운것 보다는 어제, 그저께
또는 한달, 일년전에 하던 일의 반복이라고 합니다. (사실 그렇기도 합니다.)
이 반복들은 매우 일상적이고 하찮아 보이지만 계속 반복되기 때문에
이것들이 쌓여 큰 일을 만들어 나갑니다.

그래서 김창준씨는 "이 하찮은 반복"이 매우 중요하고 큰 힘을 가지고 있다고 이야기 했던것 같습니다.

 학교를 졸업하고 사회에 나와 제가 제일 많이 느꼈던 것은 바로 이 "반복" 이었습니다.
아무리 새로운 일을 한다고 해도, 하던일이 엎어져 버린대도,
저는 매일 반복해야 하는 기본적인 일들을 갑자기 뒤엎은적이 없었던것 같습니다.
그리고 그런 반복되는 일들 때문에 지금까지 큰 탈없이 일들이 진행된것 같습니다.
<- 이런 느낌을 가장 많이 받는때가 바로 며칠간의 업무를 비웠을때라는거 혹시 공감하시는지? ^^

 또 다른 김창준씨의 글에보면,
유능한 개발자로 성장하는 비결중 하나는,
 자신이 하는 일을 효율적으로 만들어 나가는 것이라고 했던것 같습니다. 불필요한 반복을 줄이고,
그만큼 남는 시간에 좀더 창의적인 일을 하는 것이지요.
하지만 이것보다 좀더 중요한 것은 그러한 반복을 줄이는 일
(또는 반복을 사람이 아닌 기계에게 시키는 일)을 진행하는 중에 많은것을 깨닭고 배울수 있다는 것입니다.

이러한 일을 저는 "자동화", 자동화를 통한 깨달음이라고 부르고 싶습니다.

제 경험을 통해 예를들어볼까요?

저의 업무는 수십개 언어로된 수만개의 문장을 관리하는 일입니다.
일명, 다국어 관리라고 (Globalization) 하죠.
영어로 한국어로 된 문장이 30개 언어로 번역되어 오면
이를 지금 있는 문장들에 업데이트 하고
필요없는 것들을 제거하고
종종 고유명사가 바뀌면 일괄적으로 바꿔주는등의 일을 하고 있습니다.
(물론 이게 주 업무는 아닙니다.)

제가 처음 왔을때엔,
이러한 30개 언어 문자열을 관리하고 업데이트 하고 변경하는 일을 일일히 손으로 해 왔습니다.
그러다보니, 회사명 하나 바뀌어도 문장 하나 바뀌어도 일일히 확인하면서 바꿔줘야만 했습니다.
문자 때문에 하루종일 반복작업을 해야 하는게 많았죠.
그러다보니, 업무가 항상 중요한 일이 없는 신입에게만 주어져 왔습니다.

어느날 수백개가 넘는 문장을 바꿔야 하는 업무가 주어지자
더이상 안되겠다고 생각이 들었습니다.
30개 바꾸는 것도 지루하고 힘든데, 계속 문자만 바꾸는 일을 반복하다간
일할맛이 안날것 같았습니다.

게다가 손으로 일일히 바꾸다보니, 제대로 못바꾸는 것도 수두룩 했고
잘못 바꿔서 다시 롤백해야 하는 일도 잦았습니다. (human error)

그래서 그때부터 버튼 하나만, 명령어 한개만 치면 컴퓨터가 알아서 바꿔주는
프로그램을 만들어야 겠다고 생각했습니다.
(사실 엑셀의 매크로를 써서 해결할수도 있었지만 익숙하지도 않았고, 수작업이 다수 필요해서 패스)
그리고 하루를 투자해서 프로그램을 만들고, 이틀이상 걸리던 일을 단 3초만에 끝낼수 있었습니다.

엄청나게 시간을 절약한 셈이죠.

자동화의 첫 목표는 반복업무를 기계에게 시킴으로서 시간을 절약하는데 있습니다.


하지만 "시간을 줄이다" 보다 더 중요한 것은
그 프로그램을 만들면서, .NET  프레임워크의 리소스 관리와 다국어 등의 정책에 대해서 좀더
잘 이해하고 응용할수 있게 되었다는 것입니다. 그리고 그 기간동안 익힌 정규표현식 덕에
확실히 수만개의 문장을 관리하는 실력을 쌓을수 있었습니다. 그리고 최근엔 닷넷의 핵심기능이
되어버린 LINQ로 프로그램을 개선하는 작업을 통해서 LINQ에 대한 확고한 실전지식을 쌓고 있습니다.
(LINQ 의 간결함, 확장성, 그리고 성능에 감탄하면서 말입니다.)

그리고 제가 개인적으로 개발하고 있는
오픈소스 종합 리소스 관리프로그램 Resxus도 좀더 발전시킬수 있고 말입니다.

이러한 "작은 개선을 위한 아이디어와 실천"에서 시작된 "자동화"가
저에게 단순히 업무 퍼포먼스만 향상해 주는것이 아니라,
새로운 것을 배우고 응용하고 더 발전시키는 기회를 줌으로서
저에게 더 실력있는 개발자로 성장하는 기회를 주고 있다는 사실이...
그리고 그 발전이 누가 시키는 것이 아닌,
제 스스로의 의지와 재미를 통해 이뤄지고 있다는 것이 즐겁습니다.

아무리 업무가 바쁘고 힘들어도,
자동화 같은 이러한 개선과 노력 을 통해서 뭔가 나아지는 것을 볼수 있기 때문에
그 과정을 통해서 개발자로서의 보람과 실력을 쌓을수 있기 때문에
저는 자동화를 멈추지 말고 진행해야 한다고 생각하고 있고 그렇게 할 것입니다.


최근 회사에서 강조하는 "창조경영,창의적 기업문화"가 꼭 신규 사업 아이디어만 짜내라고 독촉하는
그런 것이 아니라 현장의 이런 작은 개선들을 찾아 독려하고 인정하고 발전시킬수 있도록
문화와 환경을 만드는 것이어야 하는게 아닌가 생각합니다.


비록 개발자가 아니더라도,
반복되는 야근과 비효율적인 업무에 지쳐 있다면
그냥 체념하고 있기보다
좀더 즐거운 삶을 위해서 생각을 바꾸고
개선해보려 노력한다면
그리고 이를 통해서 좀더 창의적이고
자유로운 시간을 늘릴수 있다면
세상이 그를 통해서 약간이나마
좀더 즐겁지 않을까 생각합니다.



- 만우절 전날밤에 떠오른, 불곰의 생각이었습니다.