대학교에서 단순히 컴퓨터에 대한 지식, 코딩에 대한 지식만 쌓아왔지 실제로 활용해 본 적 없던 나는 입사한 첫 날 걱정이 앞섰다. 외부프로젝트의 ios 버전을 인턴 2명이서 맡게 되었기 때문이다. ios 개발이라고는 저번 학기에 들었던 수업에서 한 3개월의 경험밖에 없던 난 당연히 걱정이 생길 수 밖에 없었다. 또한 내가 대학에서 배웠던 지식은 알고리즘, 자료구조, 오토마타 등 이론에 대한 지식밖에 없었는데 이 프로젝트에서 요구하는 건 그런게 아니었다.
내가 프로젝트를 진행하는데 있어서 필요한 지식은 크게 5가지였다.
IOS 앱개발에 필요한 지식, BLE 통신, 데이터베이스, 서버 API통신, 마지막으로 git에 대한 활용법.
이 5가지 중 내가 갖고 있던 지식은 3개월 동안 배운 IOS 개발에 필요한 지식이 다였기에, 걱정이 많이 앞섰다.
프로젝트는 다음과 같은 순서로 진행됐다.
- UI 구현
- 내부 API 구현
- 외부 API 구현
- 테스트케이스 실험
내가 느끼기에는 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달동안 인턴을 하면서 난 하나의 프로젝트를 맡게 되어 거의 끝을 냈다. 이제 난 기초적인 개발을 할 수 있게 되었고 회사에 대한 많은 선입견이 사라졌다. 또한 내가 전공하고 있는 소프트웨어에 더 많은 애정이 생겼다. 가장 좋은 건 코딩에 대한 자신감이 생겼다는 것이다. 이렇게 언제든 그만둘 수 있는 인턴에게 하나의 프로젝트를 맡겨주신 사장님과 프로젝트를 진행하면서 도움을 주셨던 회사 사람들께 너무 고마웠다.