일반적인 개발팀은 어떻게 구성되어 있을까?
기획자 (PM)
Product Manager. 개발하고자 하는 서비스를 정의하고 기획하는 역할을 담당하는 직군.
개발하려는 시스템이 주는 가치 정의부터 세세한 기능들의 기획 및 정의를 구현하고 지속적으로 고객들과 커뮤니케이션 하면서 기능들의 정의와 기획을 발전시켜 나가는 역할.
선택사항이지만 뛰어난 PM이 되려면 개발 프로세스와 자세한 개발 사항을 이해하고 지시, 가이드 할 수 있는 개발기술이 있으면 좋다.
디자이너
일반적으로 웹 시스템 개발에서 UI(User Interface) 및 UX(User Experence)를 구현하는 역할을 담당하는 직군.
사용자가 서비스를 잘 사용할 수 있도록 디자인하는 역할.
프론트엔드 개발자
프론트엔드 시스템의 UI, UX를 구현하는 역할을 담당하는 직군.
백엔드 개발자
백엔드 시스템은 크게 2가지 분야로 나눌 수 있는데, API 개발을 담당하는 개발자 그리고 데이터 수집, 분석, 관리 등의 데이터 관련 시스템을 담당하는 개발자로 나눌 수 있다.
두 분야는 많이 다르며 요구되는 기술이나 능력도 차이가 있다. 주로 데이터를 처리하고 분석하는 시스템 구현이 API 구현보다 난이도가 높다. 따라서 경력과 경험이 많은 백엔드 개발자들이 주로 담당한다.
데브옵스 (DevOps)
Development Operation. 개발 분야에서 나타나는 일종의 추세. 개발자가 시스템 개발뿐 만 아니라 시스템 운영까지 담당하는 것을 의미한다.
클라우드 서비스가 발달하면서 실제 서버 하드웨어를 다루지 않게 되고 자연스럽에 시스템 운영 담당자 없이 개발자들이 직접 시스템 인프라스트럭처를 구현하는 추세이다.
또한 시스템 운영뿐 만 아니라 빌드, 테스트, 배포 등 개발에서 배포되기까지의 과정을 자동화하여 전체적인 개발 사이클을 효율적으로 더 빨리 진행될 수 있는 개발 환경을 구축하는 역할도 담당한다.
최근에는 IAC(Infrastructure As Code) 개념의 발달로 서버 환경 설정부터 전체적인 시스템 인프라스트럭처 구현 및 관리까지 자동화가 가능하다.
개발자라면 개발 능력과 함께 반드시 데브옵스 능력도 키우는 것이 좋다.
풀스택 개발자
프론트엔드 개발과 백엔드 개발 둘 다 가능한 개발자.
시스옵스 (SysOps)
시스템 인프라스트럭처(System Infrastructure)의 구현과 관리 및 운영을 담당하는 직군. 실제 하드웨어를 다룬다. 서버를 직접 설치하고 운영하며 그 외 물리적인 네트워크 구축 및 운영 등 시스템 인프라스트럭처 운영에 필요한 모든 부분을 담당한다.
클라우드 서비스가 대세가 되면서 수요가 감소하고 있다.
데이터 사이언티스트 (Data Scientist)
데이터 분석에 필요한 알고리즘과 모델링의 구현을 담당하는 직군.
많은 양의 데이터를 분석하고 그 속에서 새로운 가치를 도출할 수 있는 데이터 사이언티스트의 수요가 증가하고 있다.
데이터 엔지니어 (Data Engineer)
데이터 사이언티스트가 데이터를 분석할 수 있도록 데이터를 정리하고 정석화시키는 시스템을 구현하는 직군.
테스터 (Tester)
시스템을 테스트하여 검증하는 역할을 담당하는 직군.
테스터는 크게 2가지 역할로 나눌 수 있는데, 하나는 QA(Quality Assurance)로 직접 손으로 테스트하는 매뉴얼 테스팅을 담당한다. 다른 하나는 테스트 자동화 시스템을 구현하는 테스터(Software Engineer in Test)들이다.
내가 이제 까지 해 온 역할은 무엇이고, 앞으로 하고 싶은 역할은 무엇인가?
참고 : 책 <깔끔한 파이썬 탄탄한 백엔드>