1. PM
- IT 프로젝트의 개발부터 출시, 외부 팀과의 커뮤니케이션 및 조율 등 프로젝트 전반을 관리하는 업무를 담당
- Frontend / Backend는 '어떤' 일을 '왜' 하는지, iOS / aOS 개발자는 어떤 차이가 있는지 등을 알아야함 ==> 이슈 발생 시 원인 파악을 함께 할 수 있고, 해결책 또한 함께 생각 가능
- 서비스 개발 일정을 확인하고 현재 상황을 알림
- 서비스 개발 이슈를 발견하여 해결하거나 보고
- 팀 외부 관계자와 커뮤니케이션 담당
- 회의를 주관하고, 결론 및 추적해야 할 사항 정리
- 서류작업에 중점을 둠
2. PL
- PM을 도와 프로젝트를 리드하는 사람
- 현업(고객)과 대화를 통해 구체적인 요구사항을 기술적으로 분석
- 업무에 대한 정리
- 무엇을 개발할지 어떻게 개발할지에 대해서 고객도 만족하고 개발자도 만족하는 방법을 찾는 일
- 본인의 기술적인 부분에 대해서 클라이언트와 커뮤니케이션 하고, 업무 분배와 일정관리 및 조율 등의 매니징 역할을 함
3. 리드개발자
- 리드 개발자는 시니어 개발자의 역할을 할 수 있으며, 전반적인 설계 지침을 제공하고 제품 개발 초기 단계에 투입할 수 있다
리드 개발자 업무
- 제품개발 및 일정 계획 지원
- 마케팅 또는 영업팀에 피드백 제공
요구 되는 기술력
- 좋은 커뮤니케이션 기술
- 제품에 대한 충분한 이해
- 관리, 제품 개발, 마케팅 등과 같은 다른 분야의 이해
- 기능 또는 시스템 설계를 위한 기술 사양 계획 및 문서화
- 애플리케이션의 설계, 개발, 코딩, 테스트 및 디버깅을 개발팀에 지시
참조: https://snaphunt.com/resources/job-descriptions/lead-developer-job-description
4. 시니어 개발자
시니어 개발자가 갖춰야할 4가지
- 기술적리딩
- 후임 개발자가 기술을 스스로 깨우칠 수 잇도록 인사이트를 제공하며, 때때로 리뷰를 통해 함께 세부적인 것을 구현
- 업무적 리딩
- 작게는 프레임워크나 라이브러리 선택 , 크게는 아키텍쳐까지 여러가지 진영이 존재하고 늘 우리는 선택에 기로에 서게 됨
- 적용 시점 , 구현 일정 추정을 내부적으로 내리며 대외적으로 협의해하는 경우도 언제나 요구 됨
===> 이러한 결정과 추정 그리고 협의적인 측면은 기술적인 선택과 기술의 적용시점 판단 그리고 구현 규모나 일정 추정에 대해 적극적인 의견을 내고 하나의 의견으로 만들어야함!
- 생산성 우위
- 요구사항을 빠르게 만드는것에 그치는 것이 아니라 품질이 보장되는 구현체를 만듬
==> 만약 , 구현체의 문제가 발생하더라도 빠르게 해결하는 모습을 생산성이 높다고 평가 받음
- 난제의 해결
- 구현하기 어려운 제품의 기능을 레퍼런스를 보면서 체계적으로 만드는것
- 까다로운 요구사항이 제시 되었을때 다양한 오픈소스를 찾아 그 기반으로 커스터마이징해서 해결 하는 것
- 추가 (코드 작성 방식 , 질문 방식 등등)
- 작성한 코드는 유지보수와 확장성에 염두에 두고 작성
- 코드를 다뤄야하는 누군가들에 대해 생각
- 올바른 질문을 하는 방법과 질문을 처리하는 방법을 알고 있음
- 올바른 조치를 행하여 질문을 수행하는 방법을 알고 있음
참조 : https://techblog.woowahan.com/2525/
시니어 개발자와 리드개발자 차이점은 ?
- 리드 개발자는 시니어 개발자와 마찬가지로 코드에 대한 모든 것을 알고 있지만, 코드에 관한 모든것에 대해 훨씬 더 많은 지식을 가짐 (+ 비즈니스 감각)
- 리드 개발자는 일반적으로 코드 측면의 최종 판단자 역할을 함
- 시니어 개발자의 의무 중 일부는 후배 구성원들을 멘토링하고 훈련 시킴(ex. 코드 리뷰)
참조 : https://www.quora.com/Whats-the-difference-between-a-senior-developer-and-a-lead-developer
5. 주니어 개발자
- 주니어 개발자는 디자인 패턴, 아키텍처, 테스트 자동화, 성능, 보안 등을 아는 것은 시니어 개발자와의 지식 격차를 좁힐 수 있는 좋은 방법
- 주니어 개발자는 경험이 없다
- 간단한 코딩이 익숙하지 않음 ==> 멋진 코드를 작성
- 기발한 코드 한 줄과 복잡한 추상화로 주니어 개발자로 인식 가능
- 비용을 희생시키면서까지 코드에 집중
- 아키텍처 디자인을 하지 않는다
- 주니어 개발자는 필요한 리소스를 제공받거나 올바른 방향으로 크게 밀어줘야 한다
6. 다음 단계로 더 나아가기
주니어 -> 미드레벨 ?
- 주니어 개발자는 경험이 없기에 전체 개발 과정을 최소한 두번 반복하는 것이 중요 ==> 이렇게 많은 함정에 빠지고 다음에는 이를 회피하는 방법을 배우게 됨
- 코딩과 관련하여 간단하게 작성하는 방법을 배워야함 ==> 코드의 일부분을 보고 다음에 작성할 사람에 대해 생각하기 / 또한 프로세스 진행 상황을 더 잘 이해할 수 있도록 디버깅
- 모범 사례에 익숙해지고 아키텍처, 성능, 보안등에 대해 배우기
미드레벨 -> 시니어 ?
- 매우 어려울 수 있다
- 시니어 레벨에 도달하려면 아무도 모르는 작업을 수행할 준비가 되어있야한다 ==> 즉, 작업을 수행하는 이상의 것을 알아야 한다
- 중요한 업무는 , 경험이 부족한 개발자를 돕는 것! 다른 개발자가 무언가를 수행하는 방법을 모르는 경우를 대비
참조 : https://erwinousy.medium.com/
7. 기획자
프로젝트 구현의 시작(화면UI설계서)이기에 가장 중심에 있음
- 클라이언트를 포함하여 PM/디자이너/퍼블리셔/프로그래머 중간에서 상호간 커뮤니케이션의 주체가 됨
- 클라이언트의 요구사항을 디자인하고 퍼블리싱하고 프로그래밍 하는데 필요한 문서화 업무 및 의사결정을 함
커뮤니케이션
- 유능한 기획자가 되기 위해서는 커뮤니케이션이 중요함
- 화면 UI를 설계하고 기능을 정의함에 있어 사용자에게 보다 나은 사용성을 제공하고, 공급자에게는 보다 나은 운영환경을 제공하여 그것을 구현하는 디자이너/퍼블리셔/프로그래머에게 주어진 환경(일정,업무스킬 등)에서 최적의 퍼포먼스를 이끌어 내는 것! ==> 커뮤니케이션에 달려있음
아키텍처
- 정보구조/화면UI 설계와 기능정의를 비롯한 기획자 실무이다.
- 기획자는 화면의 단면만 보고 설계하면 NO! ==> 본 사업의 목적을 항시 리마인드하고 명확한 요구사항을 바탕으로 확장성 있는 설계안을 만들어내야 함
문서 작업
- 구두로 하는 커뮤니케이션보다 프로젝트에서는 문서를 통한 커뮤니케이션이 더 많기에 문서를 만들때도 무엇을 어떻게 커뮤니케이션 하는 것이 가장 효과적인지를 고민해서 만들어야함
- 화면 UI 설계서(스토리보드)가 대표적인 문서작업
- 스토리보드는 디자이너가 화면 디자인하기 위한 컨텐츠 및 UI요소 확인 , 퍼블리셔는 화면구조 확인, 프로그래머는 케이스별 기능정의 등을 보게 되며, 이를 모두 신경써서 만들어야함
- 정보구조도, 기능정의서, 화면명세서 등을 만들때에도 누구와 어떠한 커뮤니케이션을 하기 위해서 만드는것인지 고민을 해야한다
- 추가로, 이슈를 해결하기 위한 비정규 산출물 문서를 만드는것도 커뮤니케이션에 좋다
참조 : https://brunch.co.kr/@nonem/8
8. 퍼블리셔
퍼블리싱을 주로 하는 사람
- 퍼블리싱 ? 웹사이트를 제작할 때, 웹 디자이너가 디자인한 것을 웹 표준 성과 접근성에 부합하도록 재정리하는 것이며 퍼블리싱을 목표로 웹 디자인 작업과 코딩으로 웹 사이트를 제작하고 편집하는 일을 함
- 프론트엔드 개발자와 구분 짓기 위해 사용됨
- 퍼블리셔가 되면 주로 HTML과 CSS 중심의 업무를 담당 ==> 최근에는 JS의 중요도가 높아지면서 JS를 다루는 사람들도 많아지고 있음
프론트엔드 개발자와 퍼블리셔와 다른점은 ?
- 더 동적인 화면을 구사
- 사용자의 ID나 PASSWORD를 입력했을 때, 그것이 유효한지 확인
- 만약, ID 입력이 잘못됐을때 상황에 따른 알림을 주는 역할도 하게 됨
- 실제 작동 가능한 웹페이지를 구현
- 프론트앤드 개발자는 API를 웹페이지에 적용하여 백엔드와 연동되는 실제 작동 가능한 웹페이지를 구현
- 크로스 브라우징, 웹페이지의 호환성, 페이지의 개선을 맡음
- 단순히 퍼블리싱 하는 것에 나아가 웹사이트 전반에 대해 관리하고 유지 보수하는 일까지 맡음
퍼블리셔와 프론트엔드 개발자가 사용하는 기본 기술은?
- HTML
- 브라우저를 통해서 보는 화면의 구조를 잡아주는 역할
- CSS
- 기본 틀을 구성한 HTML에 디자인을 입히는 역할 (ex: 폰트, 색상, 사진의 모양 등등)
- JS
결론 !
- 퍼블리셔 : 퍼블리싱에 집중해서 일을 처리하는 사람
- 프론트엔드 개발자 : 사용자가 사이트와 상호작용하는 모든 부분에 대한 개발, 관리, 유지보수를 하는 것
참조 : https://content.v.kakao.com/v/5e536c3a7391205c8a532bca