민트기술 인턴 후기 – 김영호님

대학교에서 단순히 컴퓨터에 대한 지식, 코딩에 대한 지식만 쌓아왔지 실제로 활용해 본 적 없던 나는 입사한 첫 날 걱정이 앞섰다. 외부프로젝트의 ios 버전을 인턴 2명이서 맡게 되었기 때문이다. ios 개발이라고는 저번 학기에 들었던 수업에서 한 3개월의 경험밖에 없던 난 당연히 걱정이 생길 수 밖에 없었다. 또한 내가 대학에서 배웠던 지식은 알고리즘, 자료구조, 오토마타 등 이론에 대한 지식밖에 없었는데 이 프로젝트에서 요구하는 건 그런게 아니었다. 
 

내가 프로젝트를 진행하는데 있어서 필요한 지식은 크게 5가지였다. 
IOS 앱개발에 필요한 지식, BLE 통신, 데이터베이스, 서버 API통신, 마지막으로 git에 대한 활용법. 
이 5가지 중 내가 갖고 있던 지식은 3개월 동안 배운 IOS 개발에 필요한 지식이 다였기에, 걱정이 많이 앞섰다. 
 
프로젝트는 다음과 같은 순서로 진행됐다. 

  1. UI 구현 
  1. 내부 API 구현 
  1. 외부 API 구현 
  1. 테스트케이스 실험 

 
내가 느끼기에는 UI 구현이 가장 어려웠다. xcode와 swift에 익숙치 않아 많은 시행착오를 겪었기 때문이다. 내가 알고 있는 앱개발에 필요한 지식은 극히 일부라서 UI구현에 필요한 지식을 일일이 다 검색해가면서 찾았다. 개발에 가장 지장이 되었던 것은 앱에 대한 가이드라인이 따로 존재하지 않는다는 것이었다. 가이드라인이 없어 기존에 있던 안드로이드 버전을 참고해가면서 프로젝트를 진행해야 됐는데 심지어 안드로이드 개발도 잘 몰라 진행사항이 매우 더뎠다.  
또한 기존의 난 git에 대한 지식이라고는 push, pull 밖에 없었다. 대학에서 깃을 다루긴 했지만 다 개인과제였기 때문에 따로 브랜치를 만들 이유가 없었기 때문이다. 그래서 git에 대해 알아가는 데 또 시간이 걸렸다. 
 
그러나 시간이 지나면서 이런 애로사항들이 하나 둘 해결됐다. 회사에 출근해 하루종일 구글링하고 남들의 코드를 보면서 오토레이아웃, 세그웨이 등 UI구현에 필요한 전반적인 지식이 쌓이고 안드로이드 또한 어떤 방식으로 동작하는 지 알게 되자 진행속도가 상당히 빨라졌다. 구글을 보는 시간보다 코드를 보는 시간이 많아졌고 점차 자신감이 생겼다. 또 git은 회사분들께서 너무 자세하게 설명해주셔서 금방 사용법을 알게 되었다. git을 활용해 클론을 따고, 브랜치를 만들고, Merge Request를 하는데 내가 진짜 프로그래머가 된 기분이었다. 프로그래머의 기본은 협업인데 협업을 하는 방법을 알았기 때문이다. 그렇게 UI 구현은 2주만에 끝났다. 
 
다음으로는 내부 API 구현을 진행했는데 이 때 BLE통신, 데이터베이스 등을 배웠다. 프로젝트를 진행하면서 가장 많은 시간을 할애한 것이 BLE통신이었다. 애초에 BLE가 뭔지도 몰랐던 난 이 기능을 앱에 구현하면서 코딩보다 정보를 찾는 데 시간을 다 썼다. IOS에서 지원해주는 Core Bluetooth가 어떻게 동작하는 지 부터 peripheral이 뭔지, Service가 뭔지, characteristic이 뭔지 차근차근 알아갔다. 그 뒤에는 제품과 핸드폰 기기와의 통신에 필요한 프로토콜을 이해하는데에 또 많은 시간을 할애했다. 이 단계에선 사수분의 도움을 많이 받았다. 사실 처음 프로젝트를 맡았을 때부터 사수분이 정해졌지만 그 동안 오기때문에 혼자 진행하려고 노력했지만 진행속도가 너무 더뎌져 도움을 요쳥했다. 이 때 사수셨던 승리씨는 원래 따로 진행하시던 프로젝트가 있음에도 불구하고 너무 친절하게 가르쳐주셔서 감사했다. 이렇게 BLE통신을 구현했을 때의 심정은 말로  다 할 수 없다. 
그 다음엔 데이터베이스를 구현했는데 이 과정은 생각보다 빨리 끝났다. 따로 이해해야할 지식은 없고 어떻게 써야 되는 지만 알면 됐기 때문이다.  이렇게 내부 API 또한 2주만에 끝났다. 
 
이 때 되게 나한테 놀랐던 것은 불과 한 달만에 UI구현과 내부 API를 구현했다는 것이다. 그리고 코딩에 상당이 자신감이 붙은 나를 발견했다. 앞으로 프로젝트를 진행하면서 어떤 어려움이 닥쳐도 해낼 수 있을 거란 생각이 들었다. 
 
뒤로는 외부 API 통신을 하게 되었다. 여기서 생각보다 많은 시간을 할애했는데 그 이유는 클라이언트 쪽에서 서버 API 통신에 대한 규격같은 것을 아예 제공해주지 않았기 때문이다. 따라서 내가 기존에 있던 안드로이드 소스를 일일이 분석해가면서 규격을 찾아내고 구현했는데 이 과정에서 많은 시간이 걸렸다. 하지만 막막해보였던 이 또한 하니까 되더라. 
 
이렇게 막막했던 프로젝트 중 3가지를 끝냈을 때 난 전에 적었던 진행에 필요한 5가지에 대한 전반적인 지식이 생겼다. 불과 한달 조금 넘겨서 말이다. 내가 걱정했던 것은 기우였다는 것을 알게 되었고 이젠 난 개발에 대해 자신감이 생겼다. 과장을 조금 더하면 이대로 바로 취직해도 먹고 살 수 있겠다는 생각이 들었다. 가장 중요한 건 앞으로 개발하는데 어떤 어려움이 닥쳐도 해낼 수 있을 거란 생각이었다. 물론 시간이 많이 걸릴 수는 있지만 불가능하지 않다는 확신이 들었다. 
이후에는 원래 테스트케이스를 실험하면서 오류를 잡아내야 했지만 클라이언트 측에서 갑작스레 UI를 변경해 변경된 UI를 구현해내는데 시간이 많이 걸렸다. 또 UI를 좀 더 상세하게 고치면서 이제는 새로운 지식을 쌓기보단 알고있던 지식을 활용하는 반복작업이 시작됐고 그 후에야 테스트케이스를 실험했고 프로젝트는 거의 끝이 났다. 
 
프로젝트를 진행하고 나서 새삼 느낀 것은 회사의 분위기가 굉장히 자유롭다는 것이다. 사장님과의 면담시간중 ‘I LIKE I WISH’라는 것을 했는데 I LIKE 는 회사에서 좋았던 것, I WISH는 회사에 바라는 것을 얘기하는 것이었다. 이 때 내가 I WISH 시간에 얘기한 것이 2일뒤에 반영이 되었는데 상당히 놀랐다. 인턴에 불과한 나의 얘기를 반영하는 게 쉽지 않은 일이기 때문이다. 내가 갖고 있던 IT업계 회사에 대한 선입견이 여기서 많이 없어졌다. 보통 IT업계를 생각하면 회사에서 시키는 대로 일만하고 야근도 밥먹듯이 하는 그런 회사가 생각났었지만 민트기술에 와서 다 그렇지는 않다는 것을 깨달았다. 출근 시간도 9~10시 사이 자유롭고 퇴근도 눈치보면서 퇴근하는 그런 분위기가 전혀 없어서 일하는 2달동안 너무 좋았었다. 
 
이렇게 2달동안 인턴을 하면서 난 하나의 프로젝트를 맡게 되어 거의 끝을 냈다. 이제 난 기초적인 개발을 할 수 있게 되었고 회사에 대한 많은 선입견이 사라졌다. 또한 내가 전공하고 있는 소프트웨어에 더 많은 애정이 생겼다. 가장 좋은 건 코딩에 대한 자신감이 생겼다는 것이다. 이렇게 언제든 그만둘 수 있는 인턴에게 하나의 프로젝트를 맡겨주신 사장님과 프로젝트를 진행하면서 도움을 주셨던 회사 사람들께 너무 고마웠다.  

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다