개발 / 기술 리더가되기 위해 어떤 기술을 배양해야합니까? [닫은]


82

저는 현재 전문 프로그래머입니다. 저의 스킬 셋을 확장하고 싶지만 팀의 일원으로 경력을 발전시키기를 원합니다. 나는 배울 것이 많고 (즉시 일이 아님) 알고 있지만 그것을 할만 큼 똑똑하고 도전에 달려 있다고 생각합니다.

나는 여기에있는 많은 회원들이 아마 이것을 스스로 겪었을 것이며, 이제는 성공적인 개발자 리더가 될 것이라고 확신합니다. 불행히도, 내가 향상시키고 싶은 개인 영역 (지식의 폭, 지식의 폭, 스킬 셋 등)을 알고 있지만 어떻게 이런 식으로 시작할 것인지는 잘 모르겠습니다.

프로그래머로서 지금이 목표를 달성하기 위해 어떤 단계를 취해야합니까? 우선 순위는 무엇입니까?


현재 회사에서 팀장으로 승진 할 수있는 기회가 있습니까? 팀장 경험이 없으면 너무 많은 회사가 내부에서만 고용하는지 궁금합니다.
JeffO

@JeffO 실제로 작업을 바꿨습니다. 여기에 기회가 생길지 모르겠습니다. 가능성이 있다고 생각하지만 소규모로 시작해서 한 번에 한 명의 개발자 만있을 것이라고 생각합니다.
lunchmeat317

2
단 하나의 기술 :이 직책을 맡을 수있는 사람을 설득 할 수있는 능력.
vortexwolf

1
결과적으로, 나는 실제로 이것을 잘라 내지 않을 가능성이 매우 분명합니다. 이 방향으로 경력을 발전시키고 자하는 한, 개발자 측면에 더 많이 빠져 있다고 생각합니다. 때로는 머리를 쓰거나 코드를 작성하고 싶습니다. 여전히 가능성을 고려하고 있지만 지금은주의해서
lunchmeat317

답변:


90

기술 리더가 되려면 다음이 필수적입니다

  • 3 개월 동안 단절된 사람부터 30 년 동안 프로그래밍 한 사람에 이르기까지 모든 수준의 고위직 직원을 멘토링하는 능력

  • 개발 영역에 대한 지식이 풍부합니다. 언어, 프레임 워크, 유틸리티, 개발 환경

  • 이슈 관리 시스템, 프로젝트 관리 기술 및 버전 관리에 대한 확실한 이해

  • 가는 버그 살인자

  • 적시에 코드 검토를 수행하는 방법, 찾아야 할 사항 및 보유 시간을 최소화하는 방법 및 변경 사항을 알고 있어야합니다.

  • 개발 도메인의 개발 내용을 최신 상태로 유지하십시오. 예를 들어, .NET 2에서 새로운 프레임 워크 나 기술을 배우지 않았다면, 오늘날에는 상당히 역행적인 일을하고있을 것입니다.

  • 단위 테스트 및 모형 작성 방법 및 개발자가 작성하는 방법

  • 디자인 패턴 및 사용시기에 대한 지식

  • 코드 냄새 및 그 완화 방법에 대한 지식

  • 지속적인 통합

  • 프로젝트 및 릴리스 계획 기능

조직과 직원이 건축가인지 여부에 따라 다음 사항을 알아야합니다.

  • 프로젝트를 구성하고 기능적인 부분으로 나누는 기능

  • 올바른 비밀번호 처리 방법, 시스템 분리, 데이터 보안 등 보안에 대한 철저한 이해

  • 서비스 버스, 메시지 대기열, BizTalk와 같은 엔터프라이즈 개념

  • 엔터프라이즈 디자인 패턴

  • SOAP 및 REST와 같은 서비스 아키텍처 / RPC

  • Hibernate, Entity Framework, Doctrine과 같은 ORM 프레임 워크

  • 지속적인 배포

  • 구름

  • 프로젝트에 사용할 올바른 기술을 추천하는 기능. 팀 / 샵에서 .NET, PHP 또는 Java 만 수행하는 경우 어려울 수 있습니다.

  • 향후 개선 사항을 쉽게 수용 할 수있는 방식으로 응용 프로그램 설계

개발 관리자가 되려면 다음 사항도 필요합니다.

  • 인터뷰 기술과 올바른 직원을 찾는 방법
  • 팀원과 관련된 사람들의 문제를 다루는 방법
  • 비즈니스 지시 사항 / 목표 관리 및 관련 지시 사항을 개발자를위한 정보로 변환
  • 다양한 기술을 가진 프로그래머의 시간을 추정하는 능력
  • 기술과 능력을 기반으로 올바른 개발자에게 작업을 할당하는 기능

그리고 마지막으로 다른 권장 사항이 있습니다.

  • 개발 영역 외부에서 학습

  • 일이 불가능하거나 범위를 벗어 났거나 예산이나 시간과 같은 구속 조건과 충돌 할 때 NO 라고 말하는 것을 배우십시오 .

팀을 관리하는 것은 어려운 과제입니다. 질문에 대답 할 수있는 사람이어야하고, (설계자가없는 한) 사용할 올바른 기술을 알아야하고, 사람들을 관리하는 기술을 갖추고 접근해야합니다. 직원에 의해 (관리 직위를 가정). 이 외에도 프로젝트 수익성을 보장하기 위해 정확한 견적 기술이 필요하며 문제를 정확하게 파악하고 신속하게 해결하기 위해 다른 사람의 코드로 손을 더럽힐 수 있어야합니다. 모든 일을 스스로하고 싶지 않고 독성이없는 팀 환경을 조성하기를 원하지 않아야합니다. 기술 스택을 지속적으로 유지하고 최신 개발 및 기술과 광범위한 업계 동향을 파악해야합니다.

또한 최소한 하나 이상의 데이터베이스 플랫폼을 알고 잘 알고 있어야합니다. 복제 수행 방법, 저장 프로 시저, 쿼리 최적화 프로그램 작동 방식 및 스키마를 올바르게 디자인하는 방법 및 인덱싱 할 필드를 알고 있습니다.

정확한 직위에 관계없이 모든 고위 직책은 효과적으로 의사 소통 할 수있는 능력이 있어야합니다. 자신감이없는 사람은 토스트 마스터 (공공 연설)와 같은 일을 해보세요. 눈을 마주 치는 방법 을 배우십시오 . 자신감. 위치에 맞게 옷을 입으십시오. 예를 들면.


2
방금 생각할 수있는 몇 가지 아이디어를 스케치했습니다. 나중에 다시 방문하여 추가하겠습니다. 좋은 질문.
Sam

Toastmasters의 이점을 두 번째로 얻을 수 있습니다. 그것은 내 경력에서 상당히 도움이되었습니다. 자신의 생각 (특히 기술이 아닌 사람들에게 기술적 사고)을 명확하게 전달할 수 있다는 것은 귀중한 기술입니다.
Jason Swett

27

내 경험상 Lead는 실제 프로그래밍의 더러운 작업과 관련이 있고 관리와 더 관련이 있습니다. 이를 위해 다음을 권장합니다.

  1. 설계 및 건축 추구 및 개발에 더 많은 시간을 투자하십시오 . 리드로서, 당신의 기능은 팀에게 기술적 인 지침과 지시를 제공하는 데 중심이 될 것입니다. 전체 조각이 서로 어떻게 조화를 이루고 배관이 어떻게 작동하는지 이해하는 것이 더 중요합니다. 잘못 이해하지 마십시오. 효과적이고 지식이 풍부한 리드가 되려면 탄탄한 기술 절단이 필요하지만 진행 상황과 작동 방식에 대한 높은 수준의 견해가 더 중요합니다. 모범 사례 디자인 패턴과 효과적인 코딩 방법을 알아야합니다.

  2. 멀티 태스킹 및 시간 관리에 대해 배웁니다 . 지금 잘하면 더 좋습니다. 개발자는 걱정할 현재 작업 / 프로젝트 만 있습니다. 리드로서 당신은

    • 당신이 원하는 것보다 더 많은 회의에 참석하기 위해. 이것은 아마도 팀 리더십에서 가장 마음에 드는 부분 일 것입니다.
    • 자원 할당 작업. 운이 좋으면 자원이 부족하고 프로젝트가 풍부합니다.
    • 프로젝트 아키텍처 및 디자인을 주도
    • 조직의 규모와 구조에 따라 일정과 시간에 따라 수많은 보고서를 제공하십시오. 리드를 저임금 프로젝트 관리자로 생각하십시오.
  3. 효과적으로 위임 할 수 있도록 준비하십시오 . 이 IMO는 조정하기 가장 어려운 비트입니다. 개발자는 손을 더럽 히고 일을 끝내는 데 익숙합니다. 모든 배관 및 연구 수행. 그것은 멈추거나 줄어들어야 할 것입니다. 공연이 들어 와서 팀에게 전달합니다. 당신은 익숙한만큼 행동의 일부를 얻을 수 있습니다. 그리고 더 많은 행동을 취하려는 유혹에 저항하기 위해 혀를 물게됩니다.

  4. 보다 전문적인 선을 따라 능력을 향상시킬뿐만 아니라 전망을 바꾸는 훈련을 고려하십시오 . 소프트웨어 프로젝트 관리에 아무런 문제가 없습니다. 린 식스 시그마 (Lean Six Sigma)는보다 논리적 인 각도에서 문제 해결을 보는 데 도움이되는 매우 훌륭한 교육 프로그램입니다. Lead 포지션에서는 실무 기술과 관리 능력이 덜 필요한 상급 직책을 맡게됩니다.

  5. 의사 소통과 대인 관계 기술을 연마하십시오 . 당신은 외부 세계에서 팀의 주요 진입 지점이 될 것입니다. 귀하의 상사 또는 다른 상사가 먼저 귀하에게 올 것입니다. 조직의 다른 부서 / 팀이 먼저 팀과 관련된 모든 것에 대해 인터페이스합니다. 당신은 사람들 중 가장 어렵고 예측할 수없는 자원을 관리하게 될 것입니다. 두꺼운 피부를 키우고 많은 자존심을 삼키는 법을 배우고 팀의 실패에 대한 책임을 져야합니다.


2
훌륭한 답변, 나는 당신이 개발자로서 일반적으로 알지 못하는 모든 것들, 특히 대표단을 어떻게 지적했는지 좋아합니다. 마지막 직업 나는 내가 할 수있는 모든 것을 위임했지만 여전히 바쁘게 지낼 수있는 산을 가지고있었습니다. 그런 다음 (희귀 한) 자유 순간 동안 나는 "지루한"것들을 할 것입니다. 사소한 버그, 문서를 수정하는 데 도움이됩니다. 정면에서 리드해야합니다.
Rocklan

2
'리드'역할은 종종 기술 능력보다 훨씬 더 많은 관리가 필요하다는 점을 강조하기 위해 +1
Krease

이것은 탁월한 답변이며 실제로 역할의 본질을 포착합니다. 잘 했어.
로이드 무어

14

Sam이 말하지 않은 것들도 중요합니다.

  • 물건을 사양하고 다른 개발자들에게 작업을 제공하는 방법. 당신의 일의 일부는 다른 개발자들을 100 % 활용하는 것입니다. 분명한 사양을 작성하는 것이 매우 중요합니다.

  • 다른 사람이 따라야하는 스켈레톤 / 시제품 응용 프로그램을 구축하는 방법

  • 좋은 팀 사기를 육성하는 방법

  • 회의 참석, 운전 및지도 방법, 작업 항목을 문서화하는 방법

  • 프로젝트 계획을 추정하고 작성하고 프로젝트 계획을 업데이트하는 방법

  • 미래를 들여다 보는 방법-3 개월 안에 문제가 발생할 경우 가능한 빨리 문제를 해결하려고합니다. 개발자가 7 주 동안 휴가를가는 경우 지금 계획을 시작해야합니다.

  • 경영진과 대화하는 방법. 그들은 우리에게 다른 언어를 사용합니다. 문제가 아니라 해결책을 제시하십시오. 그들에게 기술적 인 의미를 알려주십시오.

샘은 이미 이것을 말했지만 가장 중요한 것 중 하나는 ' 아니오'라고 말하는 법을 배우는 것입니다 . 당신은 이것을 많이 할 것 입니다. 그것을 보는 다른 방법은 yes라고 말하지만 "우리가 더 많은 돈 / 시간 / 자원을 얻을 수있는 경우에만"또는 "두 번째 릴리스를위한 것"입니다. :)


많은 작품이 Architect 또는 PM 버킷에 들어가는 것 같습니다. 그러나 때로는 개발 책임자가 그렇게해야합니다.
SandRock

11

이 모든 것은 책과 좋은 답변입니다. 현실로 당신을 칠 수 있습니다.
관리자를 설명하는 데 많은 시간을 할애한다고 생각하십시오.

  • 문제를 해결하기 어려운 방법
  • 주어진 타임 라인에서 해결할 수없는 이유 또는
  • 해결하는 것이 얼마나 덜 중요 할지라도.

이를 위해서는 비 기술적 인 용어로 비 기술적 인 사람들에게 기술적 내용을 설명하는 기술이 필요합니다. 그리고 그것은 매우 어렵습니다. 예를 들어 P = NP에서 6 세까지 설명하는 것을 고려하십시오. 불행히도 그것에 대한 공식적인 교육은 없으며 스스로 학습해야합니다.

또한 이것은 정치적 sh * t가 당신을 때리기 시작하는 위치입니다. 관리자는 그 과정을 따르기 때문에 그 사람을 선호하라고 말할 것입니다. 그러나 당신은 그 사람이 기술력 부족에서 좋은 팀원이 아닌 다양한 이유로 팀에서 아무 소용이 없다는 것을 알고 있습니다. 따라서 여전히이 사람과 함께 일해야 할뿐만 아니라이 사람에게 좋은 평가를 제공해야합니다. 정반대는 기술이 뛰어나고 효과적인 팀원이지만 관리 방법을 모르는 사람은 등급이 낮습니다.
그런 다음 원격 위치에서 높은 위치에있는 누군가가 쓸모없는 회의를 통해 효과적인 프로세스와 최신 프로세스 변형이 생산성을 향상시키는 방법을 강의합니다. 지루한 얼굴을 숨기고 활력을주는 방법을 알아야합니다.


1
"지루한 얼굴을 숨기고 활력을주는 방법을 알아야합니다"hahaha
Adrien Be

기술과 관련된 내용을 제외하고는 이러한 회의가 시작될 때마다 항상
지루함을 느낍니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.