brunch

You can make anything
by writing

C.S.Lewis

by 마르코 Apr 25. 2016

나는 개발이 좋다

개발자 찬가

아래는 <Imagine + Engineer> 시리즈 목차이자 첫 글




나는 개발을 늦게 시작했다. 대학교를 졸업하고 회사도 다니다 그만두고 개발을 시작했으니, 컴퓨터 공학을 전공으로 하거나 혹은 중고등학교 때부터 개발을 시작한 사람이 보기에는 개발 꼬꼬마 임에 틀림없다. 그리고 개발을 10여 년 혹은 수십 년 한 사람이 보기에는 저 경력 3년밖에 안된 개발자가 뭘 그리 잘 안다고 개발 관련된 글을 계속해서 쓰냐고 생각할지도 모르겠다. 하지만 내가 이런 자기 부정과 자기 검열 과정을 뿌리치고 계속해서 글을 쓸 수 있는 이유는 개발이 너무 즐겁기 때문이다. 내가 하는 일이 너무나 즐겁다고 말할 수 있는 사람이 세상에 얼마 되지 않는다는 사실을 알기 때문에 내 글을 읽고 누군가 이 길을 걸을 수도 있다는 생각을 하곤 한다. 나의 글이 그런 사람들에게 조금이라도 이 길을 걸을지 판단하는 기준이 되거나, 혹은 이 길을 걷기로 결정한 사람이 보다 시행착오를 덜 겪을 수 있다면 그것만으로 충분히 감사한 일이라고 생각한다. 


나에게도 개발이 싫던 날이 있었다. 물론 요즘도 구글에서 찾을 수 없는 에러 코드를 만날 때마다 아주 조금 싫을 때도 있지만, 처음 만났던 개발은 너무 어려웠다. 개발을 공부하기 위해 6개월짜리 국비지원사업 강의를 신청하고 강의가 시작하기 전 한 달 정도의 시간을 혼자서 C 언어를 독학하면서 보냈다. 아주 간단한 내용만 실습해보면서 '포인터'라는 개념 전까지 공부를 하고, 학원에서 자바를 배우기 시작한 첫째 주. 오호라, 1달 간 틈틈이 책으로 공부했던 내용이 1주 만에 끝나는 기적을 볼 수 있었다. 다행히 나는 예습을 하고 갔기 때문에 충격이 덜 했으나, 반에 절반 정도 되는 비전 공생들의 얼굴에는 어두운 좌절의 그림자가 내려오고 있었다. 특히 놀라운 기간은 자바 프로그래밍에서 아주 중요한 요소를 차지하는 '컬렉션 프레임워크'라는 내용을 가르치면서 단 하나의 이유 설명도 없이 책 속의 예제를 따라치던 선생님을 바라보며 학생들은 비통함에 빠졌다. 그래, 우리는 느낄 수 있었다. '너도 이해 못했구나, 임마'. 그것은 진한 전우애였다. 분명히 내가 멍청해서 이해하지 못한 건 아닌 거 같은데, 나는 내가 뭘 배우고 있는지 이해할 수 없었고 좌절했다. 그러다 책 진도만 나가는 것이 아니라, 왜 이 개념을 알아야 하는지 알려주는 선생님을 만났을 때 처음으로 개발에 흥미를 되찾을 수 있었다. 그리고 나는 아래와 같은 프로그래밍의 오해를 헤쳐가며 성장해왔다.


'에러는 나쁘다'

아니다, 에러는 개발자가 프로그램에서 발생하는 문제를 해결하도록 알려주는 신호이다. 이 신호가 없다면 훨씬 더 개발은 괴로워질 것이다.


'객체지향 프로그래밍은 절대 선이다'

아니다, 클래스로 대표되는 객체지향이라는 패러다임은 프로그래밍 기술이 발전하며 프로그램이 커지면서 길어져가는 코드를 관리하기 위한 기술로써 등장한 것이다. 함수나 클래스, 인터페이스라는 개념도 전부 큰 프로그램을 보다 효율적으로 관리하기 위해 등장한 것이지 처음부터 존재하던 것은 아니었다. 그리고 객체지향뿐만 아니라 함수형 언어를 포함한 다른 언어 패러다임도 다른 방법으로 커다란 프로그램을 효율적으로 짜기 위한 고민을 하고 있다.


'소프트웨어 개발은 고도의 수학적 사고 활동이다'

반반, 보통 개발자를 떠올릴 땐 알고리즘을 구현하는 수학적 사고의 달인을 생각하기 쉽지만, 소수의 경우를 제외하고는 대다수의 개발자는 이미 존재하는 도구를 익히고 그것을 이용하는 기술자에 가깝다. 특히 개발을 배우는 초기에는 다양한 도구를 배우는 것에만 시간을 쏟게 된다. 웹 개발을 예로 들면, 어떻게 데이터베이스에 데이터를 요청하는지, 그리고 특정한 웹페이지(예, https://brunch.co.kr/@imagineer/130) 같은 주소를 웹브라우저에 입력했을 때 어떻게 원하는 내용을 보여주는지는 개발자가 직접 개발하는 것이 아니다. 존재하는 도구를 먼저 배워야 한다. 


'개발의 고수가 되는 데는 수년이 걸린다'

일전에 소개했던 스택오버플로우 창시자의 말에 따르면 "한 분야에서 12개월 정도 일하고 난 다음에는 그 분야에 정통하거나 아니면 영원히 정통할 수 없거나 둘 중 하나"라고 한다. 결국 하나의 기술을 충분히 익히는 데는 그렇게 오랜 시간이 걸리지 않는다는 것이다. 그보다 얼마나 기간이 짧더라도 깊이 있게 공부했는가가 실력을 판가름한다. 그런데 한국에서는 개발자의 실력을 제대로 판단할 방법을 알지 못해서, 이상한 자격증 시험을 만들고 연차로 개발자의 능력을 판단한다.



내 생각을 현실로


개발의 가장 큰 매력이 무엇이냐고 묻는다면 나는 단연코 '내 생각을 풀어내서 이 세상에 내어놓을 수 있는 가능성'이라고 말하고 싶다. 우리가 학교에서 배우는 많은 것들 중에서 그 무엇 하나도 실생활에서 사용할 수 있는 것을 찾기 힘들다. 내가 즐겁게 대학에서 4년 간 배웠던 역사학도 나에게 과거와 현재를 아울러 세상을 보는 넓은 눈을 선물해주었지만, 그걸로 실생활에 접목할 수 있는 부분은 많지 않았다. 대학교에서 교수를 하거나, 학교에서 역사 선생님을 하거나, 혹은 역사에 관련된 글을 인터넷에 쓰는 정도가 아니었을까?


그런데 개발은 내 결과물이 바로 다른 사람에게 닿는 놀라운 경험을 할 수 있게 해준다. 물론 개발의 분야에 따라서 운영체제의 깊은 곳이나 개발에 사용되는 다양한 도구 그 자체를 개발한다면 그런 느낌이 조금 덜 할 수도 있겠지만, 많은 경우 내가 만든 서비스는 서버에 올라가고 사용자의 반응을 이끌어낸다. 이 쾌감이 내가 웹과 앱 애플리케이션 개발에서 벗어나지 못하는 이유일지도 모른다.


수고스럽게 몇 달을 팀원과 같이 논의하고 만들어낸 서비스가 웹페이지로 혹은 앱스토어나 구글 플레이에 올렸을 때, 그리고 그 서비스에 누군가 가입할 때, 그리고 그 사용자가 댓글을 남기거나 어떤 행동을 취하는 모습을 지켜보는 것은 정말 큰 즐거움이다. 나는 내가 처음으로 처음부터 끝까지 만든 서비스를 출시했을 때의 그 감동을 아직도 잊지 못한다. 이 즐거움을 맛보았다면, 그 이후에는 어떻게 하면 더 사용하기 편하고 아름다운 앱을 만들지, 그리고 서비스의 장애를 없애고 속도를 빠를지 고민하게 되는 것은 너무나도 자연스러운 순서이다.



지금은 디지털 세계


뿐만 아니라, 이미 사람들은 모든 작업을 컴퓨터를 통해서 하고 있다. 개인의 창의성이 가장 중요한 예술의 분야에도 이미 컴퓨터를 빼고는 존재할 수 없다. 수많은 예술 작품들이 포토샵과 일러스트를 통해서 일어나고, 사진도 디지털카메라와 스마트폰으로 찍는다. 음악을 만드는 것도 영화를 찍는 것도 전문 편집 프로그램이 그 자리를 차지하고 있다. 컴퓨터가 글을 써서 일본 문학상 후보에 올랐고, 3D 프린터가 집에서 오늘 입고 싶은 옷을 찍어 줄 날도 얼마 남지 않았다.


변태 같을 수 있지만 이제 나에게는 많은 것들이 '디지털화' 되어 보인다. 음악을 듣고 있으면 이 곡을 디지털 정보로 변환해서 사람들이 더 좋아할 음악으로 변주할 수 있지 않을까 생각한다. 무료로 풀려서 무제한으로 사용 가능 한 구글 포토에 올라가는 내 사진은 분석되어서 내가 어떤 옷을 좋아하고, 어디에 가고, 어떤 음식을 먹는지 수치화해서 나에게 돌아올 것이다. 이런 것들을 이해하는 순간 스마트폰에서 흘러나오는 음악의 한 선율 위에 있는 것처럼 내가 흘러 다니는 디지털 정보 속의 한 가닥 위에 존재한다는 생각이 들 때가 있다. 디지털 세계는 0과 1로 이루어져 있다고 하지만, 아름답고 또 아름답다. 



가장 빠른 미래가 내 손에


개발자의 삶은 가장 미래와 가깝다. 무슨 말이냐고? 소프트웨어 개발은 가장 빠르게 혁신이 일어나고 있는 분야이다. 잠시 관심을 다른 곳에 돌리고 있다 보면 수많은 신기술이 등장하고, 사라지고, 그중에 몇몇은 널리 퍼진다. 그리고 역시 수많은 서비스가 사용자를 만나기 위해 지금도 열심히 만들어지고 있다. 개발을 시작하고 난 이후로 새로운 서비스에 더 많이 관심을 가지게 되었다. 덕분에 여행에 가서는 Airbnb를 통해서만 숙박을 해결하고, 택시 바가지가 무서울 때는 Uber를 탄다. 한국에서도 쏘카라는 서비스가 등장하고 얼마 되지 않아 자동차를 빌려 보았고, 배달의 민족은 야식을 시키기 위해 늦게 까지 영업해야 하는 곳을 일일이 확인해야 하는 고생을 덜어주었다.


그리고 이런 각 산업에서 '새로움'에 도전해야 하는 조직은 끊임없이 새로운 문화를 도입하기도 한다. 지금은 꽤 많이 알려진 것 같지만 아직도 한국에서는 많이 낯선 원격근무도 한국에서는 개발자가 가장 도입하기 쉬운 근무 형태이다. 외국에서도 마찬가지로 개발자에게 가장 먼저 도입될 수 있었던 근무 제도이기도 하다.


나는 오늘도 새로운 미래를 만들기 위해 도전한다. 이제 며칠 후면 상해로 떠나는 나의 도전이 무모하지만은 않은 것은 내가 개발자이기 때문에, 그리고 미래에 가장 가까운 직업 중에 하나이기 때문이라고 확신한다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari