문제해결 역량에 따른 경력 수준
문제해결 역량에 따른 경력 수준 4단계
•
진입 누군가 해결했던 문제를 배우고, 실습하는 단계
•
신입 누군가 해결했던 문제를 실무에서 적용해 보는 단계
•
주니어 누군가 해결했던 문제를 개선하는 단계
•
시니어 누군가 해결하지 못한 문제를 도전하는 단계
진입단계 : 누군가 해결했던 문제를 배우고, 실습하는 단계
•
문제해결 수준 : 실무에서 겪는 문제를 이해하지 못하는 수준
•
행동 : 누군가 정리한 지식을 습득하고, 실습하여 성장함
•
행동 예시 : 전공 교육, 직무 교육, 자격증 취득, 스터디, 공모전, 해커톤 등
신입단계 : 누군가 해결했던 문제에 관해 배운 것을 실무에서 적용해 보는 단계
•
문제해결 수준 : 실무에서 겪는 문제를 이해하는 수준
•
행동 : 비즈니스 환경에서 실무 문제에 부딪히고 해결하며 성장함
•
행동 예시 : 동작 개선, 버그수정, 장애 대응 등
주니어 단계 : 누군가 해결했던 문제를 개선하는 단계
•
문제해결 수준 : 실무에서 겪는 문제를 해결하는 수준
•
행동 : 비즈니스 환경에서 실무 문제를 자동화/최적화/효율화하며 비즈니스 개선에 기여 함
•
행동 예시 : 새로운 기능 개발, 자동화, 최적화, 효율화, 리팩토링, 개발 프로세스 개선 등
시니어 단계 : 누군가 해결하지 못한 문제를 도전하는 단계
•
문제해결 : 혁신을 위해 누군가 해결하지 못한 실무 문제에 도전하는 수준
•
행동 : 비즈니스에 혁신을 통해 비즈니스 문제를 개선함
•
행동 예시 : 개발 프로세스 개선, 아키텍처, 대규모 변경, 조직 관리 등
커리어매니저가 생각하는 신입, 주니어 개발자란?
커리어 매니저 생각하는 신입 개발자란?
제가 정의하는 신입 개발자의 정의는 실무에서 겪는 문제를 이해하고, 누군가 해결했던 방법으로 문제를 해결하는 개발자라고 생각합니다.
신입 개발자가 성장하기 위해서는 세 가지가 중요하다고 생각합니다.
•
프로그래밍 언어와 도구 능숙하게 활용
•
신입 개발자 기본기
•
조직 적응할 수 있는 역량
현업에서 신입 개발자를 조직에 적응하기 위해 다음과 같은 노력을 하고 있습니다.
•
•
•
•
•
프로그래밍 언어와 도구를 능숙하게 활용
•
개발 환경을 이해하려고 노력합니다.
인프라, 통합개발환경, 코드 베이스, 개발 프로세스 등을 이해하려고 노력합니다.
•
특정한 프로그래밍 언어를 깊이 이해하고, 구현하려고 노력합니다.
프로그래밍 언어의 고유한 특성을 제대로 살려 좋은 품질의 프로그램을 개발하려고 노력합니다.
•
특정한 프로그램을 구현, 개선, 장애 대응 등 맡은 책임에 최선을 다하려고 노력합니다.
동작 개선, 버그수정, 장애 대응 등의 노하우를 쌓으려고 노력합니다.
신입 개발자의 기본기
•
서비스/솔루션/제품 개발을 위해 개발 도구를 잘 활용하려고 노력합니다.
개발 도구와 연관된 모범 사례 (외국)문서를 읽고 적용할 수 있도록 노력합니다.
•
주관과 철학을 가지고 프로그램을 분석 또는 학습하려고 노력합니다.
이해가 안 되는 부분이 있으면 책, 서적 등을 통해 분석하고 자기 것으로 만들려고 노력합니다.
•
컴퓨터 과학의 기본 지식을 기반으로 프로그래밍하려고 노력합니다.
자료구조, 알고리즘, 패턴, 패러다임, 운영체제, 데이터베이스, 네트워크 등 지식을 기반으로 소통할 수 있는 결과물을 만들려고 노력합니다.
개발 조직에 적응할 수 있는 역량
•
코드 베이스 및 개발 환경을 이해하려고 노력합니다.
•
개발 문화에 적응하려고 노력합니다.
•
조직의 일 관리 방법에 적응하려고 노력합니다.
•
조직의 협업 도구 및 협업 방법에 적응하려고 노력합니다.
주니어 개발자로 성장하기 위한 선배의 조언입니다.
문제를 처리하는 대만 급급해하지 않고, 원칙을 지켜야 합니다.
•
이론까지 탄탄한 개발자가 될 수 있도록 노력해야 합니다.
•
새로운 기술을 접할 때는 README, CHANGELOG, 공식 문서를 읽으려고 노력해야 합니다.
팀 원의 코멘트 및 피드백을 수용하고 성장한다.
•
제대로 질문하는 방법을 배워야 합니다.
•
코드 리뷰의 힘듦이 오히려 감사함으로 느껴야 합니다.
매일 도전의 연속이 되도록 한다.
•
공부하는 삶을 가져야 합니다.
•
개발에 흥미를 잃지 않아야 합니다.
•
이미 잘 만들어진 소프트웨어에서 선배들의 고민을 배워야 합니다.
업무를 효율적으로 수행할 수 있도록 하기 위한 문서화, 도구 제작, 자동화해야 합니다.
커리어 매니저가 생각하는 주니어 개발자란
제가 정의하는 주니어 개발자 정의는 개발 선배가 해결한 프로젝트를 구축할 수 있는 역량, 실무 문제를 해결하거나 개선할 수 있는 역량이 있는 개발자라고 생각합니다.
주니어 개발자로 성장하기 위해서는 아래 네 가지가 중요하다고 생각합니다.
•
프로그래밍 역량
•
엔지니어링 역량
•
개발자의 생산성을 개선하는 역량
•
시장의 변화에 맞게 제품의 가치를 개선하는 역량
프로그래밍 역량
•
프로그래밍의 모호성을 이해하고, 가독성 높고, 안전하며, 유지 관리 가능한 코딩을 하려고 노력합니다.
•
아키텍처 패턴, 디자인 패턴, 관형어 패턴 등 모범 사례를 활용하여 코드베이스를 유지 관리 가능하게 노력합니다.
•
컴퓨터 과학의 기본 지식을 기반으로 프로그래밍하려고 노력합니다.
엔지니어링 역량
•
코드 컨벤션과 코드 리뷰를 통해 코드 베이스가 일관되게 관리하려고 노력합니다.
•
브랜치 전략과 버전관리 전략을 통해 코드 베이스를 관리하고, 최신버전을 추적할 수 있도록 노력합니다.
•
단위 테스트, 통합 테스트를 통해 시스템 복잡도가 높아지더라도 안전하게 배포할 수 있도록 노력합니다.
•
빌드 시스템틀 통해 빌드 속도와 정확도 더 나아가 자동화할 수 있도록 노력합니다.
•
리팩토링을 통해 응집도를 높이고, 결합도를 낮춰 기술 부채를 줄여 유지보수 가능하도록 노력합니다.
개발자의 생산성을 개선하는 역량
•
개발자 생산성에 관한 지표를 팀원과 협의하고, 개선하려고 노력합니다.
•
개발 도구 및 협업 도구 등을 최신 기술 상태로 유지하려고 노력합니다.
•
개발 표준을 알고 관련 내용을 연구하여 깊이 있게 알려고 노력합니다.
•
아키텍처 패턴을 학습하고 확장할 수 있는 아키텍처를 설계하려고 노력합니다.
•
다른 사람이 쉽게 이해할 수 있도록 문서화하고 공유하려고 노력합니다.
시장의 변화에 맞게 제품의 가치를 개선하는 역량
•
시장에서 요구사항에 맞게 아키텍처를 설계하려고 노력합니다.
•
제품의 품질을 높이기 위해 아키텍처를 설계하려고 노력합니다.
•
시장 변화에 대응하기 위해 개발 속도(생산성)를 높일 수 있는 방법을 찾으려고 노력합니다.
•
시장 변화에 대응하기 위해서 유지보수 비용을 감소시키는 방법을 찾으려고 노력합니다.
시니어 개발자로 성장하기 위한 조언
동료가 더 잘할 수 있도록 도와주어야 한다.
•
일이 주어지기 전에 먼저 필요한 일을 알아야 합니다.
•
팀이 일을 잘하기 위한 밑바탕을 만들어야 합니다.
주변에 좋은 영향을 주어야 합니다.
•
공유 문화를 정착할 수 있게 도움을 주어야 합니다.
•
심리적 안정감을 구축할 수 있도록 도움을 주어야 합니다.
제품에 더 큰 가치를 담아 시장에 내보려고 노력해야 합니다.
마무리
커리어 매니저가 생각하는 주니어 개발자를 소개해 드렸습니다.
개발자는 컴퓨터와 프로그래밍 언어를 통해 소통하며 가상 세계에서 문제를 해결하는 직군이라고 생각합니다. 도구나 기술에 집중하는 것을 넘어서 누군가 풀지 않은 세상의 문제에 도전할 수 있도록 성장하길 기대합니다.
mlp.pisik@gmail.com