모바일 프로그래머는 웹 프로그래머가 갖추어야 할 필수 지식을 기본적으로 갖추고 있어야 한다. 그리고 추가적으로 요구되는 지식들이 있다. 이 지식들 중에는 모바일 애플리케이션이 갖는 이동성이나 하드웨어 특성에 따른 지식들도 있다.
모바일 프로그래머가 공통으로 갖추어야 할 지식
- 컴퓨터 구조 : 중앙 처리 장치(CPU), 메모리, 캐시 등의 구조와 작동 원리를 이해해야 한다. 이를 통해 메모리 할당이나 로딩 속도 개선 등 모바일 애플리케이션에서 매우 중요한 기술을 구현하는 기초를 닦을 수 있다. 모바일 기기에서는 제한된 자원으로 만족할 만한 수준의 애플리케이션 성능을 발휘해야하기 때문에 컴퓨터 구조에 대한 이해는 매우 중요하다.
- 컴퓨터 보안 : 일반적인 컴퓨터 환경에서도 보안은 매우 중요한 이슈지만, 특히 스마트폰 등의 모바일 기기를 이용한 컴퓨팅에서 보안은 더더욱 중요하다. 사용자의 개인 정보, 위치 정보, 금융 정보 등 매우 중요한 정보들이 기기에 저장되어 있기 때문이다. 더불어 다양한 방식의 네트워킹이 지원되고 있기 때문에 해킹될 가능성도 상대적으로 높은 편이다. 따라서 데이터 암호화나 사용자 인증 등 컴퓨터 보안에 대한 이해가 필요하다.
- 응용 프로그램 인터페이스(API) : 애플리케이션 개발에 활용할 수 있도록 운영체제나 프로그래밍 언어에서 제공하는 프로그래밍 인터페이스다. API에 대한 이해는 프로그래머의 생산성과 직결된다. 특정 기능을 처음부터 개발하는것이 아니라, 필요한 부분에 맞는 API를 가져와 활용함으로써 개발 시간과 노력을 줄일 수 있다. 그리고 이미 많은 사람에 의해 검증된 것이기 때문에 소프트웨어의 안정성도 높일 수 있다. 소셜 네트워크 서비스(SNS), 금융, 게임 등 다양한 분야에서 API를 활발히 제공하고 있다.
이제 모바일 프로그래머에게 요구되는 기술을 iOS 개발 기술, 안드로이드 개발 기술, 공통 기술로 나누어 살펴보자.
iOS 프로그래머가 갖추어야 할 기술
- 오브젝트 C : 애플의 iOS와 OS X 운영체제에 기반한 앱 개발에 필요한 프로 그래밍 언어다.
- 스위프트 : 2014년 애플에서 소개한 프로그래밍 언어로 iOS 및 OS X 기반 애플리케이션을 만들기 위해 활용된다. C#, 루비, 파이썬, 오브젝트 C 등의 기존 프로그래밍 언어에서 유용한 개념들을 계승해왔다. 스위프트는 C++에 비해 여러 가지 제약이 있었던 오브젝트 C의 대안으로 등장했다. 오브젝트 C에 비해 안정성이 높으면서도 프로그래밍이 간결하다. 앞으로 점점 많은 iOS 기반 애플리케이션이 스위프트로 개발될 것이다. 따라서 iOS 개발자가 되고자 한다면 스위프트를 익혀야 한다.
- iOS SDK : iOS 운영체제에 기반한 앱 개발 도구다.
- iOS 프레임워크 : 코코아터치, 코어 데이터, 코어 로케이션 등은 iOS나 OS X애플리케이션 개발을 위해 애플에서 제공하는 프레임워크다.
안드로이드 프로그래머가 갖추어야 할 기술
- 자바 : 구글의 안드로이드 운영체제에 기반한 앱을 개발하려면 자바를 반드시 알아야 한다. 안드로이드 프로그래밍의 상당 부분이 자바 언어에 기반을 두고 있다. 자바의 객체지향, 인터페이스, 클래스, 확장, 상속, 가비지 콜렉터 등 다양한 개념과 구현 기술을 익힘으로써, 안드로이드 프로그래밍의 기초를 닦을 수 있다. 프레임워크 종류와 상관없이 안드로이드 앱을 개발하려면 자바에 대한 이해는 필수다.
- 안드로이드 프레임워크 : 안드로이드 프로그래밍을 할 때 대부분 프레임워크를 사용한다. 대표적인 프레임워크로는 폰갭(Phonegap), 코로나 SDK(CoronaSDK), 앱셀러레이터(Appcelerator), 더앱빌더(TheAppBuilder), jQuery 모바일(jQuery Mobile) 등이 있다. 애플리케이션의 목적이나 요구 사항에 따라 프레임워크를 선택하여 사용하면 된다.
- 안드로이드 스튜디오 : 안드로이드 프로그래밍을 위한 통합 개발 환경으로 구글에서 제공하는 안드로이드 스튜디오가 있다. 안드로이드 스튜디오가 나오기 전까지 사용되던 이클립스 안드로이드 개발 도구를 아직까지 선호하는 프로그래머들도 있긴 하다. 그러나 개발 시의 편리함과 안드로이드 기반 웨어러블 기기용 프로그래밍 지원 등의 여러 장점으로 인해, 안드로이드 스튜디오를 사용하는 프로그래머의 수가 점점 늘고 있다.
모바일 프로그래머가 공통으로 갖추어야 할 기술
- 개정 관리시스템 (Revision Control System) : 깃(Git), 머큐리얼(Mercurial), SVN, CVS 중 한 가지 이상은 알아야 한다. 개정 관리시스템을 통해 프로그램 소스 코드의 히스토리 관리와 변경 사항 추적이 가능하다. 대부분의 소프트웨어 개발 프로젝트는 여러 명의 프로그래머가 함께 개발하는 경우가 많기 때문에, 많은 조직에서 개정 관리시스템을 활용하고 있다.
- 웹 서비스 관련 기술 : SOAP, REST, JSON, XML은 웹 서비스를 위해 데이터를 전송하고 관리하는 데 필요한 기술이다.
- 데이터베이스 관련 기술 : MySQL, Oracle, MS–SQL 등의 데이터베이스 관리시스템은 데이터를 동적으로 관리하는 애플리케이션 개발에 필수적인 기술이다.
- 와이어프레임 (또는 프로토타이핑 도구) : Fluid UI, Proto.io, Moqups, Mockflow, Protoshare 등의 와이어프레임은 개발자와 개발자, 개발자와 설계자, 개발자와 고객 사이의 효율적인 의사소통을 돕는다. 그리고 무엇보다 합의된 개발 목표에 대한 구체적인 내용을 확인시켜 준다.
- 자동 테스트 도구 : eviceAnywhere, Ranorex, eggplant, Silk Mobile, SeeTest 등의 자동화된 테스트 도구를 이용하면 오류를 신속히 발견하고 디버깅할 수 있다. 대부분 다양한 플랫폼을 지원한다. 자신에게 맞는 한두 개의 테스트 도구는 반드시 익혀야 한다.
- 웹 프로그래밍 기술 : 모바일 프로그래머라도 웹 프로그래밍 기술을 함께 갖출 것을 요구하는 곳이 많다. 모바일 애플리케이션이 웹 기반의 다른 시스템과 연동되는 경우가 종종 있기 때문이다. 따라서 HTML, 자바스크립트, CSS, jQuery, Ajax, PHP 등의 기술을 익혀야 한다. 최근에는 HTML5 기술을 요구하는 모바일 프로그래머 포지션도 나타나고 있다.
모파일 프로그래머가 갖추어야 할 태도
인정받는 모바일 프로그래머가 되고 싶다면 긍정적인 태도를 길러야 한다. 긍정성은 함께 일하는 동료뿐 아니라 고객에게도 평가를 받는 부분이다. 프로그래머 중에는 고객의 요구 사항에 대해 “불가능하다”, “시간이 오래 걸린다” 등의 부정적인 태도를 자주 나타내는 사람들이 있다. 하지만 고객의 만족도를 높이는 데 실패하는 프로그래머를 조직 내에서 긍정적으로 평가하는 경우는 드물다. 미국의 모바일 프로그래머 채용 공고를 보면 종종 “Can–do attitude”라는 문구를 확인할 수 있다. 어려운 일이 있더라도 할 수 있다는 자신감과 긍정적인 태도를 평가하겠다는 것이다.
모바일 프로그래머에게 요구되는 또 다른 태도로는 팀워크가 있다. 대다수의 모바일 프로그래밍은 다수의 프로그래머나 설계자들이 참여하는 공동 프로젝트다. 따라서 프로젝트를 성공적으로 완수하려면 구성원의 팀워크가 매우 중요하다. 기본적으로 팀워크가 있어야 효과적으로 의사소통할 수 있고 신뢰에 바탕을 둔 협력도 가능하다.
여러분이 모바일 프로그래머를 채용하는 회사에 지원하여 면접을 보게 된다면, 1차 인터뷰에서든 2차 인터뷰에서든 반드시 한 번은 다음과 같은 질문을 받을 것이다.
“당신은 독립적으로 일하는 것을 좋아합니까? 아니면 다른 팀원들과 함께 일하는 것을 좋아합니까?”
여러분은 어떻게 대답할 것인가? 물론 독립적으로 일하는 것을 선호하는 사람들도 있다. 하지만 협업 프로젝트가 많은 프로그래머 포지션에 독립적으로 일하는 것을 선호하는 사람보다는 다른 사람과 함께 일하는 것을 즐기는 사람을 채용할 가능성이 당연히 더 크다.
마지막으로 반드시 언급해야 할 태도 중 하나는 열정이다. 모바일 프로그래머는 앞서 말한 것처럼 마땅한 인력을 찾기가 쉽지 않다. 따라서 주당 40시간을 초과해서 근무할 경우도 종종 있음을 알아야 한다. 미국 노동통계국에 따르면 모바일 프로그래머는 주당 40시간을 일하는 일반 근로자에 비해 평균 25% 정도 더 길게 일한다. 열정이 없다면 이런 장시간의 노동을 견디기 힘들 것이다. 물론 우리나라의 개발자들이 처한 상황과 비교한다면, 주당 50시간 노동이 많게 느껴지지 않을 수도 있다. 하지만 미국에서 일하게 된다면 얼마 지나지 않아 주변 사람들과 비교하게 될 것이다. 멀리 한국에 있는 프로그래머가 아닌, 같은 회사 혹은 이웃의 노동 시간과 자신의 노동 시간을 비교하게 된다. 열정이 뒷받침되어야 이러한 비교에서 자유로워질 수가 있다.
[출처] http://www.hanbit.co.kr/media/network/network_view.html?cms_code=CMS8517861891
No. | Category | Subject | Author | Date | Views |
---|---|---|---|---|---|
117 | System/OS |
무료로 HTTPS 적용하기 (Lets' Encrypt)
![]() |
hooni | 2017.02.16 | 2397 |
» | Etc |
모바일 프로그래머가 갖추어야 할 필수 역량
![]() |
hooni | 2017.02.16 | 1517 |
115 | Develop |
[ios] Facebook Cache 갱신하는 함수
![]() |
hooni | 2017.02.27 | 1333 |
114 | Develop |
[js] Javascript로 만든 포트리스 (2010)
5 ![]() |
hooni | 2017.03.03 | 2831 |
113 | Etc |
종합시험 관련 자료
![]() |
hooni | 2017.03.15 | 0 |
112 | Develop |
[ios] 동영상 플레이어 샘플 (for PIP Player)
![]() |
hooni | 2017.03.15 | 1416 |
111 | Develop |
Mac OS 에 Jenkins 설치하기 (Homebrew)
2 ![]() |
hooni | 2017.03.15 | 8412 |
110 | Develop |
사이버보안실무 수업 메모
![]() |
hooni | 2017.03.23 | 0 |
109 | Develop |
[ios] Xcode에서 특정 파일만 ARC 따로 설정하는 방법
![]() |
hooni | 2017.03.29 | 1099 |
108 | Database | [mysql] 쿼리 실행시 ERROR 1366 (HY000) : incorrect string value : for column 3 | hooni | 2017.03.30 | 8985 |
107 | Etc | 사이버보안실무 수업 메모 | hooni | 2017.03.30 | 955 |
106 | Develop |
[ios] 비디오,네트워크,소셜로그인 테스트
![]() |
hooni | 2017.04.04 | 810 |