디케이아이테크놀로지

직무인터뷰 > 모바일개발

프로그래밍의 꽃은 서로를 보완하는 협업이죠

2021-11-03 09:42 조회수 3,005 Tag #DKI TECHNOLOGY #DKI테크놀로지 #모바일개발

DKI테크놀로지는 여의도에 위치한 17년된 IT 회사다. SI로 시작했지만 현재는 SI 와 솔루션을 병행하며 점점 솔루션 분야로 궤도를 수정하고 있다. 10년 가까이 근무하면 DKI테크놀로지와 함께 변화와 성장을 거듭해 온 컨버전스 연구소 신동현 부장과 자세한 이야기를 나눴다.

DKI TECHNOLOGY

컨버전스 연구소
신동현 부장

 

 

간단한 자기소개 부탁드립니다.

안녕하세요. DKI 테크놀로지의 컨버전스 연구소에서 10년째 근무하고 있는 모바일 개발자 신동현입니다.

 

맡고 계신 Argos MDM Agent(Android, iOS) 개발 업무란 무엇인가요?

MDM 은 Mobile Device Management의 약자로, 기업에서 IT 관리자가 기업용 모바일 기기(태블릿, 폰)를 제어하고 기업용 보안 정책을 적용할 수 있도록 도와주는 시스템을 의미합니다. MDM 서버, 관리자 콘솔 페이지와 함께 각 디바이스(iOS, Android)에 설치되는 Agent 제품으로 구분되는데요. 저는 디바이스(Android, iOS 등)의 의존적인 부분을 관리하고 있습니다. 개발자이긴 하지만 솔루션 개발 특성상 제품의 기획, 설계부터 구현, 유지보수까지 모두 커버합니다.

 

유지보수도 진행하신다고 들었어요.

유지보수는 정기적인 점검을 통해 발견된 이슈나 VOC(Voice of customers)로부터 발생하는 이슈를 처리해서 고객 문제를 해결하는 것을 말합니다. 2가지 중 VOC의 비중이 높은 편이며, 고객 층이 다양하고 많은 만큼 많은 VOC가 발생합니다.

일반적인 VOC 처리는 VOC발생(콜센터) > 이슈 기록 > 담당자 할당 > 이슈 해결 > 콜센터에서 고객 응대 순으로 진행됩니다. 고객 환경에 따라 이슈 해결을 위해 방문을 하는 경우도 있고 단말을 택배로 받아서 확인하는 경우도 있어요. App Crash는 인터넷이 가능한 환경에서는 Google Firebase Crashlytics를 이용해서 report를 받고 분석해서 대처합니다.

Interview 01

제품 기획부터 유지보수까지 모두 커버하는 개발 관리자


 

푸시 솔루션 개발 과정을 소개해주세요. 그리고 오류가 발생할 경우, 어떻게 대응하나요?

일반적으로 모바일 기기와 서버 간의 데이터 흐름은 모바일 기기에 설치된 앱이 서버 쪽으로 데이터를 요청하고 요청 결과를 수신하는 방식입니다.

Push란 이와 반대로 서버에서 특정 모바일 기기의 앱으로 데이터를 말그대로 Push 해주는 기술입니다. Google과 Apple에서는 이미 이 기능을 무료로 제공하는데요. 저희 Push 제품 군은 이런 Global push(Google, Apple)의 기능을 wrapping 해주는 솔루션과 스스로 서버 와 agent 연결 유지하는 Local push 로 나뉩니다.

주요 개발 작업은 기존의 구현된 코드를 최신 단말기 SDK에 맞춰 수정, 리팩토링하거나, 고객사에서 오류가 발생하는 부분 혹은 커스터마이징을 원하는 부분을 논의 후에 수정하는 작업들입니다.

오류 발생 시에는 최대한 비슷한 상황에 맞게 테스트 환경을 꾸미고 재현 테스트를 통해서 정확한 재현 경로를 찾고 이를 통해 디버깅하면서 문제를 수정합니다.

 

입사하자마자 캐나다로 장기 출장을 가셨다고 들었는데 어떤 업무를 하셨나요?

당시 회사를 옮기면서 새로운 직무에 도전한 것이라 두려움도 많았고, 자신감이 많이 떨어진 상태였습니다. DKI에서 첫 업무는 외산 MEAP(Mobile Enterprise Application Platform) 솔루션의 개략적 원리와 사용법을 해당 솔루션 본사 교육 세션(토론토 본사에서, 모두 영어로)을 통해서 익히고, 이를 통해 프로토타입 앱을 POC(Proof Of Concept)로 구현하는 프로젝트였습니다. 저는 Mobile 파트 중 Android, iOS 쪽 솔루션 라이브러리 포팅을 포함한 전체 개발을 담당했습니다. 영어로 진행되는 교육 세션도 힘들었고, 경험이 많지 않은 Android, iOS 개발에 더해 새로운 MEAP 솔루션까지 얹어 개발을 해야 하니 난이도도 높았고, 부담도 많았습니다.

하지만 결과적으로는 자신감도 얻고 프로젝트도 성공적으로 마무리하게 되어 아주 뿌듯했던 기억이 납니다. 어떤 문제라도 끝까지 버티면서 열심히 파다 보면 넘을 수 없는 벽처럼 보였던 것들도 결국 해결할 수 있다는 걸 배운 좋은 경험이었어요.

 

개발 업무를 총괄하며 가장 어려운 점은 무엇인가요?

IT 기술이 아무리 중요해도 결국은 혼자서 할 수 없고, 팀을 구성하고 유기적인 커뮤니케이션을 통해서 제품을 만들어 나가야 합니다. 때문에 커뮤니케이션이 가장 중요한 요소 중 하나인데요. 커뮤니케이션이 가장 어려운 부분 같습니다.

기존에는 열심히 정보를 퍼 나르거나 개선해야할 점을 지적하기만 했는데요. 사실 이런 식의 일방적인 정보 전달은 팀원들에게 잘 주입되지 않았습니다. 결국 상대의 마음을 알아주고 정보를 받아들일 수 있는 분위기를 만드는 것이 참 중요하다는 걸 깨달았습니다. 이것 역시 쉽지 않았죠(웃음).

 

분위기 조성을 위해 어떤 노력을 하시나요?

팀 빌딩이나 팀의 의사 결정 방식을 어떻게 커뮤니케이션해야 좋은 지 수시로 찾아보는 편입니다. 인터넷 기사, 블로그 포스팅, 유튜브를 자주 보며 실제로 배운 방법들을 스스로가 먼저 익히고 공유하려고 노력 중입니다.

또 시니어가 되니 주니어에게 위임하는 것, 그리고 개입해야 하는 포인트를 설정하는 것도 어렵게 느껴집니다. 마이크로 매니징과 위임의 적정한 언저리를 항상 고민하는 상태입니다. (현재 모바일팀은 주니어가 없어서 딱히 큰 관련은 없지만요.)

팀이 잘 굴러가야 저도 일에 집중할 수 있기 때문에, 팀장이 아님에도 팀 빌딩에 대해 공부하고 있습니다. 그리고 여러가지 대안들을 팀장님께 제안하고 팀원들에게 해보자고 독려하는 경우가 많아요.

Interview 02

자유롭게 문제를 공유하고 해결하는 근무환경


 

DKI테크놀로지의 개발팀 분위기는 어떤가요?

본인이 해결 가능한 간단한 레벨의 문제는 해결 후에 공유하는 편입니다. 실마리가 잡히지 않는 문제의 경우, 발견 시에 모두에게 공유하고 주로 채팅으로 수다를 떱니다. 수다를 떨다 보면 제가 보지 못하는 관점을 대화 중에 발견할 수 있고 그걸 통해서 문제가 풀리는 경우가 아주 많거든요. 현재 제가 속한 팀 내부의 모바일 개발자는 저 포함 2명인데 저는 항상 동료 부장님과 이야기하면서 코딩합니다. 리뷰를 부탁하기도 하고 제가 작성한 코드를 설명해주기도 하죠. 그렇다고 해서 하루 8시간 내내 붙어있는 것은 아니고 서로 집중하는 시간에는 방해하지 않습니다.

회의할 때는 시간을 정해 놓고 엄수하여 주제를 벗어나지 않을 것을 가장 중요한 목표로 합니다. 정해진 시간 안에 답이 안 나올 수도 있고 쓸데없이 길어지고 주제를 벗어나는 것을 방지하기 위함이죠. 회의 시간에는 주저하기 보다는 제대로 자기 의견을 주장하는 분위기입니다. 물론 시니어들의 목소리의 비중이 높을 순 있지만, 너무 참여율이 저조한 경우 중간중간 인위적으로 주니어들의 의사를 물어봅니다.

 

DKI테크놀로지 개발팀이 지향하는 목표가 있다면 무엇인가요?

개발 업무적으로만 보면 개발자가 개발과 커뮤니케이션에만 집중할 수 있는 시스템을 구축하는 것이 저희 팀의 목표입니다. 사실 더 중요한 목표는 현재 능력에서 최대한 좋은 가치를 만들어서 이를 통해 많은 수익을 내는 것이죠. 다만 기술 트렌드를 따라가는 게 중요하지만 그 이유가 단순히 남들을 따라가기 위해서가 되면 안되고, 생산성을 높이고 더 나은 수익을 내기 위해서 여야만 합니다.

Interview 03

개발은 문제의식과 기술, 협업으로 이루어지는 직무


 

학부생 때 진로 고민이 많았다고 들었는데 이후 진로 설정은 어떻게 하였나요?

저는 대학에서 컴퓨터 공학과를 전공했습니다. 대학 시절 학과 공부에 큰 매력을 못 느꼈어요. 갑자기 엄청난 자유가 주어지다 보니 후회하지 않지만, 되돌아 보면 방탕(?)한 세월을 보낸 것 같습니다. 졸업 후에 취직을 하고자 하니 막막 했고 자신감이 떨어졌었죠.

그래서 BIT 교육센터에서 전문가 과정을 수료했습니다. 요새도 이런 테크를 타는 젊은 분들이 많은 것 같아요. 그래서 전 교육기관 출신에 대한 안 좋은 선입견 같은 것은 없습니다. 지나고 보면 자기가 주도적으로 배우는 것하고 어쩔 수 없이 성적만 올리기 위한 배움은 너무 다른 것 같습니다.

학원 교육과정의 멘토였던 교수님의 추천으로 첫번째 회사 면접을 보게 되었고 첫번째 회사 취업에 성공했습니다. 3년 정도 첫번째 회사에서 일을 했습니다. 첫 회사에서는 OJT이후 초반 3개월 동안 코드는 보지도 못하고 PM옆에서 이메일 쓰는 법부터 배웠습니다. 지금 돌아보면 이런 과정이 있었기 때문에 단순히 코딩이 아니라 전체 프로젝트를 바라보는 안목도 생겼고, 기본적인 일 머리를 배웠다고 생각합니다. 이후 지인의 추천으로 DKI테크놀로지로 이직하게 되었고요.

 

개발자에게 필요한 핵심역량은 무엇이라고 생각하시나요?

업무 도메인에 대한 지식, 개발 분야 지식, 문제해결 능력, 프로의식, 커뮤니케이션 능력과 같은 것들이 바로 개발자에게 필요한 핵심 역량이라고 생각합니다.

개발 분야 지식은 꼭 모바일 파트가 아니더라도 이것 저것 가리지 않고 튜토리얼 정도는 해봅니다. 최근에는 python, vue.js, golang 등을 공부해서 업무에 사용하는 간단한 프로그램 등을 만들어서 활용 중입니다. 개발 관련 블로그, 뉴스 등은 흐름이라도 파악할 요량으로 자주 읽고 있어요. 하지만 신기술에 매료돼서 그것만 파고들면 안됩니다. 좋은 기술이 생산성으로 높여줄 수 있습니다만 개발자는 결국 어떤 가치를 고객에게 전달하는 것이 가장 중요한 목표이므로 주객이 전도되면 안되기 때문입니다.

앞서 말했던 협업도 중요합니다. 제가 직설적인 타입이라서 커뮤니케이션 부분을 보완하려고 여러가지로 노력 중입니다. 공격적으로 아프게 지적하고 얘기하지 않고 문맥을 충분히 설명하고 상대방이 잘 이해할 수 있게 또 부드럽게 얘기하려고 노력은 하지만 이 부분은 여간 어려운 게 아니네요.

Interview 04

하고자 하는 의지와 성장형 마인드셋이 필요


 

면접 참여 시 어떤 점을 중요하게 보나요?

결국 위에서 언급한 개발자의 덕목을 보게 됩니다.

<프로의식>
주니어에게는 약간 부담스러울 수 있지만 프로의식을 봅니다. 가끔 보면 아무 생각 없이 일을 배울 생각만 가지고 오시는 분들이 있어요. 하지만 세상은 철저하게 기브앤테이크입니다. 배움을 최소화하고 자기의 역할을 제대로 할 준비가 되어있어야 합니다. 요새는 IT 지식을 배우는 것이 크게 어렵지도 않죠. 코딩도 막히는 부분은 Google과 함께 찾아가면서 개발해도 됩니다. 중요한 것은 자기가 레벨이 낮을지 언정 프로라는 것을 인정해야 한다는 점입니다. 할당 받은 태스크를 약속한 기한 안에 마치려고 노력해야 하고, 팀원들과 정한 업무 규칙을 존중하려는 자세가 필요합니다.

회사를 절대 악으로 분류하고 돈 주는 만큼만 일하겠다는 의견이 많지만 저는 좀 다르게 봅니다. 불합리하다고 느껴진다면 반드시 목소리를 내서 피드백을 해야 합니다. 회사라는 존재는 고정된 돌같은 존재가 아니라 그 안에서 한 사람이 ‘어떤 행동을 하느냐’에 충분히 영향을 받습니다. 적어도 우리 팀은 그래왔습니다. 일을 열심히 해서 결과를 내고 그걸 바탕으로 목소리를 내면 바뀝니다. 제가 그렇게 해왔거든요.

<문제해결 능력>
결국 코딩은 문제를 계속 해서 해결하는 일련의 과정입니다. 논리적인 전개를 통해서 문제를 해결하려는 사람은 글이나 말도 논리적으로 풀어나가는 편이기 때문에 자기소개서나 면접 시 이 부분을 유심히 봅니다. 또 문제 해결을 위해서는 엉덩이가 무거워야 합니다. 풀리지 않는 문제에 대한 호기심과 궁금증을 참지 못해 반드시 해결해야만 하는 아주 약간의 강박을 가진 분들도 좋습니다. 그러나 문제해결 능력이 없어도 이 부분은 배우면 되기 때문에 이 항목은 플러스 알파 정도라고 생각합니다.

<코딩에 대한 애정>
일이 항상 즐거울 수는 없습니다. 내가 좋아하는 것만 코딩하라고 회사에 다니는 게 아니라 가치를 창출해서 이익을 만들어 내기 위해서 코딩을 해야 하기 때문이죠. (어떤 때는 나와 맞을 수도, 그렇지 않을 수도 있습니다.) 그럼에도 불구하고 코딩에 대한 애정이 있는 사람을 선호합니다. 잘 짜인 코드를 보며 감탄할 줄 알고, 스스로도 멋진 코드를 짜고 싶어하는 마음을 가지는 사람이 좋습니다. 이런 분들이 더욱 성장해서 제 옆에서 코딩하는 동료가 된다고 생각하면 너무 든든하죠.

단, 자신의 코드를 자신과 동일시하는 것은 주의해야 합니다. 가볍고 쉽게 바꿀 수 있는 코드가 가장 좋습니다. 내 코드를 사랑하는 것과 코딩을 사랑하는 것은 아주 많이 다르거든요.

<커뮤니케이션 능력>
어떤 슈퍼스타가 와도 혼자서 큰 시스템을 만들 수는 없습니다. 구멍 없는 설계는 없고, 버그가 없는 프로그램도 없습니다. 프로그래밍의 꽃은 적절한 커뮤니케이션으로 서로가 서로를 보완할 때라고 생각합니다.

커뮤니케이션의 가장 중요한 요소는 피드백이라고 생각합니다. 동료가 한 말을 내가 어떻게 받아들였는지, 최근에 마무리한 태스크가 버겁지는 않았는지, 코딩하면서 새로 알게 된 것을 공유한다 던지 하는 피드백이 없다면 점점 서로의 사인이 맞지 않게 되고 결국 도서관 같은 분위기에 코딩만 하다가 집에 가는 분위기가 나옵니다. 서로 대화에서 오해가 계속 생기다 보니 잘못 이해해서 잘못 구현하는 경우도 많이 생기구요.

면접 시에는 대화를 진행하는 어투나 자신의 의견을 개진하는 과정, 그리고 특정 상황에서 어떻게 행동할 것인지에 대한 질문 등으로 판단합니다. 다만 사실 면접에서 위에 열거한 역량의 보유 여부를 정확히 판단하는 것은 어렵다고 봅니다. 그리고 이러한 역량이 없어도 크게 문제가 되지는 않습니다. 가장 중요한 것은 하고자 하는 의지와 성장형 마인드 셋이라고 생각합니다.

 

개발자가 되기 전 준비하면 좋은 경험을 추천해주세요.

요즘 코딩을 배우는 것은 그렇게 어렵지 않습니다. 블로그나 유튜브만 봐도 충분히 따라할 수 있죠. 다만, 단순히 따라만 하는 것보다는 코딩에 대한 기본 개념을 미리 습득하면 더 좋습니다. 그 깊이가 너무 깊지 않아도 되지만, OS 위에서 프로그램이 어떻게 동작하는지 웹 브라우저 안에서 무슨 일이 일어나는지, Android/iOS 앱은 어떻게 OS에서 실행되는지 등에 대한 개념을 알아 두기를 권장합니다.

자격증에 너무 목매지 마시고 내가 적어도 어떤 프레임웍, 어떤 언어는 대부분 마스터 했고 쉽게 다룰 수 있다는 자신감이 자격증보다 더 중요하다고 생각합니다.

 

>> DKI테크놀로지 기업정보 보러가기

>> 지금 채용 중인 개발 직무 보러가기

잡코리아 좋은일 연구소 취재기자 이영주 lkkung11@jobkorea.co.kr

잡코리아 좋은일 연구소
취재기자 이영주