과거의 비 IT회사에서 ‘전산실’이라고 부르고 현재 우리가 ‘개발하는 사람’이라고 부르는 사람들은 사실 굉장히 세분화되어 나누어져 있다. ‘진료는 의사에게 약은 약사에게’ 찾아야 하듯이 개발자도 경우에 따라 의논하고 협업해야하는 사람이 다르다. 물론 스타트업에서는 풀-스택(full-stack) 개발자라고 해서 어떤 일이든 다 할 수 있는 전천후 개발자가 많지만 서비스가 크고 복잡할수록 개발자의 역할도 점점 세분화된다.
일하면서 만나게 될 수 있는 ‘개발하는 사람들’의 종류를 기획자의 시선으로 정리해봤다. 다소 용어가 어렵더라도 그냥 쓰윽 읽어두면 나중에 일하면서 이 사람들의 역할을 곱씹어 볼 수 있다. 이런 내용을 소재로 개발자들에게 다가가서 어떤 일을 하는 지 물어보고 친해지는 기회로 삼으면 좋을 것 같다.
먼저 기획자가 직접 만나서 일할 기회가 있는 개발자들부터 살펴보자.
l 웹퍼블리셔(UI개발자) : UI개발자는 디자인의 PSD 파일이나 Sketch 작업파일을 전달받아서 HTML 중심의 마크업을 포함한 기본 화면구성과 CSS를 개발한다. 눈에 보이는 인터페이스의 인터렉션 등을 케이스별로 작업한다. 동작에 대해서 상의할 경우 이 경우가 많다. 이미지로 들어가야할 영역과 텍스트로 들어가야할 영역, 터치 영역의 넓이도 이들과 상의해야한다.
l 프론트엔드 개발자 : 브라우저 위에서 동작하는 코드를 작성하는 개발자로, 모바일환경이 되면서 그 중요성이 더 높아졌다. 최신 HTML5와 VueJS나 AngulrJS 등 자바스크립트 언어를 활용하여 백엔드 개발에서 만들어진 API를 통해서 끌어온 데이터를 화면상에 뿌려주고 실제 작동할 수 있도록 만든다. 클라이언트 개발쪽이라고도 불리며 고객과의 실제 UI의 개발을 한다는 점에서 자주 만날 기회가 있다.
l 백엔드 개발자 : 백엔드 개발이란 서버 프로그램을 개발하는 개발자로, 소위 ‘Back단’에 존재하는 데이터베이스, 웹서버, 네트워킹 등 인프라에서 필요한 데이터를 호출하는 쿼리(Query)를 통해 데이터를 불러와서 클라이언트쪽인 프론트화면으로 전달될 수 있도록 API를 만드는 역할을 한다. (과거에는 퍼블리셔가 전달한 HTML에 쿼리 등을 그냥 합쳐서 만들어서 웹이 무거웠으나 요즘은 API까지만 만든다) JAVA나 C# 등의 언어를 사용하는 경우가 많으나 최근에는 Node.js의 등장으로 javascript를 통해 작업하기도 한다. 상대적으로 비즈니스 로직에 대해 더 많이 이해하고 있어야, 프론트엔드 개발에서 사용될 데이터를 적재하고 불러오는 설계를 효율적으로 할 수 있다. 때문에 기획에서 리뷰를 하게될 때 데이터 설계에 대한 논의를 충분히 해야하는 대상이다.
l APP개발 (IOS/안드로이드) : IOS와 안드로이드 앱은 언어와 개발환경이 다르다. 따라서 앱에 대해서 개발해야하는 상황이 있다면 개발자는 최소 2명일 수 있다. 똑같이 생긴 앱을 IOS용과 안드로이드용을 만들었다면 완전히 개별 앱으로 생각하고 테스트를 따로따로 같은 수준으로 해야한다. 똑 같은 방식의 UI도 네이티브앱을 만들 경우에는 과정이 다르고 결과물만 비슷하게 보이는 것이라고 봐야한다. 또한 기획에서 각 앱의 기본 디자인 가이드에 대해서 이해를 높이려면 각 개발자들과 충분히 상의하여 OS별 차이에 대해서 인지해야한다. 웹을 많이 사용하는 하이브리드앱의 경우에도 동일한 웹화면을 쓰더라도 각 앱의 웹뷰어가 다르기 때문에 결과값이 다소 다를 수 있으므로 앱개발자와 프론트엔드 개발의 협업이 될 수 있도록 함께 리뷰하는 것이 좋다.
여기까지가 주로 만나게 되는 개발자라고 한다면, 기획자가 자주 보진 않아도 함께 일해야하는 개발자들도 있다.
l SW 형상 관리 빌드 담당자 : 형상관리란 계속 업데이트 되는 프로그램을 버전별로 관리하는 기능을 말한다. 형상관리 담당자는 깃허브, SVN 등의 형상관리 프로그램에 버전별로 소스를 담당하고 변경되는 소스를 묶어서 합치고(빌드) 서버에 업로드(배포)하는 담당자가 있다. 개발된 산출물이 실제 운영 서버에 반영되는 과정을 책임지게 되며, 혹시나 반영된 프로그램에 문제가 심각할 경우 형상관리를 통해서 이전 버전으로 돌아가는 ‘롤백(roll-back)을 처리한다. 반대로 큰 버그가 있어서 긴급하게 서버에 수정버전을 올려야 할 때도 그들의 도움이 필요하다. (때론 집에 있는 그들을 재택근무 시키게 한다) 요즘은 devOps라고 해서 개발과 형상관리가 한 조직에서 묶여 있는 경우도 많다.
l TA(Technical Architecture) : 앞서 프론트엔드, 백엔드 개발하는 사람들은 이미 정해진 아키텍쳐 안에서 개발을 한다. 아키텍쳐가 뭔지 몰라도 소프트웨어 개발의 큰 틀이라고 생각할 수 있다. 이 때 TA는 데이터, 애플리케이션 아키텍쳐를 지원하는데 필요한 정보기술을 검토하거나 서버나 DB등의 인프라 요소의 구조나 관계를 정의하는 담당자다. 기획자가 만날 일은 거의 없으나 신기술을 활용한 새로운 서비스나 솔루션을 도입하거나 할 때 상의할 수 있는 전문가다.
l DBA(Database Administrator) : 데이터베이스의 테이블 구조를 관리하며 데이터의 정의된 인덱스나 데이터를 불러가는 쿼리가 DB에 부하를 주지는 않는지 검수하는 등의 업무를 하는 관리자다. AWS의 보급으로 과거의 비해 업무가 하드웨어적 관리보다는 좀 더 소프트웨어적인 관리로 바뀌고 있으며 데이터사이언스의 영역의 업무로 전환되기 쉬운 직군의 사람들이다. 기획자가 만날 일은 기존의 데이터를 전체를 이관 또는 변경하는 마이그레이션(migration) 작업이 필요할 때나 신규 서비스를 오픈하기 전에 부하테스트를 시행했는데 데이터를 불러오는 과정에서 부하가 발생되어 기획을 변경해야할 때 만날 일이 생긴다.
l 정보보안 프로그래머 : 정보보호와 네트워크 보안을 위한 방화벽을 관리하고, 해킹이나 DDOS 피해를 막기 위한 설계를 하는 정보보안 전문가에 해당하다. 타사의 서비스를 연결하여 사용하거나 신규서비스가 해킹되지 않을 수 있도록 검수를 받을 때 만날 수 있다. 기획자가 정보보호법을 기반으로 정보보호 정책을 관여하는 전문가에게 기획을 검수한다면 시스템은 이 정보보안 프로그래머들을 통해서 서비스의 해킹 가능성을 막도록 되어 있다. 해외보다 국내에서 굉장히 많이 발달되어 있는 분야로 알려져 있다.
이제, 내 주변의 개발자들이 대체 뭐하는 사람들인지 자세히 살펴보자.
오류가 나서 놀란 토끼눈으로 개발팀에 아무나 붙잡고 이야기한다고 해결되지 않는다.
명확한 담당자가 있다.
물론 이 모든 게 1명일 수도 있지만!
주의사항 :
*개발PL은 Part leader라는 뜻으로 보통 개발 관리자들에게 많이 쓰인다. 이건 개발자를 구분하는 것이 아니라 관리직을 뜻하는 거라서 그냥 그 회사에서 개발자 그룹을 총괄하는 담당자란 뜻으로 보면 된다.
마찬가지로 개발 PM은 프로젝트매니저를 뜻하는 것으로 개발프로젝트를 총괄한다는 것으로 개발자를 뜻하는 말은 아니다.