월간 지앤선

인터뷰 및 편집 : 아델라 월간지앤선 편집장

 

월간지앤선 3월호에는 김용균(@haruair) 엔지니어를 소개합니다. 용균님은 한국에서 개발을 시작했으며, 호주로 이주하여 웹 개발을 했으며, 현재는 미국에서 컴퓨터사이언스를 공부하고 계십니다. 토이프로젝트로 꾸준히 실력을 갈고닦을 뿐만 아니라, 주변의 개발자들이 용기를 내어 계속 발전하고 나아갈 수 있도록 항상 지지해주는 멋진 분이세요. 오늘은 용균님이 개발자로서 어떤 길을 걸어오셨고, 또 앞으로는 어떤 목표를 가지고 있는지 여쭤보겠습니다.


 

안녕하세요, 김용균입니다. 문제를 해결하기 위해 작고 단단한 코드를 작성하는 일을 합니다.

웹의 자유로운 접근성을 좋아합니다.

프로그래밍 언어, 소프트웨어 아키텍처, 커뮤니티에 관심이 많습니다.

지금은 캘리포니아 리버사이드에서 공부하고 있으며 커뮤니티 이상한모임에서 활동하고 있습니다.

 

 

Q. 용균님은 프로그래밍을 어떻게 접하셨나요?

제가 태어날 적부터 아버지께서 업무에 컴퓨터를 사용하셨기 때문에, 자연스럽게 어려서부터 컴퓨터를 가까이 할 수 있었던 것 같아요. 초등학교 컴퓨터 활용 수업을 꽤 열심히 참여했었고, 거기서 처음으로 HTML을 접하기도 했습니다. 당시에는 인터넷 익스플로러 3.0을 사용했었는데, 선생님께서 넷스케이프가 더 좋다고 추천해주셨던 것도 기억나네요. 가상동물 키우는 웹사이트가 유행했을 때, HTML과 JS로 페이지를 꾸미기도 했었어요. 

 

정확한 시기에 무엇을 익혔는지는 잘 기억이 나지 않지만, 유행과 관심에 따라 가랑비 옷 젖듯 프로그래밍을 시작했습니다. 네띠앙에서 제공하는 호스팅에 marquee 태그로 웹페이지를 만들기도 하고, IRC 클라이언트에서 스크립트로 대화하는 봇을 만들기도 하고, 게임 메크로를 작성하기도 하고, 플래시 책을 사서 설명을 따라 게임을 만들곤 했습니다. 심각하게 프로그래밍을 따로 배운 적은 없고, 놀이처럼 임했던 것 같네요.

 

Windows 기본 메모장에서 무언가를 만들기도 해서, 지금까지도 ‘불편한 것’에 좀 무딘 것 같아요. 만들고 싶은 무언가에 집중하며 주어진 것에 잘 만족하는 편입니다. 예전에는 Windows 메모장에서 실행 취소가 한 단계만 가능했었기 때문에 메모장을 여러 개 켜놓고 창을 오가면서 코드를 보관하기도 했었습니다. 그래서인지 아직도 Windows + R 키를 눌러서 notepad 프로그램을 실행하는 게 익숙하더라고요. 

 

도구를 잘 쓰는 분들을 보면 부럽고, 놀라워 늘 배우게 됩니다. 그분들을 통해 ‘이건 불편한 거였군' 하고 그때그때 배우고 개선하고 있습니다.

 

Q. 프로그래밍에 익숙해졌다고 생각이 들었던 적은 언제였나요?

트러블슈팅에 막힘이 없으면 익숙해졌다고 볼 수 있을 것 같아요. 세세한 스펙이나 기능은 잘 알지 못하더라도 흐름이라든지 전체적인 개념을 이해하고 있으면 어떤 키워드로 검색하고 무슨 레퍼런스를 찾아봐야 하는지 파악할 수 있게 되더라고요. 처음 보는 내용이라도 결국은 비슷한 개념을 사용한다는 걸 알게 되는데, 그러한 유사성을 찾아내고 문제에 접목하여 해결점을 찾는 과정에서 ‘프로그래밍에 익숙해졌구나' 느낍니다. 

 

저는 혼자 무엇을 만들어보는 과정 자체를 좋아해서 코드로 똑같은 작업을 하다 보니 프로그래밍 실력이 늘었던 것 같아요. 크고 작은 트러블슈팅 경험이 많은 도움이 되었습니다. 트러블슈팅 경험을 늘리려면 다양한 코드를 많이 작성해봐야 하는 것 같습니다.

 

문제를 해결하다 보면 그 방식을 적용하기 위해 이해해야 하는 분량이 많거나 직관적으로 생각하기 어려운 수준일 때도 있는데요. 이를 해결하기 위해 이해에 도움이 될 만한 글을 찾아 번역해서 블로그에 올리거나 내용을 정리해서 게시했었습니다. 점점 이해도도 높아졌고, 설령 잊어버리더라도 다시 블로그에서 손쉽게 찾을 수 있었습니다. 처음엔 블로깅에 시간이 오래 걸렸지만, 반복하다 보니 금방 익숙하게 쓸 수 있었습니다.

 

그런데 이런 경험이 직접적으로 프로그래밍 실력을 향상하기 위해서 했다고 말하기에는 좀 부끄럽습니다. 결과물을 내는 과정 자체를 좋아하고 그런 과정을 반복하다가 자연스럽게 기술을 습득한 경우 같거든요. 이 과정이 간접적으로 도움이 될 수 있을지는 몰라도 이 방법으로 프로그래밍 실력을 올린다고 말하기엔 어려운 것 같아요. 문제 해결에 익숙해진 것이라고 얘기하는 게 더 맞는 듯합니다.

 

Q. 프로그래밍 중에 어렵다 느껴지실 때는 어떻게 하세요?

 

저는 아무래도 분야에 대한 깊은 지식이 부족하다고 느낄 때에 어려웠던 것 같습니다. 예전에 ‘브라우저가 어떻게 메모리를 활용하는지’에 대한 이야기를 커뮤니티에 공유했던 적이 있었습니다. 전공하신 분들은 ‘학교에서 이미 배웠었던 내용이었는데, 그 개념이 여기에도 적용되는군요’라고 말씀하시더라고요. 스스로 찾아 공부하는 것은 한계가 있다는 생각을 많이 했습니다. 물론 컴퓨터과학과를 전공하지 않고도 잘하는 분도 많이 계십니다. 저 역시 그분들을 존경하지만, 그동안 가보지 않았던 길에 대한 궁금증이 커져 다시 학교로 오게 되었습니다.

 

학교에 오기 전에는 나름의 방법으로 극복을 하고자 했었습니다. 우선, 문제를 키워드로 정리하고 그 키워드로 구글링하다 보면 대부분 답을 찾을 수 있었습니다. 키워드로 문제를 정의하기 어려우므로 ‘어렵다'라고 느끼는 것 같아요. 아는 키워드를 늘리려면, 결국 영어 단어를 외우듯 키워드를 많이 접해보고 써봐야 합니다. 블로그에 문제와 이를 해결한 경험을 키워드로 적어놓는 습관이 도움이 되었습니다.

 

또한, 이상한 모임 커뮤니티, 트위터, 페이스북 그룹을 통해 알게 된 분들에게 여쭤봐 방향을 구하기도 했습니다. 커뮤니티 활동이 좋긴 하지만 질문하는 방법을 잘 알고, 또 제대로 질문해야 도움을 적절히 받을 수 있다고 여깁니다. 제대로 조사를 해보지 않고 대충하는 질문은 무례하게 느껴질 수 있기 때문에요. 답변해주는 사람도 요점만 추려 쉽게 답할 수 있도록 질문이 잘 정리가 되어 있어야 하거든요. 

 

저는 질문을 올리려고 정리하다 보면 스스로 실마리를 찾아서 문제를 해결하는 때도 꽤 있었습니다. 비단 저만 겪는 건 아닌 것 같습니다. 질문 글 올리자마자 답을 찾았다거나 하는 것을 자주 볼 수 있거든요.

 

Q. 프로그래밍하면서 어떤 경우에 자기효능감을 갖게 되나요?

뭐든 만들고, 그 결과를 볼 때 자기효능감이 높아졌던 것 같습니다. 이케아 가구는 사람들이 직접 조립하기 때문에 더 애착을 갖게 된다고 하듯, 저도 직접 만든 도구나 프로그램을 쓰면서 ‘필요로 한 것을 만들어내었다’는 만족감을 많이 느꼈습니다. 물론 제가 만든 것들이 아주 훌륭한 품질이라고 할 수는 없겠지만, 물리 수업을 듣는다고 모두가 뉴턴처럼 연구 결과를 내야 할 필요는 없는 거잖아요? 

 

‘나는 너무 못해’라고 생각하면 계속 못 한다고 생각하게 되는 것 같습니다. 다른 사람이 간 길을 따라가 보며, 계속 반복하면서 익히다 보면 점점 익숙해져서 숨 쉬는 것만큼이나 잘하게 될 거라고 생각합니다.

 

Q. 프로그래밍을 처음 시작하는 분들에게 나눠주고 싶은 용균님만의 노하우가 있나요?

경험의 폭을 늘리는 노력이 많은 도움이 되는 것 같습니다. 본인의 직접적인 경험도 포함되고 다른 사람이 공유하는 글이나 영상을 보는 간접적인 경험도 포함됩니다. 궁금한 분야는 커뮤니티를 찾아 참여해보세요. 어떤 사람이 분야의 리더인지도 찾아보고, 공유하는 글도 읽어보세요. 프로그래밍 실력을 늘리고 싶다면 코드를 많이 작성해보세요. 오픈소스로 공개된 코드도 많이 찾아 읽어보세요. 이미 알고 계실 법한 조언이지만,  아는 것과 실천으로 옮기는 일은 차이가 정말 크다는 걸 저도 늘 느낍니다.


궁금한 문제의 답을 알고 있는 사람이 있다면 연락해보세요. 생각보다 많은 분이 고맙게 시간 내줘 답장해주실 겁니다. 저도 그렇게 메일을 보내고 받은 답장이 큰 도움이 되기도 했고요. 그래서 저도 그런 메일을 받을 때마다 답장을 꼭 하고 있습니다. 다만 질문할 내용을 잘 쓰셔야 합니다. 예를 들면 “토익 600점 나오는데 해외 생활 잘 할 수 있을까요?” 같은 질문은 누구도 답하기 어려우니까요.

 

Q. 용균님은 프로그래밍이 어떤 점에서 좋은가요?

삶에서 겪을 수 있는 다양한 문제를 유연하게 해결할 수 있다는 점에서 매력을 느낍니다. 실생활에서 휴대하고 다니며 사용할 물리적인 계산기를 만드는 일은 개인이 하기에 쉽지 않을 수도 있지만, 프로그래밍으로 계산기 소프트웨어를 만드는 일은 가능하니까요.

 

프로그래밍은 제 삶에 스며들어있기도 합니다. 전에는 반복되는 작업을 컴퓨터에 맡기면서 지냈는데,  요즘에는 제가 반복적으로 해야 하는 일을 컴퓨터가 저에게 계속 지시하게끔 만들고 있습니다.

 

복잡하거나 시간이 걸리는 과정을 단순하게 만들고 편하게 해결하도록 도구를 만드는 일이라는 점에서 프로그래밍은 참 즐겁습니다. 단순히 반복되는 데 쓰이는 시간을 줄일 수 있는 것만으로도 삶에 큰 도움이 된다고 생각해요. 

 

Q. 가장 좋아하는 프로그래밍 언어는 무엇인가요?

생각나는 대로 말씀드리자면, JavaScript가 가장 익숙하고 말랑해서 좋아합니다. 최근 들어 이것저것 만들어볼 수 있는 언어가 되어서 더 재미있는 것 같아요. 튼튼하고 현대적이고 세련되어서 좋아하는 언어는 C#인데 더 깊이 있게 써볼 기회가 생겼으면 좋겠습니다. 최근 학교에서는 C++를 재밌게 배우고 있습니다. 평소에 만들어보지 않았던 것들을 개발할 수 있도록 하는 언어인 것 같습니다.

 

Q. 가장 선호하는 프레임워크는 무엇인가요?

최근에는 react-native로 앱을 많이 만들어서 재미있게 쓰고 있습니다. 웹 프레임워크는 사용해본 지 시간이 좀 지나서 하나 정하기가 조금 어렵네요. 앱에 들어가는 API는 Azure Functions로 간단하게 작성하고 있습니다.

 


 

김용균님의 블로그 운영 이야기, 토이프로젝트 개발 이야기, 커뮤니티 참여 이야기, 그리고 해외 생활 이야기가 궁금하시다면, [2020릴레이인터뷰] 세 번째 주자, 엔지니어 김용균 (2) 편을 기다려주세요 :)