マネージャーがプログラミング言語を選択する方法


23

マネージャーがプロジェクトで使用されるプログラミング言語を課すことができ、しばしば課すことになるのは誰にとっても秘密ではありません。

私自身プログラマーであるため、これを理解することはできませんでした。

しかし、今私はそう思います。JoelSpolskyがポッドキャストでQuickBooksを使うべきだと言ったとき、「世界のすべての会計士はそれを知っている」ので啓示を受けたばかりです。これは、「世界中のすべてのプログラマーがJavaを知っているためJavaを選択する」と非常によく似ていると思いました。

同じ問題を別の観点から見たので、会計についてはあまり知りませんが、プログラミングについては知っていますが、プロジェクトに適切なプログラミング言語が選択されていることをプログラマがどのように支援できるか疑問に思っています?


マネージャーとは、9人の女性が1か月で1人の赤ちゃんを出産できると信じている人であることを常に忘れないでください!
マイナス

回答:


29

多くのプログラマーが犯す間違いは、技術的なメリットのみに基づいて論点を主張する(または単に同意する、または同意しない)ことです。経営陣とビジネス全体では、ビジネスケースとビジネスのメリットを最初に、技術的なメリットを2番目に議論する必要があります。

これはプログラミング言語の選択にとどまらず、ほぼすべての技術的決定に浸透しています。

例を挙げましょう:PC。Joelは、開発者の時間は高価であるため、開発者は一流のマシンを用意すべきだと(正しく)主張します。これで彼は完全に正しい。しかし、これをどのように議論しますか?シンプル:

例:1日に約20回、コードのビルドを行います。毎回3分かかります。高速なPCがあれば、1.5分で構築できました。したがって、2年ごとに1,000ドル余分に1日30分余分に獲得できます。これは、プログラマーが100,000ドル(少なくとも50%の追加費用)を稼いでいる場合、それは年間約10,000ドルに相当します。

しかし、反対側の主張では、HRはポリシーとPCに関しては1つのサイズで十分だと判断するため、コールセンターワーカーは$ 25,000を稼ぎ、プログラマーは何らかの理由で同じPCを持っているはずの4回稼ぎます。

テクノロジープラットフォームと言語には、多くの要素が決定ミックスに含まれます。

  • 特定のベンダーとの戦略的関係。あなたの会社がMicrosoftゴールドパートナー(または現在の名称)である場合、JavaまたはPythonを導入することは幸運です。
  • IT部門は、PCのお金が予算から出ているため、特定の構成を主張しています。
  • Linuxを実行している人はいないので、全員がWindows 2000を実行する必要があると判断したIT。
  • 同社がすでに持っている他のシステム(たとえば、Javaを他のすべてに使用している場合、それ自体では最良の選択ではないかもしれませんが、Javaを使用するのが理にかなっています);
  • 経験不足からさまざまなプラットフォームや言語へのリスク回避。
  • 開発者を喜ばせることよりも、上級管理職にリスクを主張することに関心がある。
  • 一部のマネージャーは、手を縛られているという理由だけで意思決定を行います。
  • 予算上の理由ですが、PVCS、Rationalで作成されたものなど、高価なブーストグルを家から遠ざけるので、これもあなたの都合で機能します。
  • 法務部はオープンソースライセンスを嫌います。
  • 技術スタッフを計画およびプロジェクトの見積もりに関与させない。
  • 特定のプラットフォームに関する管理者側の知識(技術者もこれを犯していますが、どちらの場合も必ずしも悪いことではありません-あなたが知っている悪魔をより良くすることができる多くのツールがあります)。
  • 技術スタッフの経験。すべてがC#のバックグラウンドである場合、なぜJava、Python、またはRubyを使用するのでしょうか?
  • 他の多くの理由

どのような場合でも、理由を理解し(いくつかの理由があることを保証します)、それらの用語のメリットを主張する必要があります。一部のプログラマーはこの部門に非常に素朴であり、そのような決定は、ほとんど常に多くの要因が関係している場合、無知または正統性からであると考えているようです。


非常に良い詳細な答え!

1
「PVCSのように、Rationalが生産する高価なブーストグル」。ハァッ!それは本当だから面白い;)
リグ

私の会社はMicrosoft Goldパートナーですが、合理的に必要なものはすべて使用しています。あなたはあなたのケースを提示し、それのために戦う必要がありますが、すべては賢い人々のために可能です
ブッダ

16

私の会社での見方から:マネージャーがプログラミング言語を選択するとき、彼らは通常非常に保守的にそうします-チームで現在どのようなプログラミングスキルが利用できるかを考慮します)、それが十分に確立された言語であるかどうか、現在のインフラストラクチャに適合するものを選択しようとし、すでに存在するものに適合するように大きな努力を引き起こさないようにします。プログラマーがプログラミング言語を選択するとき、物事はしばしば少し異なる傾向があります-彼らはしばしば新しい挑戦をしたいので、最新の流行に乗って、新しいことを学ぶことができるものを選びたいです。

理想的には、マネージャーと開発チームの間で長所と短所を議論し、問題に最適なソリューションを見つけることです。通常、これには多くの話があり説得力があります:-)


なぜダウン票なのですか?

2
あなたが実際に私の質問に答えなかったので、私はダウン投票しました。あなたはたくさんの一般性を言ったばかりです。答えとして見ることができる最後の文を除いて。しかし、それはほとんど役に立たない。

14

返事が遅れますが、受け入れられた答えがまだないので、試してみます。私はそれを2つの質問として受け止め、別々に答えようとします。

マネージャーはどのようにプログラミング言語を選択しますか?

組織の規模と管理者の経験に大きく依存しますが、通常は現在の状況と将来のシナリオと要件の評価を伴います。これは通常、PESTLEまたは同様の分析を通じて行われ、各カテゴリにいくつかのサンプルを提供するだけです。

  • 政治的
    • 「IBMの購入で解雇された人はいません」-安全な選択。
    • CEOはJavaがクールだと聞いた-誇大宣伝。
    • チーフアーキテクトは.NET-ペットプロジェクトが大好きです。
    • 言語は敵対的な競合他社によって制御されています-GoogleがC#に依存していない理由。
  • 経済的
    • ライセンス費用。
    • 開発者トレーニングのコスト。
    • コードベースの移行コスト。
  • ソーシャル
    • チームからのバイイン。
    • 社内でのスキルの可用性(トレーニングニーズ、継続性)。
    • 市場でのスキルの可用性。
    • 開発チーム内の既存の現状に対する脅威。
    • 十分な規模の実践コミュニティの可用性。
  • 技術的
    • 生産性の向上。
    • 品質の向上。
    • 既存のコードベースと相互運用する機能。
    • 標準の順守。
    • 成熟。
  • 法的
    • ライセンス条項。
    • 技術管理(技術を所有および管理しているのは誰ですか?将来のライセンス戦略はどうなるでしょうか?)
    • 法規制の順守。
  • 環境
    • 企業内の既存のインフラストラクチャ。
    • 企業内の既存のスキル。
    • 外部パートナーとの統合。
    • より広い環境による技術サポートのレベル。

その後、SWOT、費用便益分析などを使用して、基準に一致する言語の束をさらに評価できます。

全体のプロセスはかなり複雑になる可能性がありますが、最終的な結果として、ほとんどの企業またはプロジェクトチームは、必要な機能を提供できる現在の状況を考えると、最も安全なオプションを選択します。かなり頻繁に、現在のプラットフォームに長くとどまることを意味するかもしれません。

プロジェクトに適したプログラミング言語が選択されていることをプログラマがどのように確認できるか

願わくば、典型的なプログラマーは通常、意思決定プロセスへの総入力のわずか6分の1しか持っていないことを実証してきました。そして、原則として、彼女または彼は主に言語能力だけに興味があります!

さて、決定に影響を与える最良の方法は、選択プロセスの全体像を把握し、チームの内外で同盟を結び、物事の技術的側面について適切なブリーフを作成し、言語能力だけに集中しないようにすることです。

そして、もちろん、プロジェクトまたは開発マネージャー(または他の担当者)が評価プロセス全体を通過することの利点を認識し、別のものに切り替えることのリスクと不確実性を検討する準備ができたら、立場を取る必要がありますそもそも言語。これを実現するには、次のことを実証する必要があります。

  1. 現在のプラットフォームでは不十分です。
  2. 新しいプラットフォームは、手間をはるかに上回る利点を約束します。

ただし、「職場で好きな言語を使用するための最良の方法は何ですか」と尋ねた場合、おそらくその答えは「既に言語を使用している会社に入社するか、独自の言語を始める」でしょう。


5

マネージャーAは夏のリトリートに行き、そこでマネージャーBに会います。

A:では、あなたは会社でどの言語を使用していますか?B:ああ、CA Visual Objectsを使用しています。これにより、ドローンはCOBOLよりもはるかに生産的になります。

そして、これが決定が下された方法です。実話の終わり。


それは何の会社ですか?

3

すべてのプラットフォームには、良い面と悪い面があります。.NETはクールで強力ですが、Windowsサーバーにはかなりこだわっています。Rubyはクールですが、遅いです。Haskellの開発者を見つけるのは難しいでしょう。

重要なのは、言語はプロジェクトの速度やコードの美しさだけでなく、マネージャーが気にかけるものにも影響するということです。ですから、彼らに影響を与えたいのであれば、彼らの好みを考え、できる限り多くの良い面を見つけてください。


1
興味深い点をいくつか挙げますが、Haskell開発者を見つけるのは間違っています。Haskellでプログラムするほとんどの人は仕事でそうしませんが、彼らはしたいです(そして、彼らは一般的にかなり賢いです)

1
私は彼らが賢いことを知っています:)しかし、それは彼らが退屈だかあなたが彼らに多くを払わなければならないので彼らがサポートの仕事をしないことを意味します。まるでCOBOLのようなものです。あなたはそれを知っている人を見つけることができますが、他の人に見せるよりも多くの時間を費やす必要があります。

いいえ、300人以上のHaskell開発者が、今やHaskellで仕事をするよりもはるかに少ない賃金で今と同じ仕事をしていることをよく知りません。
レイン

2

懸念を分離することにより。ビジネスはビジネスの決定を担当し、技術は技術の決定を担当する必要があります。「受け入れられた責任」という言葉が好きです。責任を受け入れる場合は、問題の領域に関係する選択をするよう要求します。ビジネスは私と私の同僚にビジネス上の要求を与え、私たちは提供する責任を受け入れる方法の1つまたは2つの選択肢で答えます。「PythonやC#でやる」のようなものであってはなりません。むしろ;

「ここで2つの異なる責任を受け入れることができます。このようにすれば、これを迅速に実行でき、これらのビジネスニーズに非常にうまく応えることができます。 。代替Aはこれらのリソースを要求し、代替Bはこれを行う必要があることを意味します...」

次にビジネスが選択しますが、ビジネスは技術的なものではなくビジネス的なものへの影響に基づいて選択することに注意してください。そして、彼らは、技術が技術部分の責任を受け入れる準備ができていない選択肢の中から選択することができません。


とても興味深い。

1

マネージャーになります。(にやにや)

真剣に、あなたは問題の意思決定者と問題を議論し、あなたの議論を提出するだけです。彼らが本当に間違った決定を固守することを選択した場合、彼らの一般的な能力はおそらくそれほど暑くはないので、何か他のものを探す価値があるかもしれません。


または、失敗したのはあなた自身のコミュニケーションスキルであり、それらを磨くことを検討すべきです。

それもあります。

1

あなたが話していることとジョエルが話していたことの違いは、会計はそうではないが、プログラミングはコアコンピテンシーであるということだと思います。Quickbooksを使用するポイントは、おそらくあなたが会計士ではなく、会計士があなたを助けることができるからです。ただし、プログラミングがコアコンピテンシーであり、おそらくあなたがプログラマーである場合、ゲームのルールは少し異なります。


2
プログラミングは、多くの場合、マネージャーのコアコンピテンシーではありません。

おそらく、それはビジネスや部門のコアコンピテンシーであり、Quickbookの議論とは大きく異なります。

フォローできません。リンゴとオレンジを比較していますか?

なぜ下票なのですか?あなたの欠陥のあるロジックを指摘しました。リンゴとオレンジに関しては、ポットはケトルに合うと思います。ジョエルがwrt Quickbooksについて語っていたことは、マネージャーがJavaを選んだだけではありません。

1

それはマネージャーの性格に大きく依存します:

流行語に当てはまるものがあります。好きな流行語を見つけて、使用したい言語と組み合わせて話しかけたときに使用します。

他の人は、自分が知っているものだけを信頼します(たとえば、VB 6.0など)。選択した言語を理解しやすくします(「知っている、古き良きVBのように」-Haskellについて話している場合でも...)

しかし、現実には、ほとんどのマネージャーは、私たちが考えるのが好きなほど愚かではなく、推論することができます。ここで重要なのは、彼らの視点を理解することです。彼らは通常、特定の技術的な詳細を気にせず、結果に気を配ります。ですから、.net、Java、Delphi、またはこの巨大な素晴らしい機能を備えたものは何も言わないでください。機能Aはこのようなプロジェクトの開発時間を短縮するため、または機能B はバグを少なくするためテストに必要な時間を短縮するため、(ここに言語を入力して)を選択することを伝えます。あなたの議論が正しいことを確認してください、彼に嘘をつかないでください。

言い換えれば、彼を知性的な存在のように扱ってください(おそらくそうです)。


1

非常に一生懸命使用するよう求められている言語について考えてください。それが仕事に適した言語ではないことを確認してから、仕事に使用する他のより良い言語について提案できるかどうかマネージャーに尋ねてください。言語が仕事にふさわしくないことを証明できる情報を提供し、彼の言うことを見てください。痛くない。:)


興味深い点。しかし、証拠の負担は言語を課す人にあるべきであり、その逆ではないと感じています。

フェアリーテイルの世界で。
レイン

1

多くの場合、プログラミング言語の選択はビジネス上の決定事項です。顧客/ユーザーは気にしません。ここに短い引用があります(http://www.ericsink.com/bos/Geeks_Rule.htmlから):

プログラミング言語は、主にビジネス上の理由から選択されます。私が仕事をしたい言語は、技術的なメリットを上回るビジネス上の不利な点を抱えているため、私はほとんど好きではない言語で仕事をしています。それがゲームの性質です。私は状況を受け入れるか(私の選択)、または新しい雇用者を見つけることができます。JavaやPythonを使用できないことや、職場で使用しているものは何もできないということは、選択肢ではありません。


ここに同意します。しかし、ビジネスとテクノロジーという2つの役割を考えると、テクノロジーはどの言語/フレームワークがビジネスの需要を満たすかについて最も重要な情報を持っていることに注意することも重要だと思います。スーツに必要な技術知識はほとんどありません。

1

まず、プログラミングは芸術の別の形態です。アートの非常に論理的な形式。あなたのマネージャーが彼の並外れたソフトウェアプロジェクトに熱心であるなら、それはある程度、傑作の作品であり、その熱心なマネージャーに次のことを尋ねてください:

どのくらいのエネルギーと時間、レンブラントのコストがかかる 余分な彼のお気に入りのブラシでペイントしていないことではなく、ブラシこと、経営陣を慎重に検討した後、400年前、彼に手渡され、有名になる彼の作品の前に。彼の絵は多かれ少なかれあなたが考える価値がありますか?

同様に、使用する言語をプログラマに伝えている場合は、一貫性を保ち、使用するブラシサイズを画家に伝えてください。または、代わりに、この選択を毎日、および(ほとんどの傑作と同様に)毎日作業する必要がある人々に任せてください!


パステルとオイルペイントを使用してアートを作成することは、より良い類推です。ただし、長所と短所は依然としてビジネス側にあります。アーティストは油絵の具を好むかもしれませんが、プロジェクトには安価な材料が必要な場合があります/準備時間が少なくて済む/このクライアントの寿命が長くなるなどがあります そうは言っても、アーティストはこの選択に入力する必要がありますが、説得と証明の負担は自分の肩にあることを認識しなければなりません。
lunchmeat317

0

これらは異なる概念です。

会計するとき、あなたはあなたの結果を共有します:税、法律、投資家などのために、彼らはあなたの労働の結果を見るためのツールを必要とします、そして、このツールはよく知らなければなりません。

プログラミング時には、.exeWindowsで実行できるファイルを出力する限り、任意のツールを使用します。これは、会計の場合のQuick Booksで読み取り可能なドキュメントとまったく同じです。

したがって、トースターを開発する場合、内部ドキュメントを中国語で自由に保管できますが、英語のマニュアルを提供した方がよいでしょう。

もう1つあります。会社の規則で、コードの結果が製品そのものではなく、ソースコードであると想定している場合は、(希望する言語を選択することで)外観を決定することができます。

彼らが選択するものは彼らの目標に依存します:彼らが簡単に交換可能なプログラマを望むならば、彼らはJavaを選びます; 別の部門に送信する場合、その部門の要件などになります。


比phor的に言えば、私が話しているトースターに相当するのは、地球上でスペイン語を話す人が増えているため、内部文書をスペイン語で書くことを要求する管理です。

まさに。スペイン語を話すトースターの組み立て業者が労働市場でより簡単に入手できる場合、文書はもちろんスペイン語でなければなりません。

0

私の経験では、常に以下に依存しています。

  1. 言語を使用するためのリソースはありますか?
  2. 言語を維持するためのリソースはありますか?
  3. 言語を使用および維持するためのリソースがない場合、それらのリソースを取得するのはどれほど困難/コストがかかりますか?
  4. 言語の「未来」とは何ですか(しばらくの間、使用される予定ですか?)

プロジェクトが特定の言語/プラットフォーム/テクノロジー/フレームワークのみが提供するものを必要としない限り、それは私たちがすでに知っていて使用しているものに帰着します。ほとんどの企業では、新しい人を雇ったり、既存のプログラマーを訓練したりするのはかなり費用がかかります。採用時には常に言語を考慮し、候補者が使用する言語を確実に把握するようにします。

マネージャーでもあるプログラマーがいて、これらのタイプの決定においてプログラマーを代表できることを願っています。そうでない場合、それは危険な状況であり、そのような決定が行われていることがわかっている場合は、上司に相談してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.