사회

"Coder's High를 아시나요"…KAIST 개발동아리 'Include'

입력 2021/05/30 06:02
518778 기사의 0번째 이미지 이미지 크게 보기

Include 회장을 맡고 있는 김재우 씨(KAIST 전산학부 4학년).

"개발자는 매일 자신과 싸웁니다. 사소한 기능에 3일을 씨름하고 '이젠 못 하겠다' '더 이상 답이 없다'고 생각할 때 시도한 방법이 해결책이 되곤 합니다. 그땐 정말 날아갈 듯이 기쁩니다. 이 기분을 '코더스하이(Coder's High)'라고 합니다."

한국과학기술원(KAIST) 소프트웨어 개발 동아리 'Include'의 회장을 맡고 있는 김재우 씨(23)는 개발자만이 누릴 수 있는 행복을 이같이 소개했다.

프로그램 개발을 99% 완료해도 코드가 한 줄만 틀어지면 다시 0% 상태에서 시작해야 하는 경우가 부지기수지만, 머릿속에 떠도는 아이디어를 제 손으로 직접 만들어 구현해냈을 때의 기쁨과 뒤따르는 호평의 쾌감을 누리는 것 역시 개발자만의 행복이다. "어떤 면에선 방에서 키보드만 두드리더라도 세상을 바꿀 수 있는 기술을 가졌다고 생각하니 뿌듯합니다(웃음)."

◆#include < > : '~를 포함하라'


518778 기사의 1번째 이미지 이미지 크게 보기

KAIST 개발동아리 Include. 사진 왼쪽부터 김재우(23), 김나영(25), 김태윤(24), 손서윤(23), 김도연(21), 최현성(25). [사진=Include]

Include는 프로그래밍과 개발에 관심이 깊은 KAIST 학생들이 모이면서 2002년 설립됐다.


동아리 이름은 프로그래밍 언어인 C언어에서 헤더파일(header file·함수들의 집합)을 포함한다는 뜻의 지시문인 '#include'에서 유래했다. 프로그램의 가장 첫머리에 등장하는 구문이 '#include'인 것처럼 항상 새로워지자는 의미가 동아리 이름에 담겼다.

동아리 활동의 두 축은 스터디와 개발이다. Include는 매 학기 초마다 전공·학번에 관계없이 개발에 관심 있는 KAIST 학생들을 대상으로 신입 부원을 모집하고 있다. 신입 부원은 기초적인 개발 능력을 갖출 수 있도록 기초 세미나를 듣고, 매주 진행하는 정기 세미나에 참석하고, 동아리 구성원들이 여는 스터디 활동에도 자율적으로 참여한다. 개발을 가르치고 배우며 서로 성장하는 것, 부원 각자가 자기만의 강점을 개발하는 것을 Include는 목표로 삼는다.

학습 영역은 모바일·웹 앱 개발에 한정되지 않는다. Include에는 모바일 앱을 개발하는 부원보다 다른 분야의 개발에 집중하는 인원이 더 많다. 딥러닝, 양자컴퓨팅, 강화학습 등 스터디도 정기적으로 열리고 있다. 매주 진행되는 신입부원 대상의 교육 세미나도 모바일·웹 앱 개발에 국한하기보다는 파이썬을 비롯한 범용적인 내용을 다루고 있다.

◆아이유 '블루밍'에서 착안한 앱 'Spoids'


518778 기사의 2번째 이미지 이미지 크게 보기

Include 박원영 씨(KAIST 대학원 산업디자인학과 재학 중).

Include는 지난 학기에 iOS 어플리케이션(앱) 'Spoids'를 출시했다. Spoids는 카메라의 선택적 색상 효과(Selective Color Effect)를 모바일 카메라 앱으로 지원하는 서비스다. 학부에서 컴퓨터공학을 전공하지 않은 산업디자인학과 대학원생 박원영 씨(27)가 만든 이 앱은 출시 이후 애플 앱스토어에서 카메라 유료 앱 차트 9위에 오르기도 했다.

박씨는 iOS 앱 개발을 위한 기초부터 공부하며 Spoids를 만들었다.


아이디어를 떠올리고, 완성된 앱을 배포하기까지 꼬박 1년이 걸렸다. 박씨는 2019년 11월말 공개된 가수 아이유(IU)의 블루밍(Blueming) 라이브 무대 영상을 보고 영감을 받아 Spoids 개발에 착수했다.

518778 기사의 3번째 이미지 이미지 크게 보기

아이유 `블루밍` 라이브 무대. [사진=유튜브 채널 `1theK Originals` 캡처]

"이 무대에서 아이유의 마이크, 머리, 기타 등이 모두 파란색입니다. 아이유가 노래하는 동안 무대 뒤편의 흰 벽엔 파란색 물감이 계속 칠해집니다. 완전히 '파란색'에 초점을 맞춘 무대 디자인이었습니다. 이 무대를 보면서 캐논(Canon)과 니콘(Nikon) 카메라에는 특정 색상을 선택해 강조해서 찍는 기능 'Selective Color Effects'가 있다는 것을 떠올렸습니다. 모바일 앱으로 구현해보고 싶었습니다."

◆개발 완료 전까진 모든 과정이 시행착오


개발자 입장에서 앱을 개발하는 과정은 고행에 가깝다. 코드가 한 줄만 틀어져도 결과물은 의도한 대로 나오지 않는다. 모바일 앱을 예로 들면, 화면 비율부터 버튼 크기, 레이아웃, 선택 시 색상, 화면전환 방향 등 사소한 것 하나하나를 모두 코딩해야 한다. 이 같은 설정이 완료돼야만 실제 앱으로 출시되는 자격을 얻는다.

Spoids 개발 과정도 지난했다. 박씨는 카메라 필터 앱에 필요한 최소 기능들을 모두 구현하고, 시뮬레이터에서 기능이 잘 작동하는 것까지 확인했지만 최종 관문인 애플의 베타테스트 플랫폼 '테스트플라이트(TestFlight)' 단계에서 고전했다. 라이브러리에서 불러온 사진에 필터를 적용하는 기능은 개발 과정에서 이미 구현한 바 있지만 배포 환경에선 먹통이었다.

"구글과 스택오버플로우(Stack Overflow·개발자 커뮤니티)에서 몇 주간 검색했는데 방법을 찾을 수 없었습니다. 결국 코드를 모두 엎고 다른 접근으로 코딩을 다시 했습니다. 99%까지 완료하고 다시 0%로 돌아가 개발했던 사례입니다."

◆벼는 익을수록 고개를 숙인다. 개발자도 그렇다


개발자의 노고를 제대로 이해하는 사람은 개발자뿐이다. 온전히 사용자 입장에서만 생각했을 때는 '왜 이렇게 불편하게 만들었지' '디자인이 왜 이렇게 별로지'라고 평가했던 앱들도 개발자 입장에서 다시 보면 전혀 다르게 보인다. 박씨는 "앱 개발을 시작하고 난 후에는 '음, 이 정도면 훌륭하지'라는 생각을 많이 하게 됐다. 앱 개발이 정말 힘들다는 것을 알고 난 다음엔 이해심이 많이 높아졌다"고 말했다.

간혹 앱을 사용하면서 개발자에 대한 경외감이 드는 경우도 있다. 박씨는 "다음웹툰은 잘 만든 모바일 앱이다. 모든 대표 이미지들에 애니메이션이 적용됐다.


화면 좌상단에 □, ○, * 같은 단순한 형태를 이용해 재밌는 효과를 적용했다. 박씨는 "거의 모든 화면 전환이 물 흐르듯 자연스럽다. 다음웹툰이 현재 버전으로 업데이트됐을 때 감탄을 계속했다"고 했다.

개발자의 관점에서 '아름다운' 결과물의 기준은 제각각이지만 프로젝트의 완성도를 중요하게 여기는 것은 공통된 인식이다. 김씨는 기본에 충실한 프로그램을 볼 때 아름답다 느낀다. "똑같이 프로그램을 만들어도 어떤 프로그램은 작동하긴 하지만 구현 방법이나 구조가 비효율적이라 나중에 확장하거나 수정하기 어려운 경우가 있습니다. 반대로, 쉽게 관리가 가능하고, 확장성도 뛰어나며, 성능도 탁월한 경우가 있습니다. 저는 쉽고 효율적인 방법으로 구현돼 있으면서도 기본기가 탄탄한 프로그램을 볼 때 아름답다고 느낍니다."

◆"개발을 배우고 싶다면 하루 빨리 시작하세요"


한국의 개발자들은 한국어 다음으로 많이 쓰는 언어가 프로그래밍 언어다. 외국어를 익히듯 모든 사람이 코딩을 배워야 하는지에 대해선 의견이 분분하지만 개발자들의 조언은 한결같다. 주변에서 '이런 서비스를 만들고 싶다'는 이야기를 들을 때마다 박씨의 생각 속 알고리즘은 하나의 결론에 도달한다.

"코딩을 배울지 말지는 개인이 선택하는 영역이긴 하지만, 배워두면 무조건 좋다고 생각합니다. 개발을 배우면 본인이 만들고 싶은 서비스를 얼마든지 만들 수 있습니다. 일상이 크게 달라지진 않겠지만 개발을 배우면 일상의 인사이트를 통해 하나의 멋진 서비스를 만드는 사람이 될 수 있습니다. 개발을 배우고 싶다면 망설이지 말고 하루 빨리 공부하는 것을 추천합니다. 정말 쉽지 않은 일이니까요."

개발자를 꿈꾸는 고등학생들에게 Include는 개발자로서의 기본기를 탄탄히 할 것을 강조한다. "고등학교에서 수학·영어를 배울 당시에는 크게 체감되지 않지만, 개발자가 될 경우 그때 배워둔 기본기에 따라 성장 속도와 실력이 달라집니다. 개발하기 위해 레퍼런스를 찾아보거나 논문을 읽을 경우 대부분의 자료가 영어로 쓰여 있습니다. 영어 능력이 굉장히 중요합니다. 또 전산학의 많은 분야는 기본적인 수학적 이해를 요구하는 경우가 많습니다. 고등학생 시절은 이런 기본기를 탄탄히 쌓기에 아주 적합한 시기입니다."

최근 정보기술(IT)·스타트업 업계에서 불붙은 개발자 확보전은 대학 인문사회계열 학과 학생들까지 '네카라쿠배당토(네이버·카카오·라인·쿠팡·배달의민족·당근마켓·토스)'를 주문처럼 외우며 코딩 공부에 매진하는 상황을 촉발했다. 단순히 네카라쿠배당토 취업에만 목매지 않고 개발자로서 자기 역량을 펼쳐보기를 꿈꾸는 이들에게 Include는 자기만의 강점을 살릴 수 있는 분야를 개척하라고 조언한다.

"단순히 코딩을 잘한다고 해서 뛰어난 개발자가 되지는 않습니다. 뛰어난 개발자는 코딩 외에도 딥러닝, 컴퓨터 비전, 강화학습, 물리학 등 자신만의 분야와 컴퓨터 공학이라는 분야에 충분한 내공을 가지고 자신의 아이디어를 구현해내는 사람입니다. 코딩은 아이디어를 구현해내는 수단일 뿐입니다. 인문사회계열 학생들도 본인이 잘 아는 분야의 아이디어를 구현해 의미 있는 프로그램을 개발할 수 있다면 충분한 경쟁력이 된다고 생각합니다."

◆"Linux 창시자인 리누스 토빌즈가 롤 모델"


518778 기사의 4번째 이미지 이미지 크게 보기

리누스 토르발스. "말은 쉽지. 코드를 보여줘(Talk is cheap. Show me the code)" [사진=The Faces of Open Source Project]

방에서 키보드만 두드려도 세상을 바꿀 수 있다고 믿는 개발자들에게도 롤 모델은 있다. 오픈소스 운영체제(OS) '리눅스(Linux)'를 창시한 리누스 토르발스(Linus Torvalds)가 일례다. 김씨는 "토르발스는 자신의 코드에 대한 명확한 철확한 기준을 가지고 있다. 아름다운 코드의 의미를 잘 아는 사람이다"며 "자신의 프로젝트를 오픈소스로 공개해 컴퓨터 공학의 발전에 지대한 공헌을 했다"고 말했다.

Include의 KAIST 학생들은 유행을 초월한 핵심적인 결과물을 세상에 내놓는 날을 꿈꾼다. 박씨는 "사람들이 매일 1분 이상 사용하는 앱을 만들고 싶다. 사용자들의 일상에 제가 만든 서비스가 자연스럽게 적용됐으면 좋겠다"고 말했다. 김씨는 "쉽고 직관적이면서도 강력한 기능을 제공하는 딥러닝과 컴퓨터 비전 프레임워크를 개발하고 싶다"고 했다.

개발자는 늘 새로운 무언가를 배운다. 시시각각 새로운 기술이 출몰하는 개발 분야에서 살아남기 위해선 끊임없는 공부가 필요하다. 새로운 것을 배우고 받아들이기를 즐기는 자세야말로 개발자에게 요구되는 덕목으로 꼽힌다. 이는 Include에 모여든 KAIST 학생들의 공통점이기도 하다. 이들은 개발자에게 필요한 삶의 자세를 이같이 정의하고 있다.

"개발자는 항상 배우고 새로운 걸 받아들이려는 자세가 중요한 것 같습니다. 늘 배우고 공부해도 다음날이면 새로운 논문이 나오고, 다른 배울 거리가 생깁니다. 끊임없이 공부해야만 살아남는 분야인 것만은 확실합니다. 때로는 벅찰 때도 있지만 다른 한편으로는 즐겁습니다."

문광민 기자
[ⓒ 매일경제 & mk.co.kr, 무단전재 및 재배포 금지]