「仕事に最適なツール」と親しみやすさのバランス[非公開]


19

そのため、プロジェクトに使用する言語を選択するとき、理想的な世界では、言語が仕事に適したツールであるため、言語が選択されます。ただし、習得しなければならない言語や会話のみを行う言語よりも、流fluentな言語を使用することを好むことがよくあります。もちろん、言語の流encyさは、その言語の該当ライブラリの知識も伴います。Javaのようなかなり汎用的な言語が本当に好きだからといって、常にそれを使用する必要があるというわけではありませんが、同時に、何らかのテキスト処理が行われるたびにPerlのようなものを分解する必要があるわけではありません。ここでどのようにバランスを見つけますか?

回答:


12

理論の世界から生産の世界に持ち出されたとき、それは非常に難しい質問です。

理論的には

シンプル。常に仕事に最適なツールを使用し、必要なことだけを学んでください。

実際には

あなたの流さの問題があるだけでなく、これに答える前に尋ねる必要のある他のビジネス上の質問がたくさんあります:

  • 「正しいツール」を購入するコスト
  • これをサポートするコスト-人々は訓練される必要があります
  • 学習曲線のコスト
  • 他の製品との統合コスト(現在および将来)
  • ...など

理論以外では、テクノロジーの選択に深刻な影響があります。

今、私は正しいツールを選択しないと言っているのではありません-正しいツールがそのコストへの影響でさえ破壊できることを確認してください。

これが個人プロジェクトの場合-常に「正しい」ツールを使用します-したがって、ビジネスコンテキストでこの決定に直面した場合は、より適切な情報に基づいた電話をかけることができます。


2
理論的には「単純」ではありません。何がない最高の本当に意味?基準は何ですか?
-whatsisname

+1:すべての要素を組み合わせた場合、正しいツールが最良のツールにならない場合があります。それを入手し、最良のツールを選択し、結果に苦しむ人はほとんどいません。
スティーブンエバーズ

1
@whatsisname bestは主観的であり、環境、予算、時間枠に依存します...-しかし、ホームプロジェクトの精神では、その問題を解決するために設計された技術を試す場合があります。たとえば、分散型のErlang、テキスト操作のPerl-その後、独自の判断を下すことができます。
スティーブンベイリー

私が確信していることの1つは、Javaはほとんどの場合、仕事に適したツールではないということです。優れた代替案がたくさんあります。誤解しないでください。それは'00に戻った素晴らしい言語であり、多くの人々がそれに慣れましたが、私にとっては、それは私の仕事にとってもう最高のツールではありません(しかし、私が使用する場合もあります。いじくり回すためではなく、ウェブのためではなくビッグデータのためでもありません。
dbow

9

親しみが十分な信用を与えられていないと思う 使い慣れているかどうかは、適切なツールの種類に大きく影響します。プロジェクトを完了するには、ツールを使用する必要があります。さらに、あなたが楽しむものを使用することは、間違いなくフィットネスの欠点を超えることができます。仕事を成し遂げることにより興奮し、より良い結果が得られるからです。

http://headrush.typepad.com/creating_passionate_users/2006/08/when_the_best_t.html


3

これは、ビジネス上の問題を除いて、実際には解決できません。ただし、多くのビジネス上の質問は短期の数字を見るだけであり、これはこのようなことの間違いです。

私の一般的なアプローチ:

  1. 小規模または短期的なものであれば、常に使い慣れたツールで記述してください。
  2. 長期にわたる大きなものなら、新しいツールを学ぶことの費用対効果のトレードオフを見てください。
  3. よくわからない場合は、長期的なものであるという証拠が得られるまで、短期的なものとして扱います。その後、再度決定を確認します。

コストとメリットについて考える際に留意すべき3つのこと:1つは、急いでいる人は未来を変える可能性があります。2つ目は、メンテナンスコストは、成功するシステムのコストの大部分を占めています。3つ目は、物事を学び、開発者を満足させることを好む開発者は、長期的な投資です。


1

いい質問です!whatsisnameが彼の答えで言ったように、「親しみは十分な信用を与えられていません。」異なるツール、異なるフレームワーク、異なる言語は、使用に慣れているものよりもはるかに優れている可能性がありますが、ロープを最初に学んだときにまだ生産性がはるかに低くなります。

私は数年前からデジタルエージェンシーのASP.NET開発者として働いており、大きなプロジェクト、小さなプロジェクト、タイトなプロジェクト、よくできたプロジェクトなどが混在しています。 「ソフトターゲット」、苦痛に満ちた厳しい、厳しい締め切りがない小さなプロジェクトを探し、それらを優れた新しい技術を使用する機会として使用します。.NET 2.0、3.5、4.0、ASP.NET MVC、Linq to SQL、Entity Framework-これらすべて、私はそのようなプロジェクトで初めて使用しました。

そのような機会をとることができれば、うまくいけば、慣れ親しみに苦しむことなく、適切なツールを選択するためのより大きなオプションのセットが用意できます。Julioの例のように、彼らはRubyをレパートリーに追加できるターゲットを見つけ、今後はJavaとRubyのどちらかを選択できるようになりました。

ただし、期限が短くてしっかりしていて、プロジェクトが重要な場合は、使い慣れたツールを使用することをお勧めします。異なるものがより適しているかもしれませんが、そのようなプロジェクトでは、それはすべてリスクに関するものです。


1

これはいくつかのことに依存します:

1.新しい言語やツールを習得する能力。

簡単な学習であれば、新しい言語やツールを学習する際の障壁は低くなります。これにより、ツールボックスに別のツールを追加できます。

2.作業環境を言語/ツールに依存しない方法。

ワークフローがツールに大きく依存している場合、異なる言語を学習する際の障壁は高くなります。特定のIDEに夢中になっている場合、言語の切り替えには、単に言語を学習するだけでなく、テキストの編集がきっとあなたをイライラさせるため、かなり多くのことが必要になります。

vimまたはemacsを使用している人にはこの問題はありません。彼らがしなければならないのは、新しい言語を学ぶことだけです。

3.ビジネスの現実

新しいツール/言語の学習には時間がかかります。その時間には費用がかかります。しかし、そのコストは、初期費用よりも多くを返済する投資になる可能性があります。また、不格好なソリューションは、通常、実装に時間がかかり、保守が難しくなります。それが小さなプロジェクトよりも大きく、既存のツールボックスのツールが問題に合わない場合は、どのツールが問題に合っているかを調査します。また、ジェネラリストのアプローチに適した環境に投資し、vimを選択したエディターとして使用することを学びました。

別のこと-2点間の最短距離は何ですか?他の誰かが私がやりたいことをほぼやることを書いている場合、通常はそれを自分のニーズに合わせて修正するのが最も迅速です。


0

興味のある新しい言語があり、あなた(そしてビジネス)がそれを買う余裕があるなら、それを探求するのに数週間から1ヶ月を費やしてみませんか?

これが私がルビーを学んだ方法です。私のコーダーパートナーは、Javaで7年の経験があります。私は11年のJavaの経験がありました。私たちのどちらもルビーについては何も知りませんでした。

私は彼と会社の他のメンバーに1か月ルビーを試すよう説得しました(これは6-8か月のプロジェクトになります)。最悪の場合、今回はJavaを使用してやり直します。

幸運にも一週間後に私たちは夢中になったので、大丈夫でした。おそらくあなたは同様のものを試すことができますか?他の言語で何かをゼロから構築できるかどうかを確認しますが、それを行う理由と、少なくとも同じくらい重要なこととして、実験が失敗した場合の計画Bを明確にします。


0

すべての状況に当てはまるこの質問に対する単一の答えは明らかにありません。しかし、ここにはまだ言及されていないと思う側面があります。開発者の場合は、独自の市場性も考慮する必要があります。プロジェクトに言語Xを選択した場合、履歴書はどのように表示されますか?慣れていない言語を選択して、学習する理由があり、知的視野を広げ、将来の雇用主にとってスキルセットをより魅力的にすることをお勧めします。


0

言語に精通していることは、「仕事に適したツールであること」の側面でもあると思います。つまり、Prologが言語に対する私の完全な無知を考えると、私にとって仕事にふさわしいツールになる状況を想像することはできません。


0

私自身のバージョンは、仕事に「利用可能な適切なツールを使用する」ことです。「使用可能」とは、コンパイラーやランタイムを購入/取得できるということだけでなく、使用できることを意味します。

ほとんどすべての実際のシナリオでは、問題を考えると、それを解決する時間は非常に限られています。非常に短い時間で新しい言語を本当に学ぶことができるとは思いません。言語を学ぶということは、実際に本を読んだり、他の人のコードを読んだり、その仕組みとその背後にある哲学を理解することを意味します。Webからチュートリアルを読むだけで(これは出発点として完全に適切です)、ハッキングすることができます。しかし、それはひどいコードにつながり、おそらくもっと短い時間であなたが知っている言語でより良いコードを書く方が良いでしょう。

「仕事に最適なツール」ということわざのメリットにもかかわらず、ほとんどの一般的な言語は実際には汎用です。彼らは特定の分野で強みを持ち、他の分野の他の分野ほど優れていないかもしれませんが、ほとんどの仕事を成し遂げることができます。言語を実際に知らないということは、ツールが利用できないことを意味します。

1つ(または2つまたは3つ)の言語を学習してすべてのプロジェクトで使用し、他のことは何も学習しないと言っているわけではありません。ツールボックスに追加するツールをさらに取得するには、他の言語を学ぶことが重要です。しかし、問題に直面した場合、なじみのない技術を使用して心配に追加するよりも、あなたが知っているツールに固執する方が良いです。しかし、次回の選択がより簡単になるように、他の言語を学習し続けてください。

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