본문 바로가기

INTERVIEW

<세상의 모든 직업, 세상의 모든 인터뷰 ③ 편> 소프트웨어 개발자 최창용 수석 연구원님을 만나다 : 좋은 소프트웨어 개발자가 되려면

많은 소프트웨어를 공부하시는 분들이 현직에 나가서 어떻게 하면 프로로서 좋은 개발자가 될지 고민하고 있습니다. 취업으로 직결되는 자신만의 내공을 어떻게 하면 더 강력하게 만들 수 있을지 소프트웨어 개발 업종에서 20년간 근무한 프로 개발자의 얘기를 들어보았습니다.

 







Q.

안녕하세요 최창용 연구원님, 어떤 일을 하시고 계신가요? 또 어떤 소프트웨어를 개발하시는 일을 하고 계신가요?

 

A.

정확하게 어떤 소프트웨어를 개발하였는지 말씀드리기는 어렵습니다. 저는 지난 20년간 휴대전화, 스마트폰, PC 등 정말 다양한 디바이스에 들어가는 소프트웨어를 개발 했습니다.

그 중 여러분들께서 알만한 소프트웨어도 꽤 있을 수 있겠군요. 지금은 모 기업에서 소프트웨어개발 수석 연구원직을 맡고 있고요.




Q.

저도 요즘 컴퓨터 공부를 시작하였는데요, 검정화면에 암호문처럼 쓰여있는 컴퓨터 언어를 보면 정말 진절머리가 난답니다. 연구원님께서는 이런 코딩을 업으로 삼고 계신게 참으로 존경스럽게 느껴집니다. 소프트웨어의 어떤 매력에 빠져서 개발자 일을 택하셨나요?

 

A.

원래 처음에는 누구나 그렇습니다. 저도 영어나 컴퓨터 언어를 처음 배울 때 추상화를 보는 느낌이었습니다.

꾸준히 하나 하나 익혀 나가면 그 진절머리 나는 암호문에 친숙해 질 수 있었습니다.

저도 처음부터 장래 희망이 개발자는 아니었습니다. 무심코 기입한 2 지망 학과가 컴퓨터 전공이었고 공부하다보니 어느순간 개발자 직업을 가지게 되었습니다.

허나 저는 항상 무언가 만드는 직업에 대한 관심이 있었어요. 그것이 무심코 달려온 개발자 직업에 흥미를 갖게 하고 또 열심히 하게 만든 원동력이었던 것같아요




Q.

코딩을 하다보면, 왜 오류가 나는지 모르겠고 너무 짜증이 날 때가 있는데요(모니터를 부숴버리고 싶을 정도로) 연구원님께서는 그런 일은 없으신가요? 그럴 때는 어떻게 극복하시나요?

 

A.

프로그램 구현 후에 버그가 있는 것은 당연한 일이며 그렇기 때문에 개발 업체에 프로그램 전문 검증자들이 많이 고용되고 있습니다.


기억해야할 것은 오류는 개발자 스스로 만드는 것이지 컴퓨터가 만드는 것이 아니라는 마인드로 수긍해야 합니다. 컴퓨터는 절대 거짓말을 하지 않거든요.

물론 버그가 적은 프로그램을 구현하기 위해서는 알고리즘 설계를 잘 하는 것이 우선되어야겠지만 말입니다.


프로그램은 개발자가 구현한 대로 작업을 수행하므로 로그를 통해 주요 변수들에 대한 값을 잘 확인하여 오류를 찾아내야 하며 경험 축적으로 디버깅 실력은 늘 수 있습니다. 이 또한 경험이라는 말밖에 드릴 수 없겠네요




Q.

개발자는 꼭 컴퓨터를 전공한 사람만이 될 수 있나요?

어떤 덕목이 필요한가요?

 

A.

실제로 현직에 있어보면 컴퓨터나 소프트웨어를 전공하지 않은 사람도 개발자로 참여하는 경우도 많습니다. 특히, UX(User experience : 사용자 경험)디자인 할 때에는 일부러 사용자의 눈높이에 맞추어 디자이너, 인문학 전공자 등 꼭 컴퓨터 전공자가 아니라 다양한 컨텐츠와 경험이 많은 개발자가 참여하는 경우는 허다합니다.

 

그러나 개발자를 하겠다면 꼭 컴퓨터 개발에 필요한 기본을 소홀하지 않는 마음가짐이 필요합니다. 학교에서 배우는 프로그램 언어는 언어의 알파벳입니다. 신입 개발자에게 알파벳으로 거대한 문학작품을 만드는 것을 기대하지 않습니다. 01로 움직이는 컴퓨터의 기본 원리를 제대로 이해하고 있으면 어느 순간 새로운 기술을 익히더라도 눈에 띄게 빠른 성장을 보일 수 있습니다.

 

새로운 직원들이 이 기본기가 얼마나 중요한지 잘 모르는 경우가 많은 것같습니다. 그러나 꼭 명심하길 바래요. 제가 이 분야에 몸담은지 한 20년 되었는데요 기본이 튼튼한 개발자는 그냥 거짓말안치고 딱보면 바로 알 수 있습니다.




Q.

개발자로서의 기본기라면 구체적으로 어떤 것들이 있는지 알려주실수 있으세요?

 

A.

다들 컴퓨터 공부하실 때 학습하게 되는 이론 과목들이 있습니다. 예를 들어, 프로그래밍 언어론, 자료구조, 알고리즘 등이 있지요. 저는 특히 프로그래밍 언어론을 강조 하고 싶습니다. 세상에 새로운 언어는 정말 끈임없이 나오고 또 새로운 모습으로 탈바꿈 하고 있습니다. 프로그램 언어가 어떻게 만들어졌는지 그 원리를 제대로 학습할 필요가 있습니다

 

그리고 자료구조 이론을 정말 강조하고 싶습니다. 데이터가 어떻게 쌓여가는지 학습하는 것은 개발자로서 기본중에 기본입니다. 현직에 나와서 보니 정말 이 자료구조론이 중요하다는 것을 깨닫고 다시 교과서를 다시 펴고 혹독하게 다시 공부하였습니다. 오랫동안 개발하는 일을 참여하였지만 아직도 이런 기본기가 부족하다는 생각이 듭니다.




Q.

연구원님께서 컴퓨터를 배우셨을 때에 비해 소프트웨어는 엄청 많이 변했을 줄로 압니다. 연구원님께서는 그런 면에서 계속 새로운 것을 학습하셨을 텐데, 새로운 걸 계속 배우시는게 힘드시지는 않으신가요? 새로운 걸 소화해내시는 비결이 있을까요?

 

A.

현직에 나와도 여전히 기술세미나라든가, 다방면으로 새로운 기술들을 습득하기 위해 부단히 노력하고 있습니다. 헌데, 소프트웨어의 발전은 점점 가속도가 붙고 있으나 변하는 것은 사실 대부분 응용 지식이라고 생각합니다.

그래서 아까도 말씀드렸지만 중요한 것은 변하지 않는 기초 지식입니다. 기초 지식이 탄탄하다면 응용 지식들을 수월하게 학습할 수 있기 때문입니다.

 

새로운 지식을 습득할 경우 Grouping하여 중요도에 따라 시간 투자나 지식 습득 방법 (인터넷, , 사람 등) 등을 적절히 설정하여 학습하는 것이 효율적일 것 같습니다.




Q.

그럼 학창시절에는 컴퓨터 공부를 어떻게 하셨습나요? 영화에 나오는 것처럼 혼자 좋아서 이것저것 스스로 코딩하여 만들어보고 그러셨나요?

 

A.

컴퓨터 전공은 사실 아까도 말씀드렸지만 무심코 기입한 2 지망 학과였기 때문에 코딩 지식이 전혀 없었습니다. 그런데 학교 와서 보니, 강의는 코딩 지식이 있는 것을 전제로 진행이 되는 강의들이 좀 있었습니다.

그런 강의들 때문에 사실 처음에는 코딩에 대한 흥미가 생기지 않아 혼자서 이것저것 코딩을 해 보는 것은 하지 않았습니다. 교수님이 내 주신 개별 또는 팀 코딩 과제는 열심히 했었죠.

그러나 기초 지식을 배우는 알고리즘, 자료구조, 이산수학 등을 정말 열심히 수업을 듣고 학점도 잘 받았었습니다. 기초 지식이 쌓이다 보니 코딩을 습득하는 능력에도 가속도가 붙었고 나중에 개발자를 직업으로 가지면서 코딩에 더욱더 흠미를 가지게 되었습니다.

영화에서 과장되게 보여주는 천재 괴짜들 같이 공부하지는 않았습니다. 잔소리를 좀하자면, 아까도 말씀드렸지만, 컴퓨터를 전공으로 하겠다면 그런 멋진 이미지에 빠져 코딩만 하지말고 학부생때 기초과목을 탄탄히 공부할 것을 추천드리고 싶네요 그게 나중에 실력을 높이는데 훨씬 도움이 되기 때문입니다.




Q.

연구원님께서 코딩실력이 늘려면, 좋은 코딩을 많이 읽어보라고 하셨는데 그 말씀이 조금 이해가 되지 않습니다. 그냥 남들이 써놓은거 읽어보기만하면 되나요? 어떻게 해야 소화를 시킬수 있을까요?

 

A.

제가 다른 사람이 구현한 좋은 코딩을 읽으라는 뜻은 직접 컵퓨터로 쳐 보고 결과를 확인하는 과정에서 내면화하라는 것이었습니다.

영어 공부를 잘 하기 위해서 좋은 문장을 글로 써 보거나 원어민과 대화를 해 보는 것이 도움이 되는 것과 유사한 것입니다.

코딩 초급 단계에서는 더더욱 도움이 될 것입니다. 어느 정도 익숙해지면 작은 프로그램이라도 좋으니 직접 설계, 구현, 검증, 디버깅 및 수정을 하는 과정을 되풀이하면서 실력을 쌓으시면 좋습니다. 컴퓨터를 배우신다면 꼭 직접 해보세요!




Q.

많은 젊은이들 사이에서 코딩 열풍이 불어 너도 나도 사교육을 막론하고 코딩 공부를 하고 있습니다. 그러나 제 개인적인 의견으로는 프로그래밍 언어를 다루는 아는 얇은 수준으로는 어느 분야에 일을 하게 되든, 현업 레벨에서는 취업에 도움이 되거나 스스로의 몸값을 올린다는 점에서는 무의미하다고 생각합니다. 그냥 이력서에 나 코딩 공부했음한 줄 정도로 그칠 것 같습니다. 전공한 수준이 아니고서야 현업에서 어플 개발에 참여할 수도 없고, 시스템을 개발할 수 도 없기 때문입니다.

연구원님께서는 비전공자의 코딩 열풍을 어떻게 보시나요?

 

A.

가끔 그런 모습을 볼 때마다 안타깝다는 생각이 듭니다. 컴퓨터를 다루고 컴퓨터 프로그램을 사용하는 것은 어떤 직업을 가지든지 필요한 일입니다. 그러나 물론 다르게 생각하시는 분들도 있을 수 있지만, 현업에서 종사하는 사람으로서 말씀드리자면 코딩이 과연 그렇게 필요한 것인지 의문입니다.

코딩은 누구나 할 수 있지만 반면에 직업으로서의 코딩은 엄연히 다른 문제입니다.

제가 지켜 본 바로는 부전공으로 컴퓨터를 배웠으나 코딩 실력을 키우는 것을 열심히 하지 않았거나 대기업에서 공채로 들어와 회사에서 컴퓨터 코딩을 배운 개발자 중에 제 역할을 수행하지 못하는 경우를 많이 보았습니다.

다만, 공채가 사라져 가고 있고 프로그램 코딩 시험을 통해 개발자를 뽑는 회사도 생기고 있는 것에서 희망을 보고 있습니다.




 

Q.

개발자를 꿈꾸는 젊은이들에게 해주고 싶은 말씀이 있으실까요?

 

A.

보통 소프트웨어 개발자라하면 어두운 방에서 검정 화면을 띄워놓고 고독하게 코딩을 많이들 떠올리실 겁니다. 그러나 실상 그렇지 않아요. 한 소프트웨어에 상용화 되기 위에서 보통 몇 만줄 심지어 몇 백만줄의 코딩을 읽고 써야합니다. 혼자서는 절대로 못하죠. 소프트웨어 개발자의 가장 핵심 덕목은 팀워크입니다. 개인 개발자가 아니고서는 혼자만 잘나서는 절대 개발할 수가 없어요. 비단 대기업 뿐 아니라 작은 어플을 개발하는 중소기업일지라도 혼자서만 할 수 없어요.

각 개발하는 회사마다 서로 코딩한 것들을 이해하기 쉽게 정해진 규칙이 있습니다. 예를 들어, 암호처럼 자기만 알아보도록 작성할게 아니라 코딩할 때 들여쓰기는 몇칸, 함수 작성할 때는 대문자를 붙여서 등 항상 팀워크를 염두하고 개발하는 마음가짐을 지녀야한다는 것을 기억하길 바랍니다. 이런 작은 것들이 스스로를 정말 같이 또 일하고 싶은 개발자로 거듭나게 합니다. 이는 곳 개발자 업계에서의 자신의 몸값으로 직결되기 마련이지요.