모바일 앱 개발자로 취업하고 싶다면

저는 코드스쿼드에서 모바일 클래스를 담당하고 있는 JK입니다. 모바일 개발을 배우려면 어디서부터 배워야 하는지 막막한 분들을 위해서 정리해봤습니다. 모바일 분야 중에서도 아이폰 iOS 앱 개발자 경험을 위주로 소개합니다.

우선 “개발자가 되야겠다”고 막연한 호기심을 가졌다면 다시 생각해보라고 말리고 싶네요 🤷‍♂️

왜냐하면 개발자라는 직업이 멋져 보이고 취업이 잘 되고 다른 직업에 비해 연봉도 많이 받을 것 같지만, 현실은 그렇게 쉽고 아름답지만은 않습니다. 물론 똑똑하고 일을 잘 하는 분들은 좋은 대우를 받고 일하고 계실 겁니다. 하지만 모든 개발자가 편한 것도 아니고, 꼭 모두가 개발을 배워야 하는 것도 아닙니다.

꽤 많은 개발자는 이런 성향을 갖고 있습니다. (이런 성향을 갖고 있어야만 개발자가 될 수 있다는 필수 조건이 아니라, 여러 개발자들이 그렇거나 이런 걸 즐겨하기 때문에, 내가 그렇지 않으면 불편하지만 다른 사람들은 당연하게 생각할 수 있다는 의미입니다.)

  • 개발자는 호기심이 많습니다. 무언가 새로운 기술, 언어, 도구, 서비스, 게임 등이 나오면 호기심을 갖고 접근합니다.
  • 개발자는 꾸준히 학습합니다. 호기심으로 접한 무언가를 쓸모있고 더 잘하기 위해서 의도적인 수련을 합니다.
  • 개발자는 자동화를 즐깁니다. 기계가 일하게 만드는 직업을 갖고 있다보니, 단순한 작업부터 복잡한 업무까지 자동화하려고 노력합니다.
  • 개발자는 원리를 찾고, 프로토콜로 정해진 규칙을 지킵니다. 엔지니어는 하위 지식이나 기반 기술을 응용해서 더 상위 수준에서 무언가를 만들죠. 내가 접하는 계층보다 하위 계층의 동작 원리를 알기 위해 공부하기도 합니다. 그리고 규칙과 패턴을 찾아서 일반화시키죠.
  • 개발자는 다른 개발자의 저작물을 존중하고, 자신이 작성한 결과를 반영하도록 공유하기도 합니다. 소프트웨어 코드 뿐만 아니라 개념, 지식, 용어, 규칙과 방법론까지 공유하려고 노력합니다.
  • 개발자는 분야별로 커뮤니티 활동을 합니다. 만약 모바일 분야에 관심이 있다면 모바일 분야 개발자들이 모이는 커뮤니티에 참여해보세요.

개발자가 되고 싶으면 무엇을 먼저 공부해야 할까요? 어떤 과목이나 무언가 잘 하면 개발도 잘하게 될까요?

여전히 선배 개발자들 사이에서도 논란꺼리고, 뾰족한 단 하나의 정답을 내놓지는 못하고 있습니다. 각자 공부한 방식도 다르고 지식도 다르니까요. 무언가 하나를 잘 한다고 마스터했다고 해서 다른 것을 잘하는 상관 관계가 높지 않은 것도 많습니다.

- 수학

수학을 하면 프로그래밍을 쉽게 배우거나 잘하는 분들도 있습니다. 이것도 꼭 그렇지 않습니다.

예를 들어 미분 방정식을 잘 푼다고 프로그래밍을 잘 하는 게 아니라, 수학에서 집합 이론, 정수 계산, 진법 계산, 논리와 선형대수, 좌표를 다루는 기하학 같은 지식은 프로그래밍 특정한 분야에서 매우 도움이 되거나 관련이 높기도 합니다.

- 국어 또는 외국어

프로그래밍하는 과정에서 사람이 만든 프로그래밍 언어를 사용합니다. 무언가 배우려면 해당 언어로 작성된 자료를 읽어야 하니까 언어를 잘 하는 게 학습에 도움이 될 수도 있습니다.

하지만 5개 국어를 유창하게 구사한다고 해서 프로그래밍 언어가 쉬운 게 아닙니다. 영어로 된 학습 자료나 참고 글이 많으니 방대한 자료를 찾기 수월할 수는 있겠죠.

- 학습하는 방식

우리나라 대입 시험이나 토익토플, 공무원 고시처럼 점수를 받기 위해서 단기 기억력에 의존하는 학습 방식은 도움이 별로 안됩니다.

엔지니어링은 주어진 조건과 환경에서 기준을 정해서 문제를 해결하기 위한 다양한 방법 중에 하나를 선택하는 과정입니다. 해결 방식이 단 하나만 존재하는 게 아니라, 수많은 방법 중에서 더 나은 선택을 위해 다양한 방식을 시도해야 합니다.

누가 정답을 알려주지도 않아서 정말 올바른 선택인지 확인하는 것은 스스로 증명하는 방법 뿐입니다. 마치 해외 낯선 도시에서 어딘가 처음 보는 동네에서 이름 모를 가게를 찾아가는 과정을 상상해보세요. 얼마나 많은 방법들이 있을까요?

이제 주변에 개발자로 일하는 분이 계시다면 물어보세요. 처음에 어떻게 공부했는지…그래도 모르겠거나 주변에 개발자가 없다면, 코딩 학원이나 프로그래밍 교육 과정을 내용을 찾아보세요.

사람들은 언제 어디서 무엇을 배우고 있는지도 찾아보세요. 저변 확대를 위해서 정부과 기관에서 지원해주는 정말 많은 국비 지원 과정들이 있습니다. 당장 찾아가서 수강 신청을 할 게 아니라, 궁금하면 상담도 받아보고 어떤 과정들이 있는지 살펴보세요.

인터넷에서 온라인으로 학습할 수 있는 서비스나 사이트도 찾아보세요. 국내 서비스도 있고, 해외 서비스도 있을꺼에요. 심지어 유투브에도 정말 많은 개발자 강좌들이 있습니다. code.org, 소프트웨어야 놀자, 스크래치나 엔트리, 칸아카데미 같은 무료 서비스들도 많습니다.

재밌는 주제나 언어가 있다면 우선 가볍게 학습을 시도해보세요. 이런저런 자료를 찾아보고 무언가 만드는 게 너무 어렵지 않고 즐거운 것 같으면 본격적으로 시작하세요.

개발자가 된다는 것은 모든 것을 처음부터 한 번에 경험하거나 다 배워서 써먹는 게 아닙니다. 얼마나 공부해야 개발자가 될까요? 그건 케바케죠.

누군가는 대학에서 컴퓨터 공학 전공하고, 인턴도 해보고 이런저런 프로젝트를 해보면서 감을 잡기도 합니다. 또 다른 누군가는 경영학, 역사학, 외국어를 전공하고 개발을 배우기 위해서 여러 번 시도하기도 합니다. 무엇이 더 빠르고 쉬운 길일까요? 그런 건 없는 것 같아요.

각자 자신이 선택한 길은 항상 힘들고 어렵고 거칠고 힘들고 불편하고 괴로우니까요.

대학 전공생들이 18학점 * 15주 * 4학기를 전공 수업을 들으면 대략 1,080시간을 학습합니다. 물론 수업시간에 졸면 그것보다 짧겠죠. 코드스쿼드처럼 부트캠프 형식으로 풀타임 집중해서 수업하면, 하루 7시간 * 20일 * 6개월 = 대략 840시간을 학습합니다.

짧은 시간안에 동일한 내용을 학습한다고 해도 절대적으로 시간이 부족할 수 밖에 없습니다. 그런데 대학에서 배우는 것보다 더 현장에 가깝고, 실용적인 프로젝트를 해야 하기 때문에 온전히 학습만 하는 건 아닙니다. 더더더더 학습할 시간이 부족할 수 밖에 없습니다.

전공 대학생들이 배우는 자료구조, 알고리듬, 이산수학, 운영체제, 디지털시스템, 데이터베이스, 네트워크, 프로그래밍 언어, 소프트웨어 공학 등 전공 지식뿐 만 아니라, 그 지식을 활용해서 응용 서비스를 만들 수 있도록 전문 언어와 도구, 개발 환경을 프로젝트를 만들면서 학습해야 합니다.

자 이제 모바일 개발자가 될 준비가 됐네요!

맞습니다. 이제야 준비가 됐어요 흑흑 모바일 전문 분야 지식을 배우려면, 지금부터가 시작입니다.

모바일 iOS 클래스를 기준으로 설명해보겠습니다.

  • Swift 프로그래밍 언어를 학습합니다. 기초 문법부터 함수형 프로그래밍, 객체지향 프로그래밍, 프로토콜지향 프로그래밍에 맞춰 개발해 봅니다.
  • 애플 개발자 도구와 개발 환경을 학습합니다. (여기서 좌절하는 분들이 많습니다.) 비싼 맥북을 사야하기 때문이죠.
  • 다른 플랫폼과 차별점인 iOS 운영체제와 SDK, 화면을 다루기 위한 다양한 재활용 기법을 학습합니다.
  • 작은 화면에 빠릿하게 대응하기 위해서 뷰와 관련된 클래스를 학습하고, 애니메이션을 다루기 위해 비동기 처리 방식을 학습합니다.
  • 애플이 만들어놓은 가이드라인과 지도나 구매 등 여러 키트를 학습합니다.
  • 애플 앱 스토어에 리뷰를 통과하기 위해서 얼마나 운이 좋아야 하는지도 경험해 볼 수 있습니다.

2020년 마스터즈 코스부터는 모바일 개발자가 혼자 앱만 만드는 게 아니라, 웹프론트엔드 — 웹백엔드 개발자들과 팀을 이뤄서 서비스를 만들기 위한 경험을 중요하게 설계했습니다.

마치 창업해서 새로운 서비스를 하나 만드는 — 기획 처음부터 배포까지 경험을 반복합니다. 그러면서 소프트웨어를 만들기 위한 방법론, 프로젝트를 관리하는 방법론, 소통과 협업 방법을 경험합니다.

모바일 iOS 개발자가 되고 싶다면, 제가 작성한 모바일 개발자 학습 로드맵과 스위프트 프로그래밍 학습 로드맵을 참고하세요.

그 외에 문의 사항은 카카오톡이나 메일로 언제든지 보내주셔도 좋습니다. 회사 그만두고 바로 오겠다고 하시는 분들은 사표내기 전에 먼저 연락을 주시는 게 좋습니다.

The Music isn’t in the piano. -Alan Kay

제가 피아노를 칠수 있다고 음악가가 되는 건 아닙니다. 도화지와 연필이 있다고 미술가가 되는 것도 아닙니다. 프로그래밍 언어나 개발 도구를 배운다고 해서 개발자가 되는 게 아닙니다. 그래서 코드스쿼드에서는 개발자를 양성하지 않습니다. 모두가 스스로 성장하고, 함께 학습하는 방법을 학습하는 곳입니다.