여기서는 간단하게 개발자가 되기 위한 여러 방법을 소개하려고 한다. 개발자로 취직을 하는 방법이라기 보다는 개인이 가지고 있는 아이디어를 어떻게 구현할 줄 아는 즉, 프로그램 개발이 가능한 사람이 되는 방법을 말해보고자 한다.

자신이 전공자인가?

우선, 자신이 컴퓨터 공학이나 관련 전공자인지, 아닌지로 구별해보자. 컴퓨터 전공이라면 이미 관련 지식을 가지고 있고 선후배나 여러 곳에서 쉽게 정보를 얻을 수 있을 것이다. 나는 전기공학을 나와서 C,C++ 정도는 과에서 수강했는데, 사실 그걸로는 계산기, 숫자야구게임 같은 걸 만들어본 게 전부였다. 여기서 더 나아가 사람들이 쓸 프로그램을 만들고 싶어서 컴공이나 전자공학 쪽 수업을 찾아 듣기도 했고, 학교에서 방학 때 진행한 앱 창작터라는 프로그램에 참여해 안드로이드를 배우고 앱을 만들기도 했다. 사실, 대학교 때 내 주위에는 어떤 것을 만들고 싶다는 사람들은 많이 있었지만, 그것을 실제로 구현할 사람은 많지 않았다. 그래서 흔히 말하는 외주를 맡겨서 홈페이지를 만들기도 하고, 뭣도 모르는 나에게도 많이 문의를 했었다. 하지만 전공자가 아니더라도 요즘은 유튜브나 인프런 같은 무료 강의를 접할 수 있는 곳이 많아서 누구나 충분히 원하는 것을 만들 수 있게 되었다.

전 아무것도 모르는데요?

괜찮다. 혼자 모든 것을 알 수도, 할 수도 없다. 물론, 언제 개발 언어 기초 문법부터 배워서 사람들이 쓸만한 페이지나 프로그램을 만들 수 있을지 막막할 것이다. 개발 언어도 C, JAVA, Python, Go 등 너무 다양해서 무엇부터 골라야 할 지 모른다면, 우선, 당신이 개발하고자 하는 것을 크게 3가지로 구분해보자.

  1. 홈페이지를 만들고 싶다.
  2. 안드로이드/Ios 앱을 만들고싶다.
  3. 게임을 만들고 싶다.

이것들을 어떻게 쉽고, 무료로 만들 수 있을 지 공유해보려고 한다.

홈페이지 만들기

1. 홈페이지를 만들고 싶다. 가 제일 큰 범위가 될 것 같다. 흔히 쓰는 쇼핑몰이 될 수도 있고, 블로그처럼 정보를 제공하는 곳이 될 수도 있겠다. 좀 더 디테일하게 풀어보자면 회원 가입을 받아서 고객 정보를 데이터베이스로 관리하고, 내가 팔고자 하거나 제공하고 싶어하는 것을 보여주고 고객의 결제까지 연동시키면 되겠다. 개발의 총 양을 10이라고 한다면, 보여지는 화면을 만드는 부분 7, 어떤 정보들을 데이터베이스에서 관리할 지 설계하고 구축하는 부분 2, 결제 연동 등 외부 서비스와 연결 1 정도로 대충 생각할 수 있겠다. 물론, 단순히 만들어보기로 끝나지 않고 많은 고객을 가지게 된다면 기본적인 서버 외에 개인 정보 보호를 위한 암호화, 보안 등 신경써야 할 부분이 많겠지만 그것은 차차 나중에 생각하고 프로토타입을 만들어서 결과물을 내는 것에만 집중하자.
아래는 React.js라는 웹 화면을 만들 때 쓰는 라이브러리로 영화 랭킹을 보여주는 페이지를 만드는 강의다. 영화 정보는 다른 곳에서 제공하는 Open API 라는 것을 통해서 랭킹, 다운로드 수 등을 받아올 것이다. 이걸 따라해보고, 영화 정보 대신 내가 보여주거나 팔고 싶은 정보로 바꿔서 만들면 되겠다 라는 생각이 들면 좋겠다.

 

모바일 앱 만들기

2. 안드로이드/Ios 앱을 만들고싶다. 는 두 가지 방법이 있다. 앞서 홈페이지 만들기에서 한 것을 웹뷰에 그냥 띄워서 보여주는 앱을 만드는 방법(하이브리드)과 아예 새롭게 앱을 만드는 방법(네이티브)이 있다. 요즘은 굳이 네이티브에만 집중하지 않고, 굳이 PC용 따로, 모바일용 따로 만드는 불편함을 줄이기 위해 하이브리드 방식을 많이 선택하는 편이다. 그리고 React Native처럼 모바일을 위한 라이브러리도 만들어져 있기 때문에 한 번 개발해서 PC, 모바일을 한 번에 지원하는 것을 추천한다. 여기서 개발자는 모바일 푸쉬나 알람, 진동 등 모바일 고유의 기능만 따로 추가하면 되겠다.
아래는 React Native로 to do list 앱을 만드는 강의다. 이 강의를 따라해보고 굳이 네이티브 방식을 안해도 되겠다라고 생각이 들길 바란다.

 

게임 만들기

3. 게임을 만들고 싶다. 는 앞서 본 것들과는 다르게 좀 더 특화되어 있다. 자신이 어떤 게임을 만들고 싶은지에 따라 Unity,Unreal 등 게임 개발 엔진을 쓸 지, 아니면 비교적 간단한 캐주얼 게임을 위한 cocos2d를 쓸 지, 앞서 홈페이지나 모바일 앱 개발 언어로 직접 구현할 지 선택할 수 있다. Steam이나 게임 유통 플랫폼에 올라오는 게임들은 UnityUnreal처럼 게임 엔진을 사용하는 경우가 많다. 게임 엔진이란 개념이 어렵다면, 3d 게임에서 쓰이는 중력(Gravity)과 같은 것을 미리 구현해놓은 것이다. 개발자는 직접 개발하기 어려운 중력에 대해 필요한 값만 넣어주어 원하는 방식대로 게임을 만드는 것이다. 이 외에도 카메라의 위치, 광원 등 다양한 요소를 지원해주기 때문에 대형 게임들도 이러한 게임 엔진을 많이 사용한다. 보통은 UI 쪽을 구성하고 해당 UI가 어떻게 동작할 지 스크립트를 작성해서 구현해주는 방식이다. UI 쪽에서 난 디자인은 못 하는데? 라고 생각한다면 Unity에서는 Asset Store가 있고, 거기에 무료로도 많이 올라와 있기 때문에 한 번 둘러보길 바란다. 무료 게임 강의는 아쉽게도 찾기가 힘들었다. 앞서 예시들처럼 간단한 프로젝트를 만들어보면서 배워야 좋은데, asset 까지 같이 무료로 제공하기가 힘든 문제도 있기 때문이지 않을까한다. 대신, Unity나 Unreal 중에 게임 2~3 개를 만들 수 있도록 소개와 가이드해주는 책을 사서 해보는 것을 추천한다. 보통 그런 책은 샘플 코드와 asset 도 같이 제공하기 때문에 개발이 편할 것이다. 여기서 중요한 것은 Unity나 Unreal 엔진 최신 버전에 최대한 가까운 버전을 쓰는 책을 고르는 것이다.

마무리하며

개인적으로 처음 개발하는 사람에게 제일 중요하게 생각하는 것은 한 번 성취감을 맛보는 것이다. 나는 개발하는 과정이 그리 즐겁지 않다. 시간도 오래 걸리고, 해결되지 않는 버그와 씨름하며 머리 아프기 때문이다. 하지만 내가 만들어보고 싶은 것을 스스로 만들어낸다는 것이 좋다. 물론, 유저들에게 쓰디쓴 평가를 받기도 하고, 대박칠 줄 알았던 앱이 시덥지 않기도 하다. 대신, 내가 만든 프로그램으로 돈을 벌기도하고, 취직할 때 도움이 되기도 했다. 본인이 개발자가 아니라 기획이나 마케팅 등 다른 분야로 갈 생각이라고 해도, 개발을 경험한 것과 아닌 것에 대한 차이는 크다고 생각한다. 개발자로 진로를 계획하고 있다면, 본인이 개발하는 것들을 Github 에서 관리하는 것을 추천한다. 

'개발 > My Dev Story' 카테고리의 다른 글

2019 웹 개발자는 뭘 해야할까  (0) 2019.05.22

+ Recent posts