web-dev-qa-db-ja.com

大規模な組織のコードライブラリについて開発者に通知する方法を教えてください。

当社の製品には多くの場合同じ要件がありますが、ソリューションは常に新しく開発されます。異なる人々から、異なる良い結果と異なる品質で。特に私たちの製品のニーズのためのコードライブラリは良い考えのようです。

主な問題は、このライブラリを開発することではなく、すべてのプログラマにどのタスクについてすでに解決策があるかを伝えることだと思います。

私たちのような小さな会社ではこれは実現可能ですが、大企業ではどのように機能しますか?数百のメソッドを持つ大きなライブラリがある場合。

開発者は、すでに解決策があるため、問題の新しい解決策を開発する必要がないことをどのようにして見つけますか?

既存のソリューションが誤って新しく開発されるのをどのように防止しますか?

7
Holli

これを実現するには多くの方法がありますが、最も有用な方法の1つはコードレビューであり、あらゆる規模の組織で実行する価値のあるものです。コミットされたコードはすべて、少なくとも1人の他の開発者がレビューする必要があります。その後、元の作者にフィードバックを提供し、改善方法を提案します。これらの発言には以下が含まれます。

  • 考えられるプログラミングエラー
  • 意図が不明なコード
  • 関数/変数名の改善
  • 分解する必要がある長い関数/クラス、および
  • 既存のライブラリ機能を複製するコード
2
Pete

コードレビューと一般的にはtalkingが良いです。しかし、私は根本的な仮定に挑戦します。

コードを共有するにはnotを試してください。

本当に、あなただけのコードを書いてみませんか?.

あなたが共通のライブラリを持っている場合、可能性が高いのは、仕事をよりよくし、多くの人々によって維持されているサードパーティのライブラリがすでにあることです。 A.あなたが支払った賃貸料。とB.は、この1つの問題に専念し、それに対する再利用可能なソリューションを作成しています。

共通ライブラリが一般的でなくなったポイントまでトリミングします。

「大規模なライブラリがあり、数百のメソッドがある場合。」

これらを持っていない。 1つの作業を行う小さなライブラリを用意します。

「既存のソリューションが誤って新しく開発されるのをどのように防ぐのですか」

ソフトウェアの分割は、問題の分割と同じにしてください。つまり、ドメイン駆動設計またはマイクロサービス。問題に取り組んでいる場合は、その問題に固有のコードに取り組んでいます。他のコードについて心配する必要はありません。

2
Ewan

同様のソリューションの再開発がgoodである理由は数多くあります。

  1. 開発者は、以前の実装からnotが何をすべきかを学んだでしょう。同じ間違いを繰り返すと、開発プロセスが遅くなり、痛みを伴い、費用がかかります。逆に、間違いから学ぶと、次の反復betterが前の反復よりも多くなります。
  2. ライブラリを再利用する場合、開発者はcode、を再利用しますが、再利用するwantexperience。です。経験と同じくらい再利用可能です。
  3. グリーンフィールドプロジェクトの技術的負債は0から始まります。共通ライブラリは、技術的負債がそれよりはるかに上に始まることを保証します。
  4. プロジェクト内の相互依存性は、重要なプロジェクトで管理するには十分に困難です。相互依存関係プロジェクトは非常に迅速に苦痛になります。基本的に、プロジェクト間で調整を行い、一般的なソリューションにパッチを適用し、組織全体の重大な変更による不可避の影響に対処するだけで、いくつかのFTEをすぐに使い果たしてしまいます。
  5. プロジェクトに共通の機能は、世界中の開発者に共通である可能性が非常に高いです。そのため、開発に時間を費やすのではなく、そのままパッケージ化して使用できるように、誰かがすでにパッケージ化している可能性が高くなります。
0
l0b0

コードを再利用するための探求は、創設以来 聖杯OOプログラミング です。

しかし、現在でも、同じ機能を何度も何度も書き換えています。

  • 私たちはそれがすでに存在していることに気づいていません、
  • 私たちは存在するものは私たちが必要とするものではないと考えています
  • 私たちはそれが存在することを知っていますが、私たちはより良いことができると説得されています
  • 時間がないので、独自のコードを書くことを好みます。

実際、問題は技術的なものではなく、文化的なものです。

  • これまで非常にうまく機能していたのは、パターンの再利用です。私たちはまだ自由に感じ、コードを作成しています。そして、パターンを再利用するのはクールです。誰もがそれについて話し、それはすべての高度なカリキュラムにあります。

  • うまく機能するもう1つのことは、標準ライブラリの場合の使用です。ここには、その使用を容易にする豊富なドキュメントがあります。これは語学研修に含まれているので、大きな認識があります。標準ライブラリはカスタムライブラリよりも信頼性が高いことはよく理解されています。次に、それを使用するための仲間の圧力があります。

カスタムの再利用可能なコードの問題は3つあります。

  1. 十分な認識がないかもしれません。見つけるための余分な労力;
  2. 再利用が適切に評価されていない
  3. 内部コードの信頼性は、その正当な価値では評価されない可能性があります。

最初の問題は、コードレビューやドキュメントを通じて簡単に対処できます。他の多くの回答がこの点に対処しています。

残念ながら、2番目と3番目は、人々の認識と会社の文化に関連しています。これらの問題を直接克服し、人々を奇跡的に新しい信念に変えるためにできることは何もありません。

したがって、値に取り組む必要があります。再利用は再開発よりも経営者によって評価されることを人々に明確にしてください。既存のものについて交換する機会を提供します。

現在、すべての状況に適用できるわけではありません。しかし、ライブラリを製品にすることよりも魅力的なことは何ですか?社内製品でも、オープンソース製品でも、実際の製品でもカタログに追加されますか?

  • ライブラリの知識、ドキュメントの入手可能性、およびプロモーションは、従業員に適切なメッセージを伝えます。

  • 製品としての可用性は、ライブラリコンポーネントを徹底的にテストするだけでなく、必要に応じて成功事例を伴う自社製品を促進することで、ライブラリコンポーネントを再利用する動機があることも明らかにします。

  • ライブラリを製品化すると、同僚はチュートリアルを行うことができますが、aleoは品質基準を上げることで、低品質のハードルを打破します。

0
Christophe

私が追加できる他の唯一のものは、基本的にオープンソースコミュニティinsideを再作成することです。タイトな小さなライブラリに焦点を当て、テックスタック(NuGet for .NET、Maven for Java、NPM for JavaScriptなど)のパッケージマネージャーを利用します。ただし、このコミュニティをサポートするインフラストラクチャが必要です。基本的には、GitHubやAzure DevOpsに似たものをいくつか挙げるとします。これにより、開発者の時間を節約するためだけにコストが増加するため、バランスを取る必要があります。追加コストを相殺するのに十分な開発時間を節約できますか?

あなたは本当にこのインフラストラクチャを維持するお金と時間に見合うだけの価値のある共有コードを大量に必要とします。この時点で、コードで再利用可能なサービスに分解するという、Ewanが彼の回答で言及している方法を使用する方がコスト効率が高くなります。

すべての「共有」コードは、ライブラリ関数の数が少なく、数が少ない可能性があります。コピーと貼り付けはほぼ簡単でコスト効率が高くなります。

0
Greg Burghardt