안녕하세요. 1학년 대학생 멘티입니다. 대학에 입학한 지난 1년 동안, 제가 좋아하는 일이 정확히 무엇인지, 제 취미와 꿈이 어떠한지, 그래서 제 진로를 앞으로 어떻게 잡는 게 좋을지 생각해 봤습니다.
고민을 거듭한 끝에 제가 이루고 싶은 꿈이 가상현실(VR)1)과 증강현실(AR)2) 분야에 있음을 발견하게 됐습니다. 하지만 막상 IT개발, 코딩 공부를 해보니 어려웠고, 수많은 코딩언어 중, 어떤 코딩을 먼저 배워 앞으로 어떻게 꿈을 그려나가는 것이 좋을지 전혀 감을 못 잡고 있습니다.
고민하던 중에 '잇다’를 알게 됐습니다. 그래서 여쭤봅니다. 아직 1학년이지만, 앞으로 제가 나아가야 할 길과 방향에 대해 정확히 알고자 멘토님께 이렇게 질문해 봅니다. 앞으로 가상현실(VR)과 증강현실(AR) 분야로 진출하기 위해 무엇을 준비하면 좋을까요? 멘토님께서 답변해주시면, 그 내용을 밑거름 삼아 자신감을 가지고 도전해 보겠습니다. 읽어봐 주셔서 감사합니다.
1) 가상현실(VR): 컴퓨터로 만들어 놓은 가상의 세계에서 사람이 실제와 같은 체험을 할 수 있도록 하는 최첨단 기술을 말한다. 머리에 장착하는 디스플레이 디바이스인 HMD를 활용해 체험할 수 있다.
2) 증강현실(AR): 현실의 이미지나 배경에 3차원 가상 이미지를 겹쳐서 하나의 영상으로 보여주는 기술
프로그래밍 언어는 상황에 따라 다르게 사용합니다
멘티님, 안녕하세요. 대학교 1학년이신데 벌써 자신의 진로에 대해 진지하게 고민하시는 모습이 매우 보기 좋습니다. 현재 멘티님께서는 가상현실(VR)과 증강현실(AR) 분야에 관심이 있으신 거 같은데요. 일단 결론부터 말씀드리면, 가상현실(VR)과 증강현실(AR) 분야에 관심이 있다고 해서 어떤 코딩 언어를 반드시 먼저 익혀야 한다거나, 그 우선순위가 정해져 있지 않습니다.
그 이유는 이렇습니다. 가상현실(VR)과 증강현실(AR) 기술이 어떤 매체를 통해 보이느냐에 따라 그 활용이 달라지기 때문입니다. 가장 보편적인 예로 스마트폰을 말할 수 있는데요. 스마트폰은 안드로이드 혹은 iOS1) 프로그래밍을 할 줄 알아야 합니다. 안드로이드의 경우 보통 Java2) 기반의 언어를 많이 사용하게 될 것이고, iOS는 objective-C3)로 프로그래밍으로 해야 합니다.
그런데 이렇게 분류를 할 수 있도록 기준이 명확하게 정해져 있지도 않습니다. 실제로 각 OS에 맞는 개발은 어떤 서비스를 하느냐에 따라, 어떤 성과를 거둘 수 있는지에 따라, 그리고 어떤 개발과정을 거치느냐에 따라 달라지는데요. 결국 현장에선 한 가지 프로그래밍 언어만 사용하는 것이 아니라, 다양한 프로그래밍 언어를 사용합니다.
여기에 지금도 새로운 프로그래밍 언어가 날마다 계속해서 생겨나고 있습니다. 제가 처음 입사할 당시엔 iOS는 swift4)가 대세였는데, 지금은 objective-c가 주류인 상황입니다. 이는 프로그래밍 언어가 시간이 지날수록 새롭게 나타나기도 하고, 반대로 없어질 수 있음을 보여주는 것인데요. 어떤 개발을 하느냐에 따라 필요한 프로그래밍 언어는 그때그때 마다 다릅니다.
개발 분야에 맞는 프로그래밍 언어가 따로 있어요
너무나 많은 프로그래밍 언어가 있기에 전부 다 말해드릴 수는 없지만, 특정 분야 관련 알아두면 좋을 몇 가지 프로그래밍 언어에 대해 소개해 드리겠습니다. 먼저, 앱 개발보다 웹 기반의 서비스를 만들고 싶으시다면, Javascript 나 기타 웹 front-end5) 개발을 위한 프로그래밍 언어를 알아 두셨으면 합니다.
가상현실(VR)과 증강현실(AR)에서 실제로 보이는 그래픽 요소 자체를 구현하는 것에 관심이 있다면 Unity6)와 같은 3D 모델링을 위한 프로그래밍 언어를 사용할 줄 아셔야 합니다. 이미지를 인식하고 조작하는 것을 하고 싶다면 OpenCV7) 라이브러리를 활용한 C++8) 혹은 python9) 프로그래밍을 하실 수 있어야 한다고 생각합니다.
‘C언어’와 ‘Java 언어’ 중, 하나를 먼저 제대로 배우세요
그렇다면 현재 시점에서 멘티님께서 하실 수 있는 것을 말씀드리겠습니다. 일단 모든 프로그래밍 언어에 대해 조사하고 공부하실 필요는 전혀 없습니다. 수많은 프로그래밍 언어들이 있지만, 대부분의 언어가 기본적으로 C 계열 혹은 Java 계열입니다. 두 계열의 언어가 가장 기본적이며 널리 알려진 언어 형태죠.
따라서 C 또는 Java 계열의 언어 중 적어도 한 언어를 선택하시고 기초부터 차근차근 공부하셨으면 합니다. 그다음에 나머지 다른 언어 하나를 배우시면 될 거 같습니다. 한 가지 코딩 언어를 이미 익혔기 때문에, 나중에 배우는 프로그래밍 언어는 아무것도 몰랐던 처음보다 금방 습득하고 응용할 수 있을 거예요.
간단한 예제로 구성된 책을 구매해 직접 해 보세요
다음으로 실천하시면 좋을 방법은 가상현실(VR) 및 증강현실(AR)과 관련된 간단한 예제가 들어 있는 책을 구하셔서 하나씩 따라 해보셨으면 합니다. 이렇게 공부하면 자신이 흥미 있어 하는 것을 공부하기 때문에 확실한 동기부여가 될 거 같습니다. 나아가 평소 좋아 보였던 분야를 실제로 해봄으로써 자신에게 맞는지 아닌지 확인할 수 있는 계기가 되기 때문에, 다른 어떤 일보다 좋은 경험이 될 거라고 판단됩니다.
따라서 이 두 가지를 멘티님께서 꼭 해보셨으면 합니다. 덧붙여 멘티님께서 앞으로 남은 대학 생활을 지금처럼 자신이 좋아하는 것과 하고 싶은 것을 구분해, 꾸준히 고민하시길 바랍니다. 그러면 더 좋은 결과를 얻으실 거라고 생각합니다. 제 답변이 조금이나마 도움이 될 수 있길 희망하며, 언제든지 궁금한 점 생기면 질문해 주세요. 멘티님의 꿈을 진심으로 응원합니다.
1) iOS: 애플이 개발 및 제공하는 임베디드 운영체제로, 아이폰, 아이팟터치, 아이패드, 애플 티비 등에 탑재되어 있다.
2) Java: 객체 지향 프로그래밍 언어로서 보안성이 뛰어나며 컴파일한 코드는 다른 운영 체제에서 사용할 수 있도록 클래스(class)로 제공된다.
3) objective-C: 스몰토크(Smalltalk)의 영향을 받아 C 언어에서 파생된 객체 지향 언어
4) swift: 스위프트는 ‘오브젝티브C’보다 쉽고 최신 기능을 지원하며, 불안정한 코드를 잡아내기 쉽다는 장점이 있으며 특히 오브젝티브C 코드와 동일한 애플리케이션에서 구동할 수 있고, C 언어를 연상시키지만 템플릿은 더 명확하다는 특징들을 갖췄다.
5) 웹 front-end: ‘프런트엔드’는 사용자로부터 다양한 형태의 입력을 받아 ‘백엔드’가 사용할 수 있는 규격을 따라 처리할 책임을 진다. ‘프런트엔드’를 ‘백엔드’로 연결하는 것은 인터페이스의 일종이다.
6) Unity: 현재 모바일 게임 분야에서 널리 사용되고 있다. 누구나 쉽게 게임을 만들 수 있게 하는 것
7) OpenCV: 오픈 소스 컴퓨터 비전 라이브러리 중 하나로 크로스플랫폼과 실시간 이미지 프로세싱에 중점을 둔 라이브러리
8) C++: C 언어의 확장판으로 만들어진 객체지향형 프로그래밍 언어이다. 대규모 응용프로그램을 만드는 데 최적의 프로그래밍 언어로 간주되고 있다.
9) python: 오픈소스 고급 프로그래밍 언어 중 하나이다. C언어를 기반으로 한 오픈소스 고급 프로그래밍 언어로, 1991년 귀도 반 로섬(Guido van Rossum)에 의해 설계 및 개발되었다.