0

ワンライナー スクリプトのように単純な場合もあれば、パーサーとデバッガーを備えた完全なプログラミング言語のように複雑な場合もあります。

しかし、労力を節約するツールを作成することには、元のタスクよりも多くの労力を必要とする、よく知られている危険があります (いくつかのプロジェクトで償却できない場合を除きます)。

私は、この二次プロジェクトに夢中になり、それを完璧にしようとし、それを拡張することを心配しています... 一次プロジェクトが衰退している間 (例: Knuth は、TeX を作成するために「The Art of Computer Programming」を書くのに何年も費やしています)彼がそれをタイプセットするのを手伝ってください)。

ビルド ツール、テスト システム、バグ トラッカー、ソース管理などの標準的なサポート/開発ツールについては考えていませんが、開発者だけが使用する、独自の開発をサポートするために特定のプロジェクト用に作成するツール (つまり、プロジェクトの成果物ではありません)。

4

3 に答える 3

3

ツール作成の楽しさに夢中になるのはとても簡単です。私たちは、作成する必要があるツールを調べて、適切な時間をかけて使用できるオープンソースを探したり、自分の意志に屈したりして、それを管理しようとします。また、スプリントとスクラムを使用して、イテレーション ゼロ、演習としてこれを行います。ツールが複数のスプリント (2 週間) を要する場合、それは大きすぎます。

于 2009-03-18T10:50:25.570 に答える
1

質問ありがとう!返信が長くて遅くなりましたが、読む価値があることを願っています。

規約

私はこれらの一時的なツールを建設業界にたとえて「足場」と呼びます。製造業では、一般に「治具と固定具」と呼ばれます。よりアカデミックな名前を好む場合は、「ツールと生産技術」と呼びます。

"適切な方法

足場に投資するかどうかの決定は、(プロジェクト管理科学のように) 簡単な費用便益分析によって決定できるように思われるかもしれません: 開発コストを見積もり、予測された利益と比較し、足場の価値が大きいかどうか。コストよりも、それを構築することには良い点があります。

COST               BENEFIT
Spec         £500  Time saved over 2 years £3000
Development £2000  Savings on training      £600
Total:      £2500                          £3600

では、同様のツールがすでに市販されていても、必要な機能がまったく提供されず、同じレベルのメリットが得られない場合はどうでしょうか? 分析には、「購入 vs. 構築」という追加の側面があります (多くのコミュニティ ツールでは、無料なのはライセンス費用のみであり、他の多くの費用が依然として適用されることに注意してください。したがって、これらのツールは「購入」カテゴリで評価する必要があります)。

       COSTS              BENEFIT
BUILD  Spec         £500  Time saved over 2 years £3000
       Development £2000  Savings on training      £600
       Total:      £2500                          £3600

BUY    License      £500  Time saved over 2 years £1000
       Setting up   £500  Savings on training      £300
       Total:      £1000                          £1300

明らかに、既製のツールは安価に購入できます。ただし、投資収益率 (ROI) はわずか 30% ですが、DIY ソリューションの場合は 44% です。

現実には、実際のコストと利益を事前に特定して定量化することは難しいため、物事がそれほど単純であるとすれば. プロジェクトの成果物ではなく足場に取り組む開発者の機会費用をどのように定量化しますか? それとも、スキャフォールディングにプロダクションの知識が組み込まれているため、新しいスターターが手動のビルドまたはリリース プロセスの学習に時間を費やす必要がありません。それとも、上級開発者が 1 日のほとんどをタスクの完了に費やす代わりに、30 分以内に 1 ステップで任意のバージョンのソフトウェアを構築できることのメリットは?

さらに、予測された数値と実際の数値との間にはある程度の差異が生じることは避けられず、予想される差異 (「リスク」とも呼ばれます) が大きいほど、数値が実現することを信頼できなくなります。リスクは私たちの分析に 3 番目の次元を与え、費用と便益の一部が完全に偶発的であることを考えると、費用便益全体が本当に手に負えなくなり始めます。

実践的アプローチ

もっと簡単なアプローチがあると思います。足場を資本投資として扱い、今後数年間のコストと利益を定量化しようとする代わりに、当面の状況を評価し、より機敏なアプローチを取るようにしてください。

  • タスクを手動で行うよりも自動化する方がはるかに時間がかかりますか?

  • 足場がなくても、高度に専門的な才能や超人的な能力を必要とせずに、タスクを確実に完了することができますか?

  • そのコストは、近い将来に得られる利益を上回っていますか?

いずれかの答えが「いいえ」の場合は、足場に投資した方がよい場合です。

いくつかのメモ

さらにいくつかの注意事項があります。

  • 足場は非常に具体的で、一時的で、時には 1 回限りのものです。アプリケーションやコンポーネントにアプローチするのと同じ方法で開発にアプローチするという罠を避けてください。同じ機能をカバーするアプリケーションを作成するには、スキャフォールディング スクリプトの約 10 倍のリソースが必要になるのに対し、汎用コンポーネントを作成するには、アプリケーションの 10 倍の労力がかかることに注意してください。Benji Smith は、彼の独創的な発言「Why I Hate Frameworks」の中で、この要点を見事に説明しています。ツールは目的を達成するための手段として機能するはずですが、それ自体が目的ではありません。

  • 足場はアプリケーションから分離する必要があります。実際には成果物ではなく、ほとんどの場合、メンテナンスと構成を目的としたアプリケーションの一部を置き換えるべきではありません。

  • カスタム足場を持つことは、競争に対して真の利点をもたらします。

    • 開発をスピードアップします。

    • 重複作業を回避します。

    • 原則として供給不足で非常に高価な精度と魔法の超大国の必要性を減らします。

    • ヒューマンエラーを減らします。

    • 結果の一貫性を提供します。

    • (市販のツールとは対照的に) 必要な正確な方法で物事を行う能力を与えます。

    • チーム内の知識を維持するのに役立ちます (知識は決して終了せず、いつでもリバース エンジニアリングできます)。

    • 開発者は平凡なタスクに時間を費やす必要がないため、士気を高めます。

  • 粗雑で重要でないソリューションの足場であることにより、新しいツール、技術、技術、アイデアのテスト グラウンドとして機能し、後でキラー アプリの基盤となる可能性があります ( FogBugzは、最初に開発された社内ツールの好例です。ソフトウェアの問題を処理する正しい方法についての FogCreek の創設者の仮定をテストするため. COTS ツールでサポートされていない正確な方法で行う必要があると強く信じていた.スタンドアロンの主力製品)。足場を構築することで、知的財産を作成します。

  • テスト駆動開発(TDD) は、テスト用の足場を構築する注目すべき実用的な方法です。TDD は、他の特注ツールで拡張できる「十分な場合」に関するいくつかの優れたガイドラインを提供します。

于 2009-05-06T15:54:39.353 に答える