5 명의 새로운 주니어 개발자와 수많은 복잡한 작업. 지금 뭐야?


10

우리 회사는 제품 개발에 도움을주기 위해 5 명의 신규 개발자를 고용했습니다. 불행히도 새로운 기능과 수신 버그 수정은 일반적으로 최근 졸업 한 개발자가 일반적으로 가지고있는 것 (스레딩 / 동시성, 복잡한 시스템에서 성능 병목 현상 디버깅 등)에 대한 깊은 지식이 필요합니다.

그들이 (아마도) 해결할 수있는 과제를 위임 (및 계획)하고, 질문에 답하고, 멘토링 / 관리하고, 코드를 검토하여 내 시간을 모두 소모하며, 전체 위임 프로세스보다 소요 시간이 단축 될 수 있다고 생각합니다. (내 시간 만 계산). 또한 더 깊은 시스템 지식 / 고급 기술이 필요한 작업을 해결할 시간이 없으며 가까운 시일 내에 변경되지 않는 것 같습니다.

그래서 지금 무엇입니까? 그들의 시간을 효과적으로 사용하려면 어떻게해야합니까?


1
5 명의 주니어 사람들이 모두 프로젝트에 참여 했습니까? 당신은 그들을 감독하는 유일한 Sr. dev입니까?
Tyanna

@ Tyanna : 네,이 프로젝트의 유일한 선임자입니다. 다른 선배들은 얼마 전에 다른 프로젝트로 이사했습니다.
mxe

2
먼저 할 일은 당신이 초보자를 진입로로 당신이 약간 덜 생산 될 것이라고 관리에게 설명입니다
JK합니다.

최근 졸업생으로서 동시성 또는 성능을 다루지 않는 프로그램이 있다는 사실에 매우 놀랐습니다.
Daniel Joseph

+1. 유감스럽게도 더 이상 투표를 할 수 없다는 것입니다.
Shivan Dragon

답변:


2

그렇습니다. 당신은 할 수있는 것보다 빨리 일을 해결할 수 있습니다. 그래서 당신은 선배이고 그렇지 않습니다. 그러나 좋은 선배는 자신의 후배를 선배 수준으로 끌어 올리고 싶어하며,이를 수행 할 수있는 유일한 방법은 일을하는 방법을 배우게하는 것입니다.

멘토링은 코딩이 아닌 현재 시간을 가장 효과적으로 사용하는 것입니다.

다음 6 개월 동안 멘토링을 효과적으로 진행하고 후배들이 중급 개발자가되기에 충분히 배운다면, 이런 식으로보세요. 5 명의 불쾌한 개발자들과 1 명의 선배가 있습니다. 모든 노력이 더 빠르기 때문에 스스로 열심히 노력한다면 6 개월 만에 5 명의 주니어가 엄지 손가락을 돌리며 움직일 것입니다. (그런데도 어려운 일을하지 않으면 최고가 다른 직업으로 넘어 갔을 것입니다. 더 적거나 더 새로운 주니어 개발자가있을 수 있습니다.)

버그에서 복잡한 상호 작용이 일반적으로 무엇인지 알고 있으므로 이러한 유형에 대해 구체적으로 문제를 해결하고 실제 문제를 해결하고 찾는 방법을 찾은 다음 일반적으로 문제를 해결하는 데 필요한 방법 유형을 교육하십시오. 그런 다음 그들이 올 때 그 문제를 줘. 그렇습니다. 문제를 해결하는 데 시간이 오래 걸리므로 예상 시간을 허용해야합니다.

페어 프로그래밍 아이디어는 훌륭합니다. 진정으로 발전된 각 문제에 대해 다른 문제와 쌍을 이루십시오. 그들이 아직 문제를 해결하기에 충분히 알지 못하더라도, 키보드를 통해 주니어가 있으면 원인을 찾기 위해 무엇을 시도해야하는지 알려 주면 문제 해결 과정을 가르치는 데 도움이됩니다. 물론, 그들은 단지 독재를 기대하지 마십시오. 원하는 것을 찾고 왜 설명해야하는지 설명하십시오. 그들의 아이디어를 요청하고 경청하십시오. 그렇지 않은 경우 왜 그들의 아이디어가 좋은 선택이 아닌지 설명하십시오. 주도적 인 질문을하여 소크라테스의 교수법을 사용하십시오. 그들은 당신이 설명하지 않은 질문보다 당신의 주요 질문을 통해 그들이 스스로 해결 한 해결책을 더 잘 기억할 것입니다. 그들은 단지 당신이 입력하는 것을 보지 않고 솔루션을 실제로 입력하면 더 잘 기억할 것입니다.

후배가 당신과 짝을 이루어 특정 문제를 해결하도록 도와 주면, 다음 번에 문제가 생길 때 다른 사람과 짝을 지을 수 있으며, 어깨에 서 있지 않고 상담 만 할 수 있습니다. 그들은 다른 것을 시도합니다.

정말 어려운 5 명의 새로운 사람들이 있습니다. 당신은 그들 모두에게 공평해야하고 당신이 짝을 이루거나지도를 줄 사람을 회전시켜야합니다. 즐겨 찾기를 재생하지 마십시오. 그러나 누군가가 성공하지 못하고 진전을 이루지 못하면 "터프 러브"를 제공하는 사람이어야합니다. 당신은 그들 중 하나 이상을 제쳐두고 그들에게 개선이 필요하고 왜 그들이 성공하지 못한다고 느끼는지 말해 줄 필요가 있습니다. SOME peopel은 당신이 짝을 짓고 할 수 없다면 모든 일을 할 수있게 해줄 것입니다. 만약 사람이 일을 할 수 없다면, 그들에게 더 친절하고 당신이 한 번 수행하지 않으면 더 독립적 인 것을 배우지 못하거나하지 않을 것이 분명합니다.

당신이 기대하는 것을 얻는다는 것을 기억하십시오. 많이 기대하지 않으면 많은 것을 얻지 못할 것입니다. 그들이 빛날 것으로 예상하고 그들 대부분은 당신의 표준에 도달 할 것입니다.


20

페어 프로그래밍 은 큰 가능성이 있습니다.

  • 그들 중 4 명에게이 두 가지 간단한 버그 중 하나를주고, 짝을 지어 각 쌍이 그들 중 하나를 다루게하십시오.
    • 이 요청을 "이 원인을 파악할 수 있습니까?"로 표현하십시오. 아직 문제를 해결 하는 방법 에 대해 생각하게하지 마십시오 .
    • 그들은 설명의 일부 수준이 이렇게되면, 다음 이 해결 될 수있는 방법을 요청합니다. 이런 식으로 그들은 한 번에 큰 일에 압도 당하지 않을 것입니다. 아직 코드를 작성하지 않은 경우 코드를 실험 해 보도록하자. 일단 계획이 모호한 경우에도 좋은 솔루션으로 안내 할 수 있습니다.
  • 다른 하나는 당신과 짝을 짓고 어려운 사람 중 하나와 그와 일을 시작할 수 있습니다. 코드에 대한 경험이 없기 때문에 더 어려울 수 있지만 경험이있는 사람에게도 도움이 될 것입니다.
    • 귀하의 경험에 비추어 볼 때 새로운 기능이 좋은 방법이라고 생각합니다. 새로운 기능이 개발됨에 따라 기존 API를 보여줄 수 있습니다.

이 제안 작업의 일화 / 예를 들어 : 이것은 내가 작업하는 코드베이스의 가장 털이 많은 부분을 소개하는 방법이었습니다.

  • 우리에게는 버그가 주어졌고, 약 10 분 동안 소개 된 후, 무슨 일이 일어나고 있는지 알아 내라고했습니다.
  • 약 1 시간 후에, 우리는 헤어져서 두 개의 다른 생각의 기차로 파헤 쳤다.
  • 그로부터 약 2 시간 후에, 나는 일반적으로 코드가 어떻게 작동하는지 알아 냈지만, 나쁜 출력이 어디서 생성되는지 정확히 알지 못했습니다. 그는 원시 데이터와 비정규 화 된 데이터를 조사하여 어떻게 생성되고 있는지 파악했지만 코드를 파악할 수 없었습니다.
  • 우리는 쌍을 이루고 코드 경로를 함께 따라 갔으며 정확한 답을 얻었습니다. 이로부터 우리는 관리자와 가능한 솔루션을 브레인 스토밍하고 나중에 구현했습니다.

그 이후로 코드베이스의 전체 부분에 대한 유지 관리를 계승했습니다. 왜냐하면 실제로 더 이상 작동 방식을 이해하는 유일한 사람이기 때문입니다 (여전히 주변에있는 원래 개발자는 완전히 기억조차하지 못합니다).


+1. 문제는 5 명을 2 명의 쌍으로 나누는 것일 수도있다.
Doc Brown

@DocBrown 글쎄, 숙련되지 않은 개발자 5 명 + 숙련 된 개발자 1 명은 2 개의 그룹을 3 개 만들 수 있음을 의미합니다 (두 번째 주요 글 머리 기호 참조). 어떤 유형의 코드 (UI, 비즈니스 로직 등)가 어디로 가는지에 대한 자습서가 될 수 있지만 다른 4와는 다른 것을 배우게됩니다. 그런 다음 다음 작업 세트에서 회전합니다.
이즈 카타

7

그들을 가르친다. 그들에게 쉽게 해결할 수있는 작업을 할당하십시오.

간단히 말해서, 문제는 해당 인력이 자신의 임무를 수행 할 때 생산성이 충분하지 않다는 것입니다. 따라서 1) 작업을 쉽게 할 수 있습니다. 2) 인력의 기술을 향상 시키려고 노력할 수 있습니다.

새로운 사람이 팀에 합류하고 경험이없는 코드베이스 작업을 시작할 때마다 비슷한 문제가 거의 항상 발생합니다. 도구와 방법론을 알 수없는 경우 문제가됩니다. 도구와 방법론에 익숙해 지도록 교육함으로써 문제를 더 빨리 완화 할 수 있습니다.

그러나 그러한 문제를 해결하는 데는 시간이 걸립니다. 다른 사람들이 모든 것을 알고 있거나 한 순간에 모든 것을 배우기를 기대할 수는 없습니다. 아마도 동시성, 소프트웨어 최적화 및 필요한 일반적인 방법론에 관한 책을 소개하는 것이 좋을 것입니다.


3

고용 결정에 포함되지 않은 것 같습니다. 현재 작업을 처리 할 수있는 능력을 공정하게 평가합니다. 권장 사항 (배달 시간에 영향을 미치지 않는 외부 교육 및 그러한 작업)이 포함 된 보고서를 작성하고 해당 직원을 고용 한 사람과 대화를 시작할 수있는 관리자에게 보고서를 보냅니다. 한 명의 새로운 사람이 팀에 흡수 될 수 있지만 한 번에 5 명의 새로운 사람들이 편안한 가게가 없으면 좋은 소리를 내지 않습니다. 계획에서 설명하지 않는 한 프로젝트 시간에 가르치려고하지 마십시오.

편집 : 이 상황에서 Brook의 법칙 을 언급하는 것이 적절할 수 있습니다 .


2

어쩌면 샌드 박스 환경을 만드는 데 시간을 투자하여 해를 끼치 지 않고 어려운 문제를 해결할 수 있습니다. 가능한 한 철저히 솔루션을 테스트하도록하십시오. 같은 문제에 1 이상을 두십시오.

이 모든 것들은 그들에게 유용한 기술을 익힐 수있는 가능성을 제공하며 시간이 덜 소요됩니다. 물론 당신이 (대부분) 싱크대 또는 수영을 가지고 있고 그들이 거의 싱크대라면 물건을 다시 생각해야합니다.

프로그래밍 직업에서 대부분 혼자서 배울 수없는 사람들은 실제로 가르치는 데 노력할 가치가 없을 것입니다. 그러나 나는 그들이 당신이 도움을 줄이면 그들이 얼마나 잘 지내는지에 대해 아마 당신을 놀라게 할 것이라고 생각합니다.


샌드 박스 환경이 없으면 시간 낭비처럼 보입니다.
Ramhound
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.