나는 mcottle의 대답을 좋아하고 찬성했지만 다른 대답이 아직 제기하지 않은 다른 역학과 논쟁을 다루고 싶습니다.
첫째, mcottle의 답변에 암시적인 것은 특정 기술 수준 아래에서 일부 문제는 불가능하다는 사실입니다. 불행하게도, 당신이 밖으로 찾을 방법입니다 팀 노력과 실패입니다 매우비싼. 실패한 후에는 이것으로부터 배울 수있는 두 가지 교훈이 있습니다. 한 가지 옵션은 더 유능한 개발자가 필요하다는 것을 배우므로 개발자를 고용하여 과도하게 예산을 초과하고 일정을 계획하지만 최소한 미래에는 준비가 된 것입니다. 다른 옵션은 그러한 프로젝트가 팀에게 "너무 힘들다"는 것이며, 앞으로는 프로젝트를 포기하고 유사한 프로젝트를 포기해서는 안된다는 것입니다. 물론, "우리는이 작업을하기에는 너무 멍청하다"는 말을 거의하지 않지만 대신 "우리 시스템은 매우 복잡하다"또는 "우리는 많은 레거시 코드를 가지고있다"또는 다른 것들로 합리화 될 것이다. 후자의 관점은 무엇이 가능한지, 얼마나 길고 / 비싼 개발이되어야하는지에 대한 회사의 관점을 크게 왜곡시킬 수 있습니다. "
한 가지 질문은 회사의 계획이 정확히 무엇입니까? 좋아, 그들은 저렴한 주니어 프로그래머를 고용 할 것이다. 3 년이 지난 지금 3 년 동안 개발자와 함께했던 개발자는 무엇입니까? 그들은 결코 그 / 그녀의 인상을주지 않았습니까? 여기에있는 옵션은 다음과 같습니다.
- 그들은 직원을 유지하기 위해 경쟁력을 높이는데,이 경우 왜 수석 개발자 요금을 지불하는 데 문제가 있습니까? 그래도 돌아 올게요.
- 그들은 정체 된 요금을 가지고 있으며, 결국 운전 및 / 또는 기술이 부족한 직원들에게 "비등"할 것입니다.
- 그들은 더 많은 고위 직원을 적극적으로 제거합니다.
두 번째 사례는 많은 직원 이직을 의미하며, 이는 회사 지식이 손실되고 직원을 지속적으로 증가시키기 위해 지불하는 것을 의미합니다. 두 번째 경우, 당신은 본질적으로 나쁜 개발자를 선택하고 있기 때문에 일정이 증가하는 형태로 비용이 상승합니다. 이것이 진행되는 방식은 프로젝트 X에서 모든 것이 잘 진행되고 있다는 것입니다. Jim은 더 나은 개발자 중 한 명인 갑자기 떠날 때까지 2 년 동안 모금을받지 않았기 때문에 프로젝트가 "이해할 수 있습니다" Jim만큼 좋지 않은 새로운 주니어 개발자를 고용하고 훈련시켜야합니다. 이것이 기대치를 다시 교정하는 방법입니다.
경쟁력있는 인상이 제공되는 경우에도 주니어 개발자 인 경우 어디에서 어떻게 배워야합니까? 당신은 기본적으로 그들 중 하나가 업무 환경 에도 불구하고 스스로 좋은 습관을 배우고 궁극적으로 다른 목초지 (녹색 목초지를 떠나는 것이 아니라)를 멘토링 하기를 바라고 있습니다. 좋은 개발자와 함께 "펌프를 프라이밍"하는 것이 훨씬 더 합리적입니다. 아마도 당신은 Expert Beginners 의 문화를 개발할 것 입니다. 결과적으로 주니어 개발자보다 약간 더 좋고 문화적으로 독성이있는 사람들에게 수석 개발자 요금을 지불하게됩니다.
다른 사람이 언급하지 않은 것에 대해 매우 놀랍게도 특히 훌륭한 개발자 의 한 가지 이점 은 그들이 쉽게 곱셈 요소가 될 수 있다는 것 입니다. 주니어 개발자와 상급 개발자가 테이블을 만드는 데 같은 시간이 걸리는 경우가 있습니다. 그러나 좋은 개발자는 그렇게하지 않습니다. 모든 사람 이 테이블을 만드는 시간을 줄여주는 테이블 생성기 를 만들 것입니다. 대안 적으로 또는 추가적으로, 그들은 모든 사람에게 가능한 것의 한도를 올릴 것 입니다. 예를 들어 Google의 MapReduce 프레임 워크를 구현 한 개발자는 사용자가MapReduce의 알고리즘은 자체적으로 방대한 양의 알고리즘 버전을 만들 수 없으며 이제 MapReduce를 사용하여 쉽게 수행 할 수 있습니다. 종종이 역학은 덜 야만적입니다. 예를 들어, 더 나은 소스 제어, 테스트 및 배포 관행은 모든 사람을 향상 시키지만 특정 사람을 추적하기는 더 어려울 수 있습니다.
반대편에 대해 약간 논쟁하기 위해, 아마도 고가가 맞을 수도 있습니다. 더 숙련 된 개발자가 필요하지 않을 수도 있습니다. 만약 그렇다면, 개발은 회사의 중요한 부분이 아닌 것 같습니다. 이 경우 개발자를 완전히 제거하고 상용 소프트웨어를 사용하거나 필요시 계약자를 고용합니다. 사내 팀보다는 계약자 만 사용하지 않는 이유를 살펴볼 가치가 있습니다. 어쨌든 많은 직원 이탈을한다면, 계약직 계약자는 문제가되지 않습니다.