좋은 개발자의 6가지 특징
업데이트:
좋은 개발자의 6가지 특징
개요
최근 프로그래머스 블로그에서 개발자로서 굉장히 동기부여가 되고 나를 되돌아보게된 글이 하나 있었습니다.
좋은 개발자의 6가지 특징을 주제로 프로그래머스에 포스팅된 글입니다.
개발자는 항상 현재보다 더 나은 개발자로 성장하려는 목표가 있고, 최고의 개발자가 되는것이 대부분 개발자의 최종목표일 것 입니다.
그 과정에서 우리는 좋은 개발자의 기준을 프로그래밍, 기술적 역량으로만 평가하곤 합니다. 하지만 좋은 개발자란 개발적 역량도 중요하지만 1인 개발자가 아닌 회사라는 조직에서의 개발자는 여러가지 관점에서 역량을 보게 됩니다.
그 내용을 해당 블로그 내용을 통해 소개해보고자 합니다.
원문: https://prgms.tistory.com/219
본문
개발자의 전문성 요소들을 위한 인터뷰를 통해 도출된 6가지 카테고리입니다.
아래 카테고리 기준으로 하나씩 살펴보도록 하겠습니다.
- 개발력
- 기획력
- 협업능력
- 학습능력
- 성향
- 도메인지식
개발력
- 설계능력
- 클린코드를 짤 수 있는 능력
- 버그 없는 코드
- 다양한 라이브러리를 알고 활용하는 능력
- 튜닝/리팩토링 하는 능력
- 코드를 빠르게 파악하는 능력
- CS지식
- 디버깅 능력
보통 개발자 하면 개발력을 가장 큰 비중으로 생각합니다. 하지만
‘개발력이 뛰어난 사람’
이 곧‘좋은 개발자’
는 아닙니다. 좋은 개발자를 정의하는 데 있어서 개발력 이외에 다른 부분들에 대한 언급이 더 많았습니다. 즉, 개발력은 좋은 개발자가 되기 위한 선제 조건에 해당하는 것 같습니다.
기획력
좋은 개발자에게 필요한 역량중 기획력은 개발력만큼이나 많이 언급된 카테고리입니다.
개발자에게 기획력이 왜 필요할까요?
기획적인 이해도가 부족하다면 만들어 놓은 코드가 성과를 내기 어렵기 때문입니다. 코드를 통해 구현하는 기능은 결국 어떤 문제를 해결하기 위한 건데 기획적인 이해도가 떨어진다면 그 문제를 잘 해결하지 못하는 결과물을 내게 됩니다. 기획자가 있더라도 모든 상황에 대한 처리를 명시해 주기는 어렵기 때문에 좋은 개발자라면 내가 만드는 코드가 어떤 문제를 해결하기 위해 필요한 것인지를 이해하고 작업해야 합니다.
협업능력
- 함께 성장하기 위한 노력과 지식의 공유
- 개방성
- 적극성
- 설득력
개발자가 함께 일하는 대상에는 동료 개발자뿐만 아니라 기획/디자이너/영업/CS 등 다양한 이해관계자가 있습니다. 이런 다양한 분들과의 협업이 있어야 성과를 낼 수 있기 때문에 좋은 개발자라면 좋은 협업 능력을 가지고 있을 겁니다.
학습력
개발자만큼 계속해서 새로운 기술을 공부해야 하는 직업도 드물 겁니다. 그만큼 빠르게 기술 기반 자체가 변화하기 때문이지요. 그래서 학습력이 중요한 개발자의 역량으로 언급되었고 각각의 소항목은 다음과 같습니다.
- 깊게 살펴보는 탐구성향
- 새로운 시도에 대한 적극성
- 학습 습관
- 지속적인 개선
학습이 자신의 이해를 넓혀가는 과정이라고 생각해 보면 1번은 깊이를 더해가는 과정으로, 2번은 넓게 알아가는 과정으로 이해할 수 있습니다.
깊게 살펴보는 탐구 성향
‘깊게 살펴보는 탐구 성향’
은 내가 이미 쓰고 있는 언어/라이브러리/프레임워크 등이 더 구체적으로는 어떻게 동작하는지를 깊이 살펴보는 성향입니다. 문서에 적혀있는 동작 방식만 알고 쓰는 것이 아니라 더 깊이 들어가서 실제로 어떻게 구현되어 있는지를 살펴보는 사람들이 이런 성향을 가지고 있다고 할 수 있습니다. 가장 쉬운 예로 파이선에서 list에 아이템을 넣을 때 +=을 쓰지 않아야 하는 이유를 알기 위해서는 +=이 어떻게 동작하는지에 대해 살펴보아야겠지요. 내가 일상적으로 사용하는 기능들이 어떻게 동작하는지를 궁금해하고 하나씩 파 보는 것도 좋은 개발자로 가는 빠른 방법이라고 합니다.
새로운 시도에 대한 적극성
‘새로운 시도에 대한 적극성’
은 하나를 깊게 파는 것이 아니라 여러 가지를 알아가려는 노력인데요. 하나를 깊게 파는 것도 중요하지만 계속해서 새로운 시도를 해 보면서 하나의 tech stack에만 갇히지 않는 것도 좋은 개발자의 중요한 자질입니다.
‘학습 습관’과 ‘지속적인 개선’은 학습력을 유지하기 위해 필요한 요소입니다. 좋은 개발자들은 학습하는 게 습관이 되어 있고 이렇게 배운 것들을 자신의 프로덕트에 적용해서 지속적으로 개선해 나갑니다.
성향
- 하드워킹
- 근원적 문제해결
- 끈기
- 성실성
- 진실성
좋은 성향이라는 것이 좋은 개발자에게만 요구된다기보다는 모든 프로페셔널들에게 요구되는 부분일 겁니다.
도메인 지식/경험
백엔드 개발자라고 하더라도 게임 서비스의 백엔드 개발과 금융 서비스의 백엔드 개발은 다를 수 있습니다. 해당 도메인에서 요구하는 기본적인 지식이 다르기 때문이지요. 좋은 개발자라면 자신이 일하는 영역의 도메인 지식을 갖추고 있어야 합니다. 도메인 지식이 있는 경우 유사한 상황에 대한 경험이 많기 때문에 그만큼 빠른 의사결정을 할 수 있는 게 장점일 겁니다.
마무리
이렇게 평소에 좋은 개발자로의 다짐만 할 뿐 구체적으로는 생각하지 못했던 다양한 개발자의 능력요소를 살펴보았습니다.
현재까지 개발을 하며 커리어를 쌓아가고있는 나의 모습에서 개발자로서 부족한 역량이 무엇인지 파악하고 장점화된 역량들을 어떤것들이 있는지 나를 되돌아보며 자기객관화를 할 수 있었습니다.
또한 더 나은 개발자로, 좋은 개발자로 성장하기위해 앞으로의 방향성을 결정하는데에도 큰 도움이 되었습니다.
앞으로 계속 커리어를 나아가면서 쉽게 흔들리지않는 방향성을 지키기위해 해당 포스팅을 통해 종종 자기검증을 하지 않을까 싶습니다.
댓글남기기