Core Concepts
뛰어난 소프트웨어 엔지니어는 뛰어난 코딩 능력, 현재 작업의 가치 극대화, 정보에 기반한 의사결정, 타인의 의사결정 지원, 지속적인 학습 능력을 갖추고 있다.
Abstract
이 연구는 마이크로소프트 연구진이 1,926명의 엔지니어, 아키텍트, 기술 전문가를 대상으로 수행한 광범위한 조사 결과를 바탕으로 한다. 연구진은 뛰어난 소프트웨어 엔지니어의 특성을 4가지 범주로 구분했다:
성격 특성: 열정, 호기심 등
의사결정: 현재 상황 파악, 대안 모색, 결과 예측 등
팀워크: 합리성, 영향력, 의사소통, 신뢰 구축 등
엔지니어의 코드: 아름다운 소프트웨어 구현에 대한 태도
이 중 가장 중요한 5가지 특성은 다음과 같다:
뛰어난 코딩 능력: 복잡한 문제를 다룰 수 있는 정신적 역량을 갖추고 코드 디테일에 주목
현재 작업의 가치 극대화: 소프트웨어 제품의 맥락을 고려하고 장단기 수요를 분석하여 최적화
정보에 기반한 의사결정: 적절한 절차를 거쳐 충분한 정보를 바탕으로 판단
타인의 의사결정 지원: 다른 이들의 업무를 단순화하고 의사결정을 돕는 능력
지속적인 학습: 기존 기술 숙련도 못지않게 새로운 기술 습득 능력이 중요
연구진은 개인적 호의나 장시간 근무 등은 부정적 요인으로 평가했다.
Stats
연구 대상: 1,926명의 엔지니어, 아키텍트, 기술 전문가
조사 항목: 54가지 뛰어난 엔지니어의 특성
Quotes
"Without code, there is no software, so great software engineers must be able to write good code."
"Great engineers set themselves apart by considering the context of their software product and optimizing their current activities while accounting for potential future expenses and benefits."
"Great engineers set themselves apart by following the appropriate procedures to arrive at well-informed judgments."