관리자가 프로그래밍 언어를 선택하는 방법


23

관리자가 프로젝트에 사용될 프로그래밍 언어를 강요 할 수있는 사람에게는 누구나 비밀이 아닙니다.

프로그래머 자신이기 때문에 나는 이것을 이해할 수 없었습니다.

그러나 지금 나는 그렇게 생각합니다. Joel Spolsky가 Podcast에서 "세계의 모든 회계사가 그것을 알고 있기 때문에"QuickBooks를 사용해야한다고 발표했을 때 나는 단지 계시를 받았습니다. 이것은 "세계의 모든 프로그래머가 그것을 알고 있기 때문에 Java를 선택하십시오"와 매우 흡사합니다.

다른 관점에서 똑같은 문제를 보았으므로 회계에 대해 많이 알지 못하지만 프로그래밍에 대해 알고 있습니다. 프로그래머가 프로젝트에 적합한 프로그래밍 언어를 선택하도록 어떻게 도울 수 있는지 궁금합니다. ?


관리자는 항상 9 명의 여성이 한 달에 한 명의 아기를 출산 할 수 있다고 믿는 사람입니다.
마이너스 7

답변:


29

많은 프로그래머들이 저지르는 실수는 기술적 인 장점만으로 요점을 주장하거나 (또는 ​​단순히 동의하거나 동의하지 않는 것) 것입니다. 경영진과 비즈니스 전체를 통해 비즈니스 사례와 비즈니스의 장점을 먼저 주장하고 기술적 장점을 두 번째로 주장해야합니다.

이것은 프로그래밍 언어의 선택을 넘어 사실상 모든 기술적 결정에 영향을 미칩니다.

PC를 예로 들어 보겠습니다. Joel은 개발자 시간이 비싸기 때문에 개발자가 최고 수준의 머신을 가져야한다고 주장합니다. 이것에서 그는 완전히 옳습니다. 그러나 당신은 이것을 어떻게 주장합니까? 단순한:

예 : 나는 하루에 약 20 번 코드를 빌드합니다. 매 3 분이 걸립니다. 빠른 PC가 있다면 1.5 분 안에 만들 수있었습니다. 따라서 2 년마다 $ 1,000 씩 추가로 하루에 30 분을 추가로받을 수 있는데, 프로그래머의 경우 $ 100k (최소 50 % 이상의 비용)를 낼 수 있으며 이는 시간당 대략 $ 10,000에 해당합니다.

그러나 정책과 PC의 경우 HR이 한 가지 크기를 모두 결정함으로써 HR 부서 직원이 25 만 달러를 벌고 어떤 이유로 든 4 배를 벌어들이는 프로그래머도 같은 PC를 사용해야한다고 주장합니다.

기술 플랫폼과 언어는 의사 결정 조합에 많은 요소를가집니다.

  • 특정 공급 업체와 전략적 관계. 귀사에서 Microsoft Gold Partner (또는 현재 이름)가 있다면 Java 또는 Python을 도입하는 것이 좋습니다.
  • PC 부서의 예산이 예산에서 나오기 때문에 IT 부서는 특정 구성을 주장합니다.
  • 리눅스를 운영하는 사람들이 없기 때문에 모든 사람들이 Windows 2000을 운영해야한다고 결정하는 IT;
  • 회사가 이미 보유하고있는 다른 시스템 (예 : 다른 모든 것에 Java를 사용하는 경우 자체적으로 최선의 선택이 아닐지라도이를 위해 사용하는 것이 합리적 임);
  • 경험 부족으로 다른 플랫폼이나 언어로 위험 회피;
  • 개발자를 행복하게 만드는 것보다 경영진과의 위험 논쟁에 더 관심이 있습니다.
  • 일부 관리자는 손이 묶여 있기 때문에 단순히 결정을 내립니다.
  • 예산적인 이유는 PVCS, Rational에서 생산 한 물건 등과 같이 집에서 값 비싼 곤돌라가 나오지 않기 때문에 유리하게 작용할 수도 있습니다.
  • 오픈 소스 라이센스에 대한 법률 부서 혐오;
  • 계획 및 프로젝트 추정에 기술 직원이 관여하지 않음;
  • 관리자가 특정 플랫폼을 잘 알고 있어야합니다 (기술 담당자도 유죄이지만 두 경우 모두 악의적 인 것은 아닙니다).
  • 기술 직원의 경험. 모두 C # 배경이라면 Java, Python 또는 Ruby를 사용하는 이유는 무엇입니까?
  • 다른 많은 이유들

어떤 경우이든 당신은 이유를 이해하고 (여러 가지 이유가 있음을 보증합니다) 그 용어의 장점을 주장해야합니다. 일부 프로그래머는이 부서에서 매우 순진하며 거의 항상 많은 요소가 작용할 때 그러한 결정이 무지 나 심지어는 무의미하다고 판단되는 것 같습니다.


매우 훌륭하고 자세한 답변!

1
"합리가 생산하는 PVCS와 같은 집에서 비싼 곤돌라". 하! 사실이기 때문에 재미있다;)
Rig

우리 회사는 Microsoft Gold 파트너이지만 합리적으로 필요한 모든 것을 사용합니다. 당신은 당신의 사건을 제시하고 그것을 위해 싸워야하지만, 똑똑한 사람들에게는 모든 것이 가능합니다
Budda

16

내가 회사에서 본 것에서 : 관리자가 프로그래밍 언어를 선택할 때 일반적으로 팀에서 사용할 수있는 프로그래밍 기술의 종류를 고려하여 (그리고 추가 기술을 쉽게 고용하는 것이 쉬운 경우), 매우 보수적으로 그렇게합니다. ), 잘 확립 된 언어인지 여부에 관계없이 현재 인프라에 맞고 이미 존재하는 것에 맞추기 위해 많은 노력을 기울이지 않는 것을 선택하려고합니다. 프로그래머가 프로그래밍 언어를 선택할 때 사물은 종종 약간 달라지는 경향이 있습니다. 종종 새로운 도전을 원하고 최신 유행을 겪고 새로운 것을 배울 수있는 것을 선택하려고합니다.

이상적으로는 관리자와 개발자 팀 간의 장단점을 논의하고 문제에 가장 적합한 솔루션을 찾는 것이 중요합니다. 이것은 일반적으로 많은 이야기와 설득력이 필요합니다 :-)


다운 투표를하는 이유는 무엇입니까?

2
당신이 실제로 내 질문에 대답하지 않았기 때문에 나는 투표를하지 않았습니다. 당신은 방금 일반을 말 했어요. 마지막 문장을 제외하고는 대답으로 볼 수 있습니다. 그러나 그것은 거의 쓸모가 없습니다.

14

답변이 늦었지만 아직 답변이 없으므로 시도해 보겠습니다. 나는 두 가지 질문으로 생각하고 별도로 대답하려고 노력할 것입니다.

관리자는 프로그래밍 언어를 어떻게 선택합니까?

조직의 규모와 관리자의 경험에 따라 크게 달라 지지만 일반적으로 현재 상황과 향후 시나리오 및 요구 사항을 평가해야합니다. 이것은 일반적으로 PESTLE 또는 유사한 분석을 통해 수행 되며 각 카테고리에서 몇 가지 샘플을 제공합니다.

  • 주재관
    • "아무도 IBM을 사기 위해 해고 당하지 않았습니다"– 안전한 선택.
    • CEO는 자바가 멋지다고 들었다.
    • 수석 아키텍트는 .NET-pet 프로젝트를 좋아합니다.
    • 언어는 적대적인 경쟁자에 의해 제어됩니다-Google이 C #에 의존하지 않는 이유.
  • 경제적
    • 라이센스 비용.
    • 개발자 교육 비용.
    • 코드베이스 마이그레이션 비용.
  • 사회적인
    • 팀에서 바이 인.
    • 사내 기술 가용성 (훈련 요구, 연속성)
    • 시장에서의 기술 가용성.
    • 개발자 팀 내의 기존 현상에 위협이됩니다.
    • 충분히 큰 연습 공동체의 가용성.
  • 기술
    • 생산성 향상.
    • 품질 향상.
    • 기존 코드베이스와 상호 운용 가능
    • 표준 준수.
    • 성숙.
  • 적법한
    • 라이센스 조건.
    • 기술 제어 (기술을 소유하고 관리하는 사람은? 향후 라이센싱 전략은 무엇입니까?)
    • 법률 및 규정 준수.
  • 환경
    • 회사 내의 기존 인프라
    • 회사 내 기존 기술.
    • 외부 파트너와 통합
    • 더 넓은 환경에 의한 기술 지원 수준.

그런 다음 SWOT , 비용 편익 분석 등을 사용하여 기준과 일치하는 여러 언어를 추가로 평가할 수 있습니다 .

전체 프로세스는 다소 복잡 할 수 있지만, 대부분의 회사 나 프로젝트 팀은 현재 상황에서 여전히 필요한 기능을 제공 할 수있는 가장 안전한 옵션을 선택합니다. 종종 현재 플랫폼을 더 오래 고수한다는 의미 일 수 있습니다.

프로그래머가 프로젝트에 적합한 프로그래밍 언어를 선택하도록하는 방법

잘 알려진 바와 같이, 전형적인 프로그래머는 일반적으로 의사 결정 프로세스에 대한 총 입력량의 1/6 만 가질 것이라고 설명했습니다. 그리고 원칙적으로 그녀는 대부분 언어 능력에만 관심이 있습니다!

글쎄, 결정에 영향을 미치는 가장 좋은 방법은 선택 과정에 대한 더 넓은 그림을 가지고, 팀 내외부의 동맹을 맺고, 기술적 측면에 대한 좋은 요약을 만들고 언어 능력에만 집중하지 않는 것 같습니다.

물론 프로젝트 또는 개발 관리자 (또는 담당자)가 전체 평가 프로세스를 수행함으로써 얻을 수있는 이점을보고 다른 것으로 전환 할 때의 위험과 불확실성을 고려할 준비가되어 있어야합니다. 처음에 언어. 이를 위해서는 다음을 입증해야합니다.

  1. 현재 플랫폼이 더 이상 적합하지 않습니다.
  2. 새로운 플랫폼은 번거 로움보다 훨씬 큰 이점을 약속합니다.

그러나 "내가 좋아하는 언어를 직장에서 사용할 수있는 가장 좋은 방법은 무엇입니까?"라고 물었을 경우 아마도 "이미 언어를 사용하거나 자신의 언어를 시작하는 회사에 가입"했을 것입니다.


5

관리자 A는 여름 휴양지로 가서 관리자 B를 만납니다.

A : 회사에서 어떤 언어를 사용하십니까? B : 오, 우리는 CA Visual Objects를 사용합니다. 드론은 COBOL보다 훨씬 생산적입니다.

그리고 이것이 결정되었습니다. 실화의 끝.


그 회사는 무엇입니까?

3

모든 플랫폼에는 장점과 단점이 있습니다. .NET은 시원하고 강력하지만 Windows 서버와 거의 관련이 있습니다. 루비는 시원하지만 느립니다. 하스켈 개발자를 찾기가 어려울 것입니다.

요점은 언어는 프로젝트가 얼마나 빨리 수행 될지가 아니라 코드가 얼마나 아름다운지에 영향을 미치며, 관리자가 관심을 갖는 것들에 영향을 미친다는 것입니다. 당신이 그들에게 영향을 미치기 원한다면, 당신은 이제 그들이 선호하고 가능한 한 그들의 관점에서 좋은면을 찾아야합니다.


1
흥미로운 점을 제기했지만 하스켈 개발자를 찾는 것은 틀립니다. Haskell에서 프로그램을하는 대부분의 사람들은 직장에서 그렇게하지 않지만, 원합니다 (그리고 일반적으로 꽤 똑똑합니다)

1
나는 그들이 똑똑하다는 것을 안다 :) 그러나 그것은 지루하거나 많은 돈을 지불해야하기 때문에 지원하지 않을 것입니다. 그것은 실제로 COBOL과 같습니다. 당신은 그것을 알고있는 사람을 찾을 수 있지만 많은 시간을 보내고 다른 사람을 위해 더 많은 돈을 지불해야합니다.

아니, 당신은 지금 Haskell에서 일하는 것보다 훨씬 적은 임금으로 현재와 같은 일을하는 300 명 이상의 Haskell 개발자를 잘 알지 못합니다.
Rayne

2

우려를 분리함으로써. 비즈니스는 비즈니스 결정을 담당하고 기술 결정은 기술을 담당해야합니다. 나는 "허용 된 책임"이라는 용어를 좋아한다. 책임을 받아들이려면 문제의 영역과 관련된 선택을해야합니다. 비즈니스는 나와 내 기술 동료에게 비즈니스 요구를 제공하고 우리는 책임을 감당할 수있는 방법에 대한 하나 또는 두 가지 대안으로 답변합니다. "Python 또는 C #에서 할 것"과 같지 않아야합니다. 차라리;

"우리는 여기에서 두 가지 다른 책임을 받아 들일 수 있습니다. 만약 우리가이 길로 가면, 우리는 이것을 빨리 전달할 수 있고 우리는 이러한 비즈니스 요구를 정말 잘 충족시킬 수 있으며 조금 더 어려워집니다. 우리는 또한 이런 식으로 그렇게 할 수 있으며, 따라서 이러한 비즈니스 요구는 우월합니다 대안 A는 이러한 자원을 요구하고 대안 B는 우리가 이것을 수행해야한다는 것을 의미한다. "

그런 다음 비즈니스는 선택하지만 비즈니스는 기술적 인 것이 아니라 비즈니스에 미치는 영향에 따라 선택됩니다. 또한 기술이 기술 부분의 책임을 받아 들일 준비가되지 않은 대안 중에서 선택할 수 없습니다.


매우 흥미로운.

1

관리자가 되십시오. (이를 드러내고 웃다)

진지하게, 당신은 문제의 의사 결정자와 문제를 논의하고 논쟁을 제기해야합니다. 그들이 정말로 잘못된 결정 을 고수하기로 결정했다면, 그들의 일반적인 역량은 그리 뜨겁지 않으며 다른 일을 찾아 볼 가치가있을 것입니다.


아니면 실패한 것은 당신 자신의 의사 소통 기술이므로이를 연마해야합니다.

그것도 있습니다.

1

나는 당신이 말하는 것과 Joel이 이야기 한 것과의 차이점은 프로그래밍은 핵심 역량이지만 회계는 그렇지 않다는 것입니다. Quickbooks를 사용하는 요점은 아마도 회계사 가 아니며 회계사가 당신을 도울 수 있기 때문일 것입니다. 그러나 프로그래밍이 핵심 역량이고 아마도 프로그래머라면 아마도 게임 규칙이 약간 다릅니다.


2
프로그래밍은 종종 관리자에게 핵심 역량이 아닙니다.

아마도 Quickbooks와는 다른 방식으로 비즈니스 나 부서의 핵심 역량 일 것입니다.

따라갈 수 없습니다. 사과와 오렌지를 비교하고 있습니까?

왜 공감해야합니까? 방금 당신의 결함 논리를 지적했습니다. 사과와 오렌지까지는 주전자가 주전자를 만나는 것 같습니다. Joel이 wrt Quickbooks에 대해 말한 것은 Java를 선택하는 관리자와는 매우 다릅니다.

1

그것은 매니저의 성격에 달려 있습니다.

유행어를 사용하는 사람들이 있습니다. 사용하고자하는 언어와 관련하여 대화 할 때 좋아하는 유행어를 찾아서 사용하십시오.

다른 사람들은 자신이 알고있는 것 (예 : VB 6.0) 만 신뢰합니다. 선택 언어를 이해하기 쉽게 만드십시오.

그러나 실제로 대부분의 관리자는 우리가 괴짜처럼 생각하는 것처럼 어리석지 않습니다. 여기서 중요한 것은 자신의 관점을 이해한다는 것입니다. 일반적으로 특정 기술적 세부 사항에 관심이없고 결과에 관심이 있습니다. 따라서 .net, Java 또는 Delphi 또는이 메가 쿨 멋진 기능을 가지고 있다고 말하지 마십시오. 그들에게 (여기 당신의 언어를 입력)이 그 기능을하기 때문에 좋은 선택이 A가 이 같은 프로젝트, 또는 기능의 개발 기간 단축있게 B의 적은 버그 차종과, 따라서 테스트에 필요한 시간을 단축. 당신의 주장이 올바른지 확인하십시오. 거짓말하지 마십시오.

다시 말해서 그를 무지한 존재로 취급하십시오 (아마도).


1

매우 어려운 언어를 사용하도록 요청하십시오. 업무에 적합한 언어가 아님을 확인한 다음 직무에 사용할 다른 언어에 대해 제안 할 수 있는지 관리자에게 문의하십시오. 언어가 업무에 좋지 않다는 것을 증명할 수있는 정보를 제공하고 그가 말하는 내용을보십시오. 아파요. :)


흥미로운 점. 그러나 그 증거의 부담은 그 반대가 아니라 언어를 강요하는 사람에게 있어야한다고 생각합니다.

페어리 테일 세계에서.
Rayne

1

프로그래밍 언어를 선택하는 것은 종종 비즈니스 결정입니다. 고객 / 사용자는 신경 쓰지 않습니다. 다음은 짧은 인용입니다 ( http://www.ericsink.com/bos/Geeks_Rule.html ) :

프로그래밍 언어는 주로 비즈니스상의 이유로 선택됩니다. 나는 대부분의 시간을 내가 싫어하는 언어로 작업하는데 사용하고 싶은 언어가 기술적 인 장점보다 중요한 비즈니스 단점을 가지고 있기 때문이다. 이것이 게임의 본질입니다. 상황을 받아들이거나 (나의 선택) 새로운 고용주를 찾을 수 있습니다. Java 또는 Python을 사용할 수 없거나 직장에서 무엇이든 사용하는 방법에 대한 옵션은 아닙니다.


동의합니다. 그러나 비즈니스와 기술의 두 가지 역할을 고려할 때 기술은 비즈니스 요구에 맞는 언어 / 프레임 워크에 대한 가장 중요한 정보를 제공 할 것입니다. 슈트는 기술 지식이 필요한 경우가 거의 없습니다.

1

우선, 프로그래밍은 또 다른 형태의 예술입니다. 매우 논리적 인 형태의 예술. 당신의 매니저가 그의 뛰어난 소프트웨어 프로젝트에 관심이 있다면, 즉 걸작의 작품을 확장 한 다음, 그 예리한 매니저에게 다음을 요청하십시오.

렘브란트 는 자신이 좋아하는 브러시로 페인트하지 않고 400 년 전과 그의 작품이 유명해지기 전에 관리 팀을 신중하게 고려한 후에 브러시로 페인트하는 데 추가 에너지와 시간이 얼마나 들었습니까 ? 그의 그림은 당신이 생각하는 가치가 있습니까?

마찬가지로, 어떤 언어를 사용해야하는지 프로그래머에게 말하고 있다면 일관성을 유지하고 화가에게 어떤 브러시 크기를 사용해야하는지 알려주십시오! 또는 매일, (대부분의 걸작처럼) 밤마다 함께 일해야하는 사람들에게이 선택을 남겨주세요!


파스텔 대 유성 페인트를 사용하여 예술을 만드는 것이 더 좋습니다. 그러나 장단점은 여전히 ​​비즈니스 측면에 있습니다. 아티스트가 유성 페인트를 선호하더라도 프로젝트는 저렴한 재료가 필요하거나 준비 시간이 짧거나이 클라이언트 등의 수명이 더 길어질 수 있습니다. 즉, 예술가는이 선택에 입력해야하지만 설득과 증거의 부담이 어깨에 있다는 것을 깨달아야합니다.
lunchmeat317

0

이것들은 다른 개념입니다.

회계, 세금, 법률, 투자자 등의 결과를 공유합니다. 노동의 결과를 볼 수있는 도구가 필요하며이 도구는 잘 알고 있어야합니다.

프로그래밍 할 때 .exeWindows에서 실행할 수 있는 파일을 출력하는 한 원하는 도구를 사용합니다 . 회계의 경우 Quick Books에서 읽을 수있는 문서와 정확히 동일합니다.

따라서 토스터를 개발하는 경우 내부 문서를 중국어로 자유롭게 보관할 수 있지만 영어 설명서를 제공하는 것이 좋습니다.

회사 규칙에 따라 코드 결과가 제품 자체가 아니라 소스 코드라고 가정하면 원하는 언어를 선택하여 코드의 모양을 결정할 수 있습니다.

그들이 선택하는 것은 그들의 목표에 달려 있습니다 : 만약 쉽게 교체 할 수있는 프로그래머를 원한다면 그들은 Java를 선택합니다; 다른 부서로 보내면 해당 부서의 요구 사항 등이됩니다.


은유 적으로 말하면, 내가 말하는 것과 동등한 토스터는 내부 문서를 스페인어로 작성 해야하는 관리입니다. 왜냐하면 지구상에서 스페인어를 사용하는 사람들이 더 많기 때문입니다.

정확하게. 만일 스페인어를 사용하는 토스터 어셈블러가 노동 시장에서 더 쉽게 구할 수 있다면 물론 문서는 스페인어로 작성해야합니다.

0

내 경험에 따르면 항상 다음에 의존합니다.

  1. 언어를 사용할 수있는 자료가 있습니까?
  2. 언어를 유지할 자원이 있습니까?
  3. 우리가 언어를 사용하고 유지할 수있는 자원이 없다면 그 자원을 얻는 것이 얼마나 어려운가?
  4. 언어의 "미래"는 무엇입니까 (한동안 사용하고 있습니까?)

프로젝트에 특정 언어 / 플랫폼 / 기술 / 프레임 워크 만 제공하는 것이 필요한 경우가 아니라면 우리가 이미 알고 사용하고있는 것에 해당합니다. 새로운 직원을 고용하고 기존 프로그래머를 교육하는 것은 대부분의 회사에서 비용이 많이 듭니다. 채용 할 때 우리는 항상 언어를 고려하고 응시자가 그들이 사용할 언어를 알도록합니다.

바라건대 여러분은 관리자이기도하고 이러한 유형의 결정에서 프로그래머를 대표 할 수있는 프로그래머가 있기를 바랍니다. 그렇지 않은 경우 이는 위험한 상황이므로 그러한 결정을 내렸다는 것을 알고 있다면 관리자와상의해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.