"시니어 개발자"
개발자를 '시니어'로 만드는 정확한 요소는 무엇일까요? 이것은 분야에서 보낸 년 수로 결정되는 것일까요? 이 정의는 모든 회사와 팀 전반에 걸쳐 일관적일까요?
이 블로그 포스트에서는 소프트웨어 개발 세계에서 '시니어티' 개념을 탐구해보겠습니다. 단순히 경험 년수를 넘어, 시니어 개발자를 차별 지어주는 특성과 기술이 있습니다. 시니어티로의 길에 대해 곰곰히 생각하는 경험 많은 개발자이거나, 기대되는 것을 이해하고 싶어하는 신입 개발자라면, 본 글은 모든 수준의 개발자에게 가치있는 통찰과 관점을 제공할 것입니다.
“Seniority Road”
그래서, 정체불명인 "출세의 길"이 정확히 무엇일까요? 이것은 잘 표시된 길이 아니라 추상적인 여정과 비슷합니다. 메타포를 받아들이고 우리 자신의 것으로 만들어 봅시다!
내 이름은 Einat Mahat이고, 소프트웨어 엔지니어링 분야에서 20년 이상 경험을 갖고 있는 엔지니어링 매니저입니다. 나의 여정은 주니어 개발자로 시작해, 전문 기술과 소프트 스킬을 개발하면서 몇 년간 성장하여 시니어 개발자로 성장했습니다. 지난 8년 동안 나는 IC 경로를 시작으로 연간 관리를 거쳐 오늘날에는 리더들의 리더(그룹 리더라고도 함)이 되었습니다.
지난 시니어 개발자와 엔지니어링 매니저로서, 나는 패노라마처럼 넓은 시야를 갖고 있으며, 여러분과 나눌 통찰은 이론적인 것뿐만이 아닙니다.
10가지 준수 및 지킬 점
이 가이드는 경력 개발자뿐만 아니라 모든 수준의 엔지니어를 대상으로 합니다. "시니어 개발자"나 "시니어 엔지니어"에 대한 구체적인 요구사항은 회사마다 다를 수 있지만, 제가 보기에는 보편적으로 중요한 몇 가지 특성이 있습니다. 이 10가지 명확하고 간단한 가이드를 통해 각자가 자신의 내부 시니어 개발자를 발견할 수 있습니다.
#1 질문하세요!
작년 동안, 몇몇 개발자들을 만나본 적이 있습니다. 그들에게 "시니어 개발자로서 너무 많은 질문을 한다"라는 말을 들었습니다. 그 중 몇몇과 이 문제에 대해 자세히 알아보려 노력했지만, 문제는 "너무 많은 질문"이 아니라 그들이 질문한 방식이었습니다. 나의 의견으로는 어떤 개발자에게나 필수적인 기본 기술은 바로 "질문하는 예술"입니다:
- 언제 물어볼까요: 생각해보면, 항상 질문을 하는 개발자와 "독립적이고 싶어서" 두 날 동안 시간을 보낸 개발자를 우리 모두 알고 있습니다. 적절한 균형을 맞추는 것이 중요합니다.
- 어떻게 물어볼까요: 생각을 정리하고 이미 시도한 것, 문제에 대해 알고 있는 것을 설명해보세요. 몇 문장으로 요약할 수 없다면, 전용 문서나 다이어그램을 준비하는 것을 고려해보세요.
- 누구에게 물어볼까요: 분배를 좋아하는데, 시스템 설계 및 질문할 때 분배함으로써 좋을 때가 없을까요? 문맥이 중요한 경우나 문제를 이해하는 데 시간이 걸리는 경우, 이미 상세히 파고든 누군가에게 접근하는 데 망설이지 마세요.
#2 지식 공유
지식 공유는 개발자들의 일상적인 실천입니다. 직장에서 시작하더라도 사전 지식이 없더라도, 당신의 질문이 답변을 받을 때 다른 사람에게 큰 가치를 제공합니다! 직면한 어려움과 그 해결책을 문서화함으로써, 다른 사람들에게 많은 시간과 노력을 절약할 수 있습니다. 이전에 일하던 회사에서 내 기술 리드는 문서가 부족한 프로세스나 작업 흐름을 발견하면 추가 가치를 제공할 수 있도록 문서 작업을 완료했습니다.
시니어 개발자로써, 당신은 지식을 공유하고 모두가 더 나아지도록 함을 요구받을 것입니다. 넓은 경험이 없더라도 기여하는 가장 간단한 방법은 온보딩 자료와 문서를 개선하는 것입니다.
#3 자원을 효과적으로 활용하세요
제가 종종 이야기하는 바에 따르면, 성공적인 경력을 쌓는 데는 두 가지가 필요하다고 말할 수 있습니다: StackOverflow와 창의력입니다. 어느 정도 농담 이상의 의미가 담겨 있지만, 많은 개발자들 사이에 공통된 특성을 뜻하는 것입니다. 창의력을 발휘하는 것은 쉽게 포기하지 않는다는 것이죠. 이는 주도적으로 일을 처리하고, 문제를 해결하는 방법을 알고 있다는 것입니다.
항상 팀이나 상사가 구원 요청할 때만 의지하지 마세요. 주인의식을 가지고 관여해보세요. 먼저 스스로 문제를 해결하려고 노력해보고, 그래도 필요하다면 질문하는 것도 배워간다는 스킬 중 하나입니다.
#4 선제적으로 행동하세요
일을 위해 고용되었으니 일어나서 일을 해내세요. 당신의 역할의 모든 측면에서 적극적으로 행동하세요. 해결책을 찾을 때 적극적으로 참여하세요. 답변이 당신에게 오기를 단순히 기다리지 말고 적극적으로 찾으세요. 문제 해결을 더 쉽게 돕는 중요한 관계를 구축하기 위해 동료 개발자들과 연결하세요.
리소스를 지혜롭게 활용하는 것을 적극적인 태도와 결합하기 위해 이야기를 하나 전하고 싶습니다: 새로운 회사의 리더십 역할에 도착했을 때, 팀의 Slack 채널을 읽어 사람들과 그들의 일상에 대해 배웠습니다. 읽을 때 명확히 나타난 것은 두 명의 개발자 사이의 대조였습니다. 한 명은 문제를 제기하고 상황을 계속 업데이트하며 의사 소통을 하는 반면, 다른 한 명은 여러 번 "아직 기다리는 중"이라고 업데이트했습니다. 예를 들어, 그는 "누군가"가 환경을 고치기를 두 날 동안 기다렸습니다. 둘 다 경력이 비슷했지만, 누가 시니어 개발자로 보였는지는 분명해 보였습니다.
##5 의사소통
소프트웨어 개발 분야에서 효과적인 의사소통 기술은 중요합니다. 어느 정도, 구두와 서면 의사소통 기술이 필요합니다. 사람들은 당신을 이해해야 하며, 당신은 생각과 아이디어를 명확하게 전달해야 합니다.
몇 년 동안 이해받는 것이 얼마나 중요한지 전혀 알지 못했습니다 — 내 설명을 중간부터 시작하고도 사람들이 왜 이해하지 못하는지 몰랐습니다. 그런데 깨달았죠 — 그들은 내 머리 속에서 무슨 일이 일어나는지 모르는 거예요! 제가 작업한 한 가지는 간결하고 명확한 설명을 제공하는 겁니다. 자신의 메시지를 효과적으로 전달하면서 간결하게 전달하는 법을 배우는 것은 의사 소통의 중요한 부분입니다.
소통의 기둥
- 설명
- 상태 공유
- 주의 신호 주시
개발자에게 특히 중요한 세 가지 소통의 기둥이 있습니다. 시니어 개발자로서 중요한 것은 말하는 것뿐만 아니라 상대방이 듣는 것을 확인하는 겁니다. 이것은 설명하는 기술을 마스터하고 아이디어를 당신의 청중에 공감할 수 있는 방식으로 제시하는 것을 포함합니다. 리더쉽 역할에서 두 번째 기둥이 똑같이 중요하다는 걸 알게 되었습니다.
팀원들과 매니저들과 정기적으로 상황을 공유하는 것이 중요합니다. 이런 가시성은 모두가 동일한 페이지를 유지하고 오해를 방지하는 데 필수적입니다. 게다가 문제를 발견하고 팀에 경고를 하면 소중한 시간과 자원을 절약할 수 있어서 개발자의 효과적인 커뮤니케이션 도구상에서 중요한 세 번째 요소입니다.
##6 설정 & 이해
- 기대치 설정
- 피드백 받기
제가 강조하고 싶은 것은 우리 자신의 직업을 설계하는 사람이라고 생각합니다. 우리에게는 우리에게 요구되는 것을 이해하고 적극적으로 피드백을 요청하는 책임이 있습니다. 나는 "그룹 매니저"보다는 "그룹 리더"로 자신을 생각합니다 — 명확한 기대치를 설정하고 지속적인 피드백을 제공함으로써 엔지니어링 팀을 이끕니다.
당신의 경력 주인으로서, 당신은 님의 관리자와의 기대치를 확립하고 적극적으로 피드백을 요청하는 책임이 있습니다. 만약 님의 관리자가 피드백을 주지 않는다면, 주저하지 말고 요청해보세요. 경력의 주인으로서 책임을 진다는 것은 개방적인 소통을 통해 적극적으로 형성하고, 팀과 조직과의 일치를 보장하는 것입니다.
관리자를 이해하기
특히 기대치 설정과 피드백 획득이 원할하게 되지 않는다면, 관리자를 더 잘 이해하기 위해 다음 네 가지 방법을 고려해보세요:
- 그가 소중히 여기는 것 파악하기: 당신의 관리자가 가장 중요하게 생각하는 가치관과 우선 순위를 이해하세요. 이것은 님의 초점을 두는 데 도움이 될 것입니다.
- 선호도 식별하기: 팀의 작업의 다양한 측면에서 관리자가 좋아하거나 싫어하는 것에 주목하세요.
- 적극적인 청취: 회의 중에 주의 깊게 듣고, 팀의 목표에 어떻게 도움이 되거나 기여할 수 있는지에 대한 정보를 수집하세요.
- 비교 분석: 당신의 관리자가 동료들과 어떻게 반응하는지 자신과 님의 차이를 비교해보세요. 이러한 차이점은 당신의 관리자의 기대치와 선호도에 대한 소중한 통찰을 제공할 수 있습니다.
저는 종종 내 선임 개발자와 팀 리더들과 함께 하는 리더십 연습이 있습니다: 그들에게 경영 회의 중에 메모를 남기라고 지시합니다. 매니저들이 무엇을 중요하게 생각하고, 누구에게 어떻게 반응하는지, 어떤 어조와 커뮤니케이션이 잘 작동하는지 주목하세요. 매니저들의 관점을 이해하는 시간을 가짐으로써 성장을 이끄는 더 생산적이고 조화로운 업무 관계를 구축할 수 있습니다.
#7 RESPECT
존중은 소프트웨어 개발 분야의 전문성의 기반입니다. 매니저 및 동료를 존중하는 것뿐만 아니라 업무의 모든 측면에 이르기까지 확장됩니다:
- 귀하가 사용하는 서비스 및 인프라를 존중하세요.
- 소속 기관 및 그 클라이언트를 존중하세요.
- 귀하의 작업이 현실 세계에 영향을 미치는 제품 환경을 존중하세요.
그러나 무엇보다 중요한 것은 자신, 직업, 그리고 시간을 존중해야 한다는 것을 기억하세요. 다른 사람을 존중하면서도 자존심을 지켜내는 것은 모두가 번창할 수 있는 좋은 직장 환경을 만들어줍니다.
8. 책임감
책임감 있고 책임 있는 것은 시니어 개발자로서의 약속 중 일부입니다. 당신이 최선을 다해 일을 수행하고, 진심을 다해 참여하며, 업무에 책임을 진다는 것을 우리는 신뢰합니다. 길을 가다가 문제나 난관을 만나더라도 이를 담당자에게 소통하는 것이 중요합니다. 당신의 노력과 책임은 중요합니다. 책임감은 당신과 조직이 성공하는 데 도움이 됩니다. 이를 당신의 연차의 상징으로 생각해보세요.
9. 판단을 유보하세요
조직의 의사 결정 과정을 이해하고 역사를 배우는 데 시간을 들이세요. 주변 환경에 대해 깊이 이해한 후에야 현 상황에 도전할 수 있습니다.
질문하고 개선을 제안하는 능력은 저희 분야에서 고차원의 중요한 측면입니다. 이는 당신의 전문 지식 뿐만 아니라 지속적인 성장과 개선에 대한 당신의 헌신을 보여줍니다. 하지만 충분한 맥락을 이해할 때까지 판단을 유보하고 존중하십시오.
#10 고마움을 표현하세요
시니어 개발자가 되기 위한 가장 중요한 측면 중 하나는 “할 수 있다”는 태도를 유지하는 것입니다. 고마움을 요구하는 행동은 당신의 관리자나 동료들에게 좋지 않은 인상을 줄 수 있습니다. 시니어 개발자로서, 일을 가볍게 처리하고 어려운 태도를 갖지 말아야 합니다. 나는 후회하게 되었지만, 때로는 시니어로서 고마움을 표현하기가 힘들 수 있습니다 — 작업이나 절차에 대한 불평을 하며 논쟁하기도 했습니다.
개발자가 관리하기 힘든 이유
- 문제에 대해 "무한 루프"로 논쟁을 벌임.
- 늘 의견을 내고 들려줘야 한다.
- 모든 것에 대해 최고로 알고 있는 것으로 여김.
- 높은 관심을 요구하며, 최고의 작업만 수행하길 원함.
과도한 불만을 피하고 적극적으로 도전에 직면하세요. 긍정적이고 해결책에 집중하는 것은 다른 사람들이 존경하게 하지만 업무를 더 생산적으로 만듭니다.
도구 활용
정선 프로세트 툴을 활용하면 시니어로 거듭나는 여정을 효율적으로 탐험할 수 있습니다. 여기서 이 도구들이 어떻게 당신의 발전을 돕는지 알아봅시다. 특히 이 10가지 할 일과 금기 사항을 고려할 때요:
추적 & 비교: 진행 상황을 추적하기 위해 조직적인 노트와 스프레드시트를 활용하세요. 성장을 지속적으로 모니터링하여 항상 발전하고 있는지 확인하세요.
의사소통: 의사소통 도구를 효과적으로 활용하여 협업을 촉진하세요. 피드백을 구하고 의문을 해소하며, 사람들과 소통하여 기대를 조율하세요.
문서화: 문서 작업은 중요합니다. 경험, 배운 점, 성취를 기록해두세요.
나 자신 vs. 나의 과거
당신의 발전을 추적하기 위해 도구를 현명하게 활용하고, 무엇보다 중요한 것은 오직 자신의 과거와 비교하는 것입니다. 이러한 원칙들이 당신을 성숙함과 가치 있는 기여로 인도합니다.
당신은 시니어 개발자입니까?
그래, 과연 시니어 개발자란 무엇일까? 시니어 개발자는 단순히 경력의 길이에 의해서만 정의되는 것은 아니다. 단지 8년이나 10년의 경험만으로 시니어라는 칭호를 얻는 것이 아니라, 다양한 시야를 가져야 하는 경험 또한 중요하다. 어떤 회사들은 연수나 다양한 직장 경험, 특정 기술, 또는 규모에 중점을 둘 수 있지만, 사실 이것만으로 충분하지는 않다.
10가지 해야 할 일과 하지 말아야 할 10가지를 따르면 시니어다운 사고방식을 갖추게 될 것이다. 그리고 그것들은 당신을 시니어로 향하는 길로 안내해 줄 것이다.