사람, 제품 및 기술: 엔지니어링 관리에 대한 초심자를 위한 안내서
게시 됨: 2022-03-11소프트웨어 엔지니어로서 귀하의 책임은 일반적으로 매우 명확하게 정의됩니다. 작업은 귀하에게 할당되며 귀하의 임무는 이를 제시간에 효과적으로 구현하는 것입니다.
그러나 엔지니어링 관리자 역할에서는 책임이 명확하게 정의되지 않는 경우가 많습니다. 관리는 바이너리가 아닙니다. 특정 질문과 문제에 대한 직접적인 대답은 없습니다. 관리자로서의 성공 여부는 직원을 얼마나 잘 이끌고, 제품을 관리하고, 기술을 관리할 수 있는지에 달려 있습니다.
사람이 우선입니다
엔지니어링 관리자 역할에서 새로운 우선 순위는 팀입니다. 그렇다면 훌륭한 팀이 있다는 것을 어떻게 확신할 수 있습니까?
팀 구축 및 신뢰 구축
첫 번째 단계는 아직 팀이 없는 경우 팀에 적합한 사람을 고용하는지 확인하는 것입니다.
나쁜 고용은 시간을 낭비할 뿐만 아니라 여유 시간을 채워야 하는 다른 팀 구성원의 시간도 낭비하게 됩니다. 이것은 나머지 팀의 사기를 저하시킬 것입니다. 어떤 사람이 뛰어난 프로그래머라 할지라도 팀 문화에 적합하지 않다면 나쁜 고용이 될 수 있습니다.
기술적인 질문뿐만 아니라 팀에서 일하거나 리더십 역할을 하는 것에 대한 개방형 질문도 해야 합니다. 예를 들어, 후보자에게 다음과 같이 질문하십시오.
- 그들이 해결해야 했던 최근 문제를 설명하기 위해
- 솔루션을 구현한 방법
- 그들이 고려한 대안적 접근 방식
- 프로덕션에서 중요한 문제가 발생했을 때, 이에 대해 어떻게 대응했는지, 미래에 동일한 유형의 문제를 방지하기 위해 무엇을 했는지에 대해 이야기하기 위해
일단 팀이 생기면 시간을 할애하여 팀의 존경을 받고 신뢰를 구축하십시오. 팀을 효과적으로 이끌기 위해서는 팀원들과 건전한 관계를 발전시켜야 합니다. 시간을 내어 그들의 경력 목표와 그들에게 중요한 것이 무엇인지 이해하십시오.
일대일 회의는 각 팀원과 유대감을 형성하고 더 잘 알아가는 데 필수적인 도구입니다. 이상적인 일대일 회의 빈도는 무엇입니까? 이는 팀원의 특정 요구 사항에 따라 다르지만 적어도 한 달에 두 번은 팀원과 만나는 것이 좋습니다.
그러나 귀하와 귀하의 팀이 긴밀하게 협력하거나 팀이 큰 경우 한 달에 한 번 회의를 진행할 수 있습니다.
엔지니어링 관리자가 팀의 역량을 강화하고 개선하는 방법
업무의 큰 부분은 개별 구성원의 강점과 약점을 파악하는 데 있습니다. 시니어 엔지니어와 짝을 이루고 코드 검토를 자주 수행하여 약점을 해결하고 강점에 집중할 수 있도록 도와주세요. 결국, 우리에게 동기를 부여하고 우리가 즐기는 일을 형성하는 것은 우리의 강점입니다.
각 엔지니어의 능력과 특성에 따라 작업을 할당하여 각 사람의 장점을 추출하고 훌륭한 팀을 만듭니다. 자동화는 이와 관련하여 먼 길을 갈 수 있습니다. 지속적 통합을 설정하여 손상되거나 최적이 아닌 코드와 이러한 코드를 자주 커밋하는 사람을 식별합니다.
팀원들은 자신이나 팀에게 중요한 영역에서 끊임없이 배우고, 개선하고, 성장하기 위해 노력할 것입니다. 작년에 각 팀원에게 의미가 있었던 역할과 책임이 올해에는 더 이상 적합하지 않을 수 있습니다. 각 팀 구성원이 계속해서 도전을 느끼고 개선할 수 있도록 하려면:
- 그들의 개인적 성장에 세심한 주의를 기울이고, 그들의 발전에 투자하고, 그들의 야망을 달성하도록 도우십시오.
- 팀 구성원과 개별적으로 만나 개인 개발 계획을 세우고 경력 전략을 수립할 수 있도록 권한을 부여하십시오.
- 자기 계발을 위해 추가 시간을 할당하고, 팀 구성원이 주기적으로 역할을 전환하도록 하고, 내부 워크샵 또는 교육 과정을 조직합니다.
모든 사람의 전문적인 성장을 보장하는 것 외에도 엔지니어링 관리자의 책임은 팀을 보호하는 것입니다. 팀이 실패를 두려워하지 않고 결정을 내릴 수 있도록 권한을 부여해야 합니다. 일이 실패하면 책임을 지고 실수로부터 배우십시오.
이것은 새로운 접근 방식을 시도하고 성장 마인드셋을 개발할 때 팀에서 대담함을 키울 것입니다. 즉, 적절한 피드백을 제공하고 팀을 올바른 방향으로 이끌기 위해 시기적절한 조치를 취했다면 실수가 두 번 이상 발생하지 않아야 합니다.
제품 관리자 및 엔지니어링 관리자
엔지니어링 관리자의 역할에서 두 번째로 중요한 측면은 제품입니다. 기대치를 맞추고 기술과 팀의 기술을 활용하여 훌륭한 제품을 제공하려면 제품 관리자와 긴밀한 관계를 형성해야 합니다.
다음은 추구해야 할 6가지 엔지니어링 관리자 책임입니다.
프로젝트의 우선 순위를 잘 확인하십시오.
팀의 6~12개월 목표는 무엇입니까? 당신의 청중은 누구입니까? 고객은 제품에서 무엇을 기대합니까? 당신의 팀은 아마도 앞으로 몇 주 동안 무엇을 할 것인지 알고 있을 것입니다. 그러나 전체 제품과 제품이 어디로 향하고 있는지 이해하는 것이 중요합니다.

제품 개발 결정에 참여
엔지니어링 관리자는 개별 기여자보다 다른 팀과 함께 작업하고 제품 방향 및 제품 업데이트에 더 많이 참여하게 됩니다. 제품에 대한 모든 결정에 반드시 동의할 필요는 없지만 제품을 믿고 더 좋게 만들고 싶어해야 합니다. 제품 관리자의 결정에 동의하지 않는 경우 제품 관리자에게 이의를 제기할 수 있지만 최종 결정권은 제품 관리자에게 있습니다. 그들을 존중하고 그들의 결정을 지지하십시오.
기술 전략 및 개발 방법론 정의 및 추진
제품 관리자의 작업은 제품 전략과 개념을 정의하는 반면, 귀하의 역할은 제품의 아키텍처 비전과 기술 설계를 정의하는 것입니다. 또한 개발 방법론을 정의하고 팀에서 채택하도록 할 책임이 있습니다. 기억하십시오: 제품 관리자는 제품을 소유할 수 있지만 귀하와 귀하의 팀은 제품 구현을 소유합니다.
어떤 경우에는 작은 엔지니어링 노력으로 유용한 기능을 구현하는 것이 가능할 수 있습니다. 예를 들어, 제품이 사용하는 프레임워크의 최신 버전으로 업그레이드하면 특정 기능을 더 빠르고 효율적으로 구현하는 데 도움이 될 수 있는지 확인하십시오. 제품에 대한 좋은 개요가 있으면 귀하와 귀하의 팀이 그러한 사례를 식별하고 제품 관리자에게 제안하는 데 도움이 될 수 있습니다.
기술 부채 생성 및 상환, 새로운 기능 개발의 균형
최소한의 실행 가능한 제품을 구축할 때 시장 출시 시간이 최우선 순위이므로 기술적인 부채를 축적할 수 있습니다. 제품이 발전함에 따라 기술 부채를 상환하면서 새로운 기능을 추가하고 제품을 개선하는 데 초점이 이동합니다. 처음에 만든 절충점을 해결하지 않으면 새 기능을 추가하는 데 더 많은 시간과 비용이 소요됩니다. 시간을 내어 타협을 이해하고 추적하고 부채 해결과 새로운 기능 추가 사이의 균형을 찾으십시오.
기술 및 자동화를 사용하여 기술 부채 관리**
소스 코드 정적 분석을 사용하여 유지 관리 지수가 가장 많은 코드를 식별하고 코드 리팩토링의 우선 순위를 지정합니다. 이렇게 하면 새로운 기능에 대한 작업이 더 쉬워지고 제품의 성능이 향상됩니다.
제품 실행이 제대로 진행되고 있는지 확인
팀 작업의 현재 상태를 이해해야 합니다. 팀이 일정보다 늦어지면 명백한 블록을 식별하고 제거하십시오. 예를 들어, 팀이 정기적으로 기술적인 문제에 매달린다면 팀 구성원의 지식 공유를 개선하기 위해 자주 짝 프로그래밍 세션을 설정하십시오. 팀에서 서버에 코드를 배포하는 데 많은 시간을 할애하는 경우 프로세스를 자동화하여 시간을 절약하고 오류 발생 가능성을 줄이십시오. 중단을 최소화하고 새로운 작업을 수행하고 버그 보고서를 처리하는 방법에 대한 명확한 프로세스를 만듭니다.
기술 및 위임
당신은 여전히 엔지니어이지만 관리자로서 소프트웨어 솔루션 개발은 더 이상 주요 기능이 아닙니다. 팀에 선임 엔지니어가 있으며 대부분의 기술 솔루션을 담당합니다. 장군은 소총으로 전쟁을 하지 않습니다. 관리자는 모든 코드 라인을 세세하게 관리할 필요가 없습니다.
그러나 수석 엔지니어가 내린 결정이 제품의 기술 로드맵 및 방향에 맞는지 확인하려면 지식과 경험을 사용해야 합니다. 기술 결정을 선임 엔지니어에게 위임하되 제품이 확장 가능하고 안전하며 신뢰할 수 있는지 확인하기 위해 올바른 질문을 하십시오.
예를 들어 "사용자가 20배 더 많다면? 지속 가능할까요?” 또는 "이 기술은 2~3년 후에도 계속 지원됩니까?"
당신은 당신의 지식과 전문 분야를 기반으로 대안적인 솔루션과 프레임워크를 제안할 수 있고 제안해야 하지만, 당신의 팀이 그것을 받아들이도록 강요하거나 압력을 가하지 마십시오. 기술 제안 외에도 개발 프로세스 및 방법론과 관련된 제안을 할 수도 있습니다.
또한 제품의 주요 메트릭을 모니터링해야 합니다. 비즈니스 및 기술 메트릭도 똑같이 중요합니다. DevOps 팀과 협력하여 시스템 모니터링을 위한 경보를 생성하고 팀에 운영 문제에 대한 정보를 제공하십시오. 마지막으로, 사고가 다시 발생하지 않도록 인시던트가 발생했을 때 처리하는 방법론을 개발합니다.
마지막으로 최신 기술과 동향을 파악하십시오. 더 많은 선택권과 더 많이 알수록 더 많은 솔루션과 프레임워크를 사용할 수 있습니다. 기사를 읽고, 코드를 검토하고, 팀과 기술 토론에 참여할 시간을 지정하십시오.
기술적인 문제에 대해 더 많이 알수록 팀에서 더 많이 존경하게 될 것입니다. 새롭고 새로운 기술에 익숙해지고 팀이 동일한 작업을 하도록 격려하면 호기심을 불러일으키는 분위기를 조성하고 팀이 복잡한 기술 문제를 해결하는 새롭고 혁신적인 방법을 찾도록 도전하는 데 도움이 됩니다.
