나는 선임개발자인가?
원문 : https://medium.com/s/story/what-truly-makes-a-senior-developer-74b608847d7e
소프트웨어의 세계, 사람이 오랫동안 개발자로 일 해왔다해서, 그들이 그것에 우수한되었다 의미하지 않는다. 내 경험에 비추어 중년 및 중급 수준의 고위 개발자와 엔지니어를 차별화하는 것은 기술자를 사용하고 문제를 해결하는 방법입니다. 이 유형은 조직 유형에 따라 다르지만, 소규모 기업에서 선임 개발자가 사용하는 기술은 대규모 회사에서 사용하는 기술과 동일하지 않습니다. 경험이 풍부한 모든 소프트웨어 사용자가 "선임" 제목이 있습니다.
조직 내부의 사회적 정치적 문제 탐색
기술적 인 솔루션을 비즈니스 요구에 맞추기
이상적으로, 수석 기술자는이 4 가지 스킬 셋 모두에서 강해야하지만, 강점이 팀과 회사 및 그들의 필요를 보완하는 것이 더욱 중요합니다. 따라서이 네 가지 기술의 상대적 중요성은 크게 다를 수 있습니다. 예를 들어, 소규모 회사 나 신생 기업의 경우 독점 프로그래머로서의 기술과 다른 프로그래머를 키울 수있는 능력은 일반적으로 사회적 정치적 기술보다 훨씬 중요합니다.
신생 기업이 이러한 문제를 안고있는 것은 아니지만 여러 관리자와 목표 또는 KPI (핵심 성과 지표)가있는 광범위한 팀을 보유한 대규모 조직보다 훨씬 압축되어 있습니다. 대기업에서는 선임 개발자의 정치 및 사회 기술이 비 기술적 인 직원에 대한 기술 선택을 훨씬 더 자주 방어 할 수 있어야하기 때문에 더 중요 할 수 있습니다.
소프트웨어는 고도로 기술적 인 분야이므로 수석 엔지니어는 분명히 일이 어떻게 진행되는지에 대해 많이 알지 못합니다. 그러나 고위층의 누군가는 내가 "전문 총학생"이라고 부르는 사람이 될 것으로 예상됩니다. 그들은 다양한 문제를 보아 왔을만큼 충분히 오랜 개발을 해왔어야했습니다. 이들은 특정 분야 나 산업의 문제에 깊이 관여했을 가능성이 높습니다. 이는 다중 도메인의 세부 사항을 이해하면 개발자가 광범위한 표면 지식 이상의 다른 영역으로 전환하는 데 도움이되므로 중요합니다.
진실로 노인이 되려면 어려운 전화를 걸고 올바르게해야합니다.
이 깊은 경험은 또한 개발 초기에 선택이 늦어 지는지 지혜를 쌓습니다. 상급 개발자는 "시신이 묻혀있는 곳"을 알아야합니다. 깊은 곳에서 보낸 시간은 문제가 발생할 단계를 10 단계 아래로 직관적으로 파악할 수있게합니다. 그리고이 지혜는 놀라 울 정도로 다른 상황으로 옮겨 갈 수 있습니다. 시니어 개발자들은 적어도 비밀스런 잠재 위험을 모르고 조심해서 행동해야한다는 것을 깨달을 수 있습니다.
이 직관은 단순히 코드를 작성하는 것 이상으로 기업에 지불하는 것입니다. 진정한 선임 개발자에 의한 좋은 선택은 문제가 발생하지 않는다는 것을 의미합니다.
이것은 진정한 비밀입니다 : 모든 소프트웨어 문제에 대한 마법의 해결책은 없습니다. 결정이 내려지는 순간이 거의 없으며 모든 사람들이 짐을 싸서 집에 돌아가 결코 다시는 접촉하지 않습니다. 모든 아키텍처, 모든 선택, 모든 가능성은 특히 제품이 확장되고 발전함에 따라 가능한 단점을 가지고 있습니다.
오늘날 시장에 선보이는 경쟁 제품보다 빠른 속도로 선적하는 선택은 6 년이 아니라 6 개월 만에 주요 리펙터가 필요하다는 것을 의미 할 수 있습니다. 그러나 이것이 시장 점유율과 수익을 얻는다면, 그만한 가치가있을 것입니다.
진실로 노인이 되려면 어려운 전화를 걸고 올바르게해야합니다. 솔루션을 선택하면 팀이 함께 살게 될 문제와 문제점도 선택하게됩니다. 상급 개발자는 여러 디자인 패러다임, 여러 언어 및 여러 팀을 접하게 될 것입니다. 가능한 모든 설계 및 아키텍처 패턴을 깊이 알아내는 것은 거의 불가능합니다. 특히 상황이 계속 변함에 따라 올바른 인식을 가지고 서로 다른 접근 방식의 장단점을 이해하는 것이 가능합니다.
어떤 사람들은 소유권의 결정이 강력하고 움직일 수없는 견해를 가진다고 생각할 수도 있습니다. 그러나 선임 개발자가 기술에 대해 너무 과장되어 있다면 - 주요 언어가 "쓰레기"라고 생각하거나 그런 일에 너무 많이 신경 쓰게된다면 나쁜 징후라고 생각합니다. 팀은 선임 개발자가 좋아하지 않는 언어로 작성된 주요 제품과 인터페이스하기 위해 전화를 받거나 문제를 완벽하게 해결할 수있는 훌륭한 언어를 지원하는 훌륭한 라이브러리가있을 수 있습니다.
지식에 대한 지식과 이해력이 높을수록 정의에 따라 더 빨리 "선임"이 될 것입니다.
훌륭한 선임 개발자는 모든 언어와 프레임 워크를 동등하게 사랑할 필요는 없습니다. 실제로, 그것에 대해 다소 냉담한 것이 가장 좋습니다. 이러한 것들은 도구이며, 숙련 된 개발자는 사유로 인해 일이 언제 완료되었는지를 알고 있습니다. 진정한 선임 개발자는 문제가 더 심각하거나 더 나은 것을 걱정하는 대신 문제, 팀 및 회사에 적합한 것을 고르고 나머지는 소음이라는 것을 깨닫습니다.
완벽한 예가 PHP입니다. 많은 개발자들이 PHP에 대해 싫어하기를 좋아하지만, 많은 결함이 웹을 정복 할 수있게 해주었습니다. 우리는 웃지 않아야합니다. 우리는 어떻게하면 좋은 것들을 취할 수 있을지 생각해 봐야한다.
이러한 자질과 측정 요소 중 일부를 고려할 때, 중학교와 중급 대 고학년은 일반적으로 다음과 같이 분류 할 수 있습니다.
주니어 개발자 는 일반적으로 튜토리얼이나 학교에서 한 일을 토대로 문제를 해결하는 한 가지 방법을 알고 있습니다. 트렌디 한 프레임 워크를 사용하는 것이 거의 확실합니다.
중간 수준의 개발자는 모든 문제가 더 큰 시스템의 일부로 존재하고 유지 보수 가능성, 코드 품질 등에 대해 걱정하지만 여전히 큰 그림을 보지 못한다는 것을 이해합니다. 그들은 그 과정에서 더 많이 어지럽 혀지는 경향이 있습니다.
시니어 개발자는 가능한 문제, 단점 및 위험이 없다는 것을 이해합니다. 그들의 선택은 전체 팀 전체에 걸쳐 전체 론적 위험 관리에 관한 것만 큼 책의 내용에 따라 차갑거나 "정확하다"는 것이 아닙니다. 그들은 유지하기 쉽고, 가르치기 쉽고, 디버그하기 쉽도록 신경 쓰고 있습니다.
그들이 받아들이지 않는 엔지니어는 모든 것이 최선의 선택임을 알지 못합니다. 지식에 대한 지식과 이해력이 높을수록 정의에 따라 더 빨리 "선임"이 될 것입니다. 선임 개발자 또는 엔지니어로서 누군가를 고용하는 것에 대해 의심이들 때마다 나는 알지 못하는 것을 기꺼이 지을 수 있는지, 그리고 가능한 일을 최소한 열망하는 것이 얼마나 열심인지 알아 본다. "고위급"자질이 보여 주어 제목이 실제로 획득되었는지 여부를 결정하는 데 도움이됩니다.
당신의 경험은 무엇입니까? 당신은 언제 당신이 '상급생'맨틀에 대한 준비가 되어 있다고 느꼈습니까?